PCA 와 LDA 비교

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 아이리스 데이터셋에서 주요 차원 축소 알고리즘인 주성분 분석 (PCA) 과 선형 판별 분석 (LDA) 의 성능을 비교합니다. 아이리스 데이터셋은 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비의 4 가지 속성을 가진 3 가지 종류의 아이리스 꽃을 포함합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터셋 로드

먼저, scikit-learn 의 내장 함수 load_iris()를 사용하여 아이리스 데이터셋을 로드해야 합니다.

import matplotlib.pyplot as plt
from sklearn import datasets

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names

PCA 수행

다음으로, 데이터에서 가장 큰 분산을 차지하는 속성 조합을 식별하기 위해 주성분 분석 (PCA) 을 데이터셋에 적용합니다. 첫 번째와 두 번째 주성분에 대한 서로 다른 샘플을 플롯합니다.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)

## 각 구성요소에 대한 설명된 분산의 백분율
print("설명된 분산 비율 (첫 두 구성요소): %s" % str(pca.explained_variance_ratio_))

plt.figure()
colors = ["navy", "turquoise", "darkorange"]
lw = 2

for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=0.8, lw=lw, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("아이리스 데이터셋의 PCA")
plt.show()

LDA 수행

이제, 클래스 간의 가장 큰 분산을 설명하는 속성을 식별하기 위해 선형 판별 분석 (LDA) 을 데이터셋에 적용합니다. PCA 와 달리 LDA 는 알려진 클래스 레이블을 사용하는 지도 학습 방법입니다.

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], alpha=0.8, color=color, label=target_name)

plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("아이리스 데이터셋의 LDA")
plt.show()

결과 비교

마지막으로, PCA 와 LDA 의 결과를 비교합니다. 아이리스 데이터셋에서 세 개의 클래스를 분리하는 데 있어 LDA 가 PCA 보다 더 나은 성능을 보여줍니다.

요약

이 실험에서 scikit-learn 을 사용하여 아이리스 데이터셋에 주성분 분석 (PCA) 과 선형 판별 분석 (LDA) 을 수행하는 방법을 배웠습니다. 또한, 이 두 차원 축소 알고리즘의 성능을 비교한 결과, LDA 가 데이터셋의 서로 다른 클래스를 분리하는 데 PCA 보다 더 나은 성능을 보이는 것을 확인했습니다.