판별 분석 분류기 설명

Intermediate

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

소개

선형 판별 분석 (LDA) 과 2 차 판별 분석 (QDA) 은 머신 러닝에서 사용되는 두 가지 고전적인 분류기입니다. LDA 는 선형 결정 경계를 사용하는 반면, QDA 는 2 차 결정 경계를 사용합니다. 이러한 분류기는 닫힌 형태의 해를 가지고 실제로 잘 작동하며, 조정할 하이퍼파라미터가 없다는 점에서 인기가 많습니다.

이 실습에서는 파이썬의 인기 머신 러닝 라이브러리인 scikit-learn 을 사용하여 LDA 와 QDA 를 수행하는 방법을 살펴볼 것입니다.

가상 머신 팁

가상 머신 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 Jupyter Notebook을 연습에 사용할 수 있습니다.

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

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

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 81%입니다.학습자들로부터 95%의 긍정적인 리뷰율을 받았습니다.

필요한 라이브러리 가져오기

먼저, 데이터 시각화에 사용될 scikit-learn (sklearn) 과 matplotlib 를 포함한 필요한 라이브러리를 가져와야 합니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis

합성 데이터 생성

다음으로, LDA 와 QDA 의 차이를 보여주기 위해 합성 데이터를 생성합니다. scikit-learn 의 make_classification 함수를 사용하여 서로 다른 패턴을 가진 두 개의 클래스를 생성합니다.

from sklearn.datasets import make_classification

## 합성 데이터 생성
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_classes=2, random_state=1)

분류기를 학습하고 시각화하기

이제 합성 데이터에 LDA 와 QDA 분류기를 학습하고 결정 경계를 시각화합니다.

## LDA 분류기를 학습합니다.
lda = LinearDiscriminantAnalysis()
lda.fit(X, y)

## QDA 분류기를 학습합니다.
qda = QuadraticDiscriminantAnalysis()
qda.fit(X, y)

## 결정 경계를 그립니다.
def plot_decision_boundary(classifier, title):
    h = 0.02  ## 메쉬의 간격
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
    plt.xlabel('특징 1')
    plt.ylabel('특징 2')
    plt.title(title)

plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plot_decision_boundary(lda, '선형 판별 분석')

plt.subplot(1, 2, 2)
plot_decision_boundary(qda, '2 차 판별 분석')

plt.tight_layout()
plt.show()

LDA 를 이용한 차원 축소 수행

LDA 는 지도 학습 차원 축소에도 사용될 수 있습니다. 이를 보여주기 위해 아이리스 데이터셋의 차원을 축소해 보겠습니다.

from sklearn.datasets import load_iris

## 아이리스 데이터셋 로드
iris = load_iris()
X, y = iris.data, iris.target

## LDA 를 이용하여 차원 축소 수행
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)

요약

선형 판별 분석 (LDA) 과 2 차 판별 분석 (QDA) 은 기계 학습에서 사용되는 두 가지 고전적인 분류기입니다. LDA 는 선형 결정 경계를 사용하는 반면, QDA 는 2 차 결정 경계를 사용합니다. 이러한 분류기는 닫힌 형태의 해를 가지며 실제로 좋은 성능을 보입니다. LDA 는 지도 학습 차원 축소에도 사용될 수 있습니다.