반응형
LDA는 선형 판별 분석법으로 불리며, PCA와 매우 유사합니다. 특징은 LDA는 지도학습의 분류(Classification)에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원을 축소합니다. PCA는 입력 데이터의 변동성의 가장 큰 축을 찾았지만, LDA는 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾습니다.
LDA는 특정 공간상에서 클래스 분리를 최대화하는 축을 찾기 위해 클래스 간 분산과 클래스 내부 분산의 비율을 최대화하는 방식으로 차원을 축소합니다. 즉, 클래스 간 분산은 최대한 크게 가져가고, 클래스 내부의 분산을 최대한 작게 가져가는 방식입니다.
IRIS 데이터를 이용하여 LDA를 수행해보겠습니다.
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()
iris_scaled = StandardScaler().fit_transform(iris.data)
2개의 컴포넌트로 붓꽃 데이터를 LDA변환하겠습니다. PCA와 다르게 LDA에서 한 가지 유의해야 할점은 LDA는 실제로는 PCA와 다르게 비지도학습이 아닌 지도학습이라는 것입니다. 즉, 클래스의 결정값이 변환 시에 필요합니다.
lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(iris_scaled, iris.target)
iris_lda = lda.transform(iris_scaled)
print(iris_lda.shape)
이제 LDA변환된 입력 데이터 값을 2차원 평면에 품종별로 표현해 보겠습니다. 소스 코드는 앞의 PCA예제와 큰 차이가 없습니다.
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
lda_columns=['lda_component_1','lda_component_2']
irisDF_lda = pd.DataFrame(iris_lda,columns=lda_columns)
irisDF_lda['target']=iris.target
#setosa는 세모, versicolor는 네모, virginica는 동그라미로 표현
markers=['^', 's', 'o']
#setosa의 target 값은 0, versicolor는 1, virginica는 2. 각 target 별로 다른 shape으로 scatter plot
for i, marker in enumerate(markers):
x_axis_data = irisDF_lda[irisDF_lda['target']==i]['lda_component_1']
y_axis_data = irisDF_lda[irisDF_lda['target']==i]['lda_component_2']
plt.scatter(x_axis_data, y_axis_data, marker=marker,label=iris.target_names[i])
plt.legend(loc='upper right')
plt.xlabel('lda_component_1')
plt.ylabel('lda_component_2')
plt.show()
반응형
'Lecture ML' 카테고리의 다른 글
머신러닝 강좌 #36] 군집화 - GMM(Gaussian Mixture Model) 소개 (0) | 2021.08.21 |
---|---|
머신러닝 강좌 #35] 군집화 - K평균 알고리즘과 실루엣 분석 (0) | 2021.08.21 |
머신러닝 강좌 #34] 차원 축소 : SVD(Singular Value Decomposition), NMF(Non-Negative Matrix Factorization) (0) | 2021.08.17 |
머신러닝 강좌 #32] 차원 축소 : PCA(Principal Component Analysis) (0) | 2021.08.16 |
머신러닝 강좌 #31] 차원 축소 / Dimension Reduction (0) | 2021.08.16 |
머신러닝 강좌 #30] 회귀실습 - 캐글 주택 가격: 고급 회귀 기법 (1) | 2021.08.16 |
머신러닝 강좌 #29] 회귀실습 - 자전거 대여 수요 예측 (0) | 2021.08.16 |
머신러닝 강좌 #28] 로지스틱 회귀에 대해 (0) | 2021.07.09 |