ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LDA(Linear Discriminant Analysis)
    Python Machine Learning/차원축소 2020. 10. 6. 21:34

    - 선형 판별 분석법으로 불리며 PCA와 매우 유사

     

    즉 LDA는 클래스 간 분산은 최대한 크게 가져가고, 클래스 내부의 분산은 최대한 작게 가져가는 방식

     

    - PCA와의 차이점은 공분산 행렬이 아니라 클래스 간 분산과 클래스 내부 분산 행렬을 생성한 뒤, 이 행렬에 기반해

      고유벡터를 구하고 입력 데이터를 투영한다는점

     

    [ LDA step ]

    1. 클래스 내부와 클래스 간 분산 행렬을 구한다. 이 두 개의 행렬은 입력 데이터의 결정 값 클래스별로 개별 피처의

    평균 벡터를 기반을 구한다.

    2. 클래스 내부 분산 행렬을 Sw, 클래스 간 분산 행렬을 Sb라고 하면 다음 식으로 두 행렬을 고유벡터로 분해할 수 있다

    3. 고유값이 가장 큰 순으로 K개( LDA변환 차수만큼 ) 추출한다.

    4. 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 반환한다.

     

     

    예제

    붓꽃 데이터세트를 사이킷런의 LDA를 이용해 변환하고, 품종별로 시각화 해보겠습니다.

    LDA 적용

    ->사이킷런은 LDA를 LinearDiscriminantAnalysis클래스로 제공하며 PCA처럼 붗꽃 데이터 세트를 로드하고 표준 정규 분포로 스케일링.

    -> PCA와 다르게 LDA에서 한 가지 유의해야 할점은 LDA는 실제로는 PCA와 다르게 비지도학습이 아닌 지도학습이며,

     즉, 클래스의 결정값이 변환 시에 필요

     

    LDA 변환된 입력 데이터 값 표현

Designed by Tistory.