【기계 학습】LDA를 공부해 본다

LDA란?



LDA (Linear Discriminant Analysis)는 기계 학습에서 변수의 차원을 줄이는 데 사용되는 기술입니다. 차원 삭제의 대표적인 기법에 PCA도 있지만, PCA와의 큰 차이는, PCA는 교사 없는 학습인 것에 비해, LDA 교사 있어의 식별 모델입니다.

LDA의 메커니즘



LDA의 목적은 클래스 간 분산을 최대화하면서 클래스 내 분산을 최소화하는 경계를 그리는 것입니다.
1) 클래스 간 분산
S_b = \sum^g_{i=1} N_i(\overline{x}_i - \overline{x})(\overline{x}_i - \overline{x})^T

2) 클래스 내 분산
S_w = \sum^g_{i=1} (N_i-1)S_i = \sum^g_{i=1} \sum^{N_i}_{i=1}(\overline{x}_{i,j} - \overline{x}_i)(x_{i,j} - \overline{x}_i)^T

3) 저차원 공간에 매핑
P_{lda} = arg max \dfrac {\left| P^TS_bP\right| }{\left| P^TS_wP\right|}


4) 판별식
LDA의 판별식은 아래와 같이 각 클래스에 대한 가우스 분포가 됩니다.

P(X|y = k) = \dfrac {1}{(2\pi)^{1/2}|\Sigma_k|^{1/2} exp(-\dfrac{1}{2}(X-\mu_k)^t \sum^{-1}_{k}(X-\mu_k))}

scikit learn 에 LDA



LDA 매개변수




매개변수
개요

기본


솔버
학습 최적화 계산 유형
"svd", "lsqr", "eigen"
"svd"(큰 데이터 세트에 적합)

shrinkage
"lsqr", "eigen"에서 사용되는 학습 데이터의 부족 보정
None, "auto", floa(0~1)
None

n_components
줄이는 차원 수
int
-

store_covariance
공분산 행렬을 계산할지 여부
bool
-

tol
SDV 임계값
float
-

from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from matplotlib import pyplot as plt

iris = datasets.load_iris()
X = iris.data
y = iris.target

target_names = iris.target_names
lda = LinearDiscriminantAnalysis(n_components=2)
X_r = lda.fit(X, y).transform(X) 

시각화

colors = ['blue', 'red', 'green']

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], alpha=.8,
                label=target_name)
plt.xlabel('LDA1')
plt.ylabel('LDA2')
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('LDA of IRIS dataset')

plt.show()



LDA의 장점과 단점



장점


  • 다중 클래스 분류 문제는 PCA보다 성능이 좋습니다.

  • 단점


  • 작은 샘플 크기에 적합하지 않습니다.
  • 클래스 사후 확률은 정규 분포를 따라야 한다.
  • 모든 데이터에 대해 분산 공분산 행렬은 동일해야 한다. (→ QDA)

  • LDA의 응용



  • QDA(Quadratic Discriminant Analysis):
    클래스별 분산 공분산 계산.

  • FDA(Flexible Discriminant Analysis): 입력 데이터를 선형 분리할 수 없는 경우.

  • RDA(Regularised Discriminant Analysis): 정규화하여 분산 공분산을 계산함으로써 다변수의 영향을 억제한다.

  • 참조



    Priyankur Sarkar, "hat is LDA: Linear Discriminant Analysis for Machine Learning", 2019
    htps //w w. k의 w㎇d 게후 t. 코 m / b ぉ g / data-s shiense / ぃ 네아 r ぢ sc 리미 난 t 아나 ly shi s ぉ r 마치 네 - r r g

    좋은 웹페이지 즐겨찾기