-
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 변환된 입력 데이터 값 표현 'Python Machine Learning > 차원축소' 카테고리의 다른 글
NMF( Non-Negative Matrix Factorization ) (0) 2020.10.07 PCA(principal component analysis) (0) 2020.10.06 차원축소(Dimension Reduction) 개요 (0) 2020.10.06