Linear Classification
이번 포스트부터는 선형 방법으로 분류 문제를 해결하는 방법들에 대해 살펴보고자 한다. 여기서 분류classification 문제란, 종속 변수와 예측값 G(x) 가 이산집합 G의 원소를 갖는 문제를 의미한다. 분류 문제의 핵심은 결정경계decision boundary를 찾는 것인데, 결정경계가 선형인 것들만 우선 다루어보도록 하자.
Indicator Matrix를 이용한 선형회귀
종속변수 y가 k개의 값을 가질 수 있다고 하자. 즉, N(G)=k 이다. 이때 단일변수 y를 Y=(Y1,…,Yk) 로 변환시키는데, 각 Yj는 G=j이면 1이고 아닌 경우 0인 값을 취한다. 이런 방식으로 n개의 데이터에 대해 종속변수를 재설정하면 행렬 Y 를 얻을 수 있고, 행렬의 각 원소는 0 또는 1의 값만을 취한다.
이를 이용해 최소제곱법을 계산하면
Y^=X(X⊤X)−1X⊤Y
와 같은 형태를 생각할 수 있다. 여기서 선형회귀와의 차이점은, 회귀계수가 벡터가 아닌 행렬
B^=(X⊤X)−1X⊤Y
로 주어진다는 것이다. 이를 바탕으로, 새로운 input vector x가 주어질 떄 이에 대한 예측값은
f^(x)⊤=(1,x⊤)B^∈Rk
로 계산할 수 있다. 또한, 우리는 분류를 해야할 목적을 가지고 있으므로 각 데이터에 대해 부여할 클래스는 예측값이 가장 높은 클래스를 부여해야 할 것이다. 따라서 예측 클래스 G^(x) 는
G^(x)=k∈Gargmaxfk^(x)
로 나타낼 수 있다.
선형회귀를 이용한 분류의 타당성
앞서 살펴본 회귀를 이용한 분류가 타당한지 의문이 생길 수 있다. 왜냐하면, 회귀는 설명력을 높이는 모형을 생성하는데 목적이 있지만, 분류는 클래스를 더 정확히 예측하는데 중점을 두기 때문이다. 분류에서 중요한 것은 사후확률Posterior Probability P(G=k∣X=x) 을 추정하는 것이고, 이를 바탕으로 클래스 예측자를 만들어야 한다. 그렇다면 이는 앞서 계산한 예측자 f^(x) 가 사후확률에 대해 좋은 추정치가 될 수 있는가의 문제로 이어진다.
∑k∈Gf^k(x)=1 인 사실은 쉽게 확인핧 수 있으나, 문제는 어떤 예측자 f^는 음수의 값을 취하고 1보다 큰 상황 역시 발생가능하다는 것이다. 단순히 생각하면 이는 확률을 추정하는데 걸림돌로 작용할 것으로 보인다. 하지만 이는 큰 문제가 되지 않는데, 기저 확장basis expansion을 통해 일관된 추정이 가능하게끔 할 수 있다. 기저확장에 대해서는 추후에 다른 포스트에서 다루도록 할 것이다.
LDALinear Discriminant Analysis
LDA를 살펴보기 이전에 먼저 베이즈 정리를 바탕으로 사후확률 P(G∣X) 의 추정 과정에 대해 살펴보자.
클래스가 G=k(k=1,…,K)인 확률변수 X의 조건부 확률밀도함수가 fk(x)로 주어지고, 클래스 k에 대한 사전확률prior probability이 πk 로 주어진다고 하자. 이때 ∑k=1Kπk=1 을 만족한다. 베이즈 정리로부터 조건부확률은
P(G=k∣X=x)=∑l=1Kfl(x)πlfk(x)πk
로 주어진다. 여기서 주목해야 할 것은 만약 우리가 확률밀도함수 fk 들에 대한 정보가 있다면 해당 조건부확률의 값을 도출해낼 수 있다는 것이다. 이때 확률밀도함수를 어떤 분포로 가정하느냐에 따라 다양한 방법이 있고, 첫번째로 살펴볼 LDA는 가우시안 분포, 즉 정규분포를 이용한다.
LDA 가정
LDA는 앞서 언급한대로 조건부 확률밀도함수가 정규분포를 따르는데, 이때 클래스들의 공분산행렬이 모두 동일할 때를 가정한다. 즉,
Σk=Σ∀k
이고 클래스별 조건부 확률밀도함수는
fk(x)=(2π)p/2∣Σ∣1/21exp{−21(x−μk)⊤Σ−1(x−μk)}(*)
으로 주어진다(변수가 p개로 주어진다고 가정하자).
이러한 가정 하에서, 두 클래스 G=k,G=l 의 결정경계decision boundary를 찾는 상황을 생각해보자. 결정경계는 두 조건부확률 P(G=k∣X=x),P(G=l∣X=x) 이 동일한 지점을 찾는 것이므로 로그오즈비(log-odds)가 0이되는 식을 찾으면 된다. 즉,
logP(G=l∣X=x)P(G=k∣X=x)=logfl(x)fk(x)+logπlπk=logπlπk−21(μk+μl)⊤Σ−1(μk−μl)+x⊤Σ−1(μk−μl)=0(1)
마지막 등식을 살펴보면 이는 x에 대해 선형인 방정식이므로, 선형결정경계라고 할 수 있다. 즉, p차원 공간에서 이 결정경계는 초평면Hyperplane의 형태로 나타나며, 이 초평면은 예측 클래스들을 분류하는 기준이 된다.
Linar Discriminant function
앞서 구한 선형결정경계 식 (1)에서 클래스 G=k에 대해서만 다음과 같이
δk(x)=x⊤Σ−1μk−21μk⊤Σ−1μk+logπk
정의한 x에 대한 함수를 linear discriminant function이라고 한다. 이때 G(x)=argmaxkδk(x) 로 두면 이는 클래스 예측 기준과 동일한 것을 확인할 수 있다.
문제는, 실제 LDA를 활용해야 하는 상황은 표본(sample)을 기반으로 하기 때문에 우리는 모수 πk,μk,Σ 대신 이에 대한 추정치를 사용해야 한다. 따라서 사전확률 πk는 상대도수 π^k=Nk/N, 평균벡터 μk 대신 표본평균 μ^k=∑gi=kxi/Ni, 공분산행렬 Σ 대신 표본분산 Σ^=∑k=1K∑gi=k(xi−μ^k)(xi−μ^k)⊤/(N−K) 을 사용한다.
Quadratic discriminant analysis
만일 식 (*)에서 클래스들의 공분산행렬이 동일하다는 가정이 없다고 하자. 그러면 discriminant function을 구하는 과정에서 항의 소거가 발생하지 않고, 따라서
δk(x)=−21log∣Σk∣−21(x−μk)⊤Σk−1(x−μk)+logπk(2)
위와 같은 형태로 discriminant function이 구해지는데, 이를 quadratic discriminant function 이라고 하며, 이를 이용한 분석을 QDA라고 정의한다. Quadratic인 이유는 식(2)의 우변의 두번째 항이 x에 대해 이차항이기 때문이며 이를 바탕으로 얻어지는 결정경계 역시 quadratic이다.
QDA는 LDA와 비슷하게 작용하는데, 가장 큰 차이점이 있다면 실제 사용하는 과정에서 공분산행렬의 추정치를 각 클래스별로 사용해야 한다는 것이다.
LDA와 QDA는 고전적이고, 현대 머신러닝 기법들에 비해 단순하다고 생각될 수 있다. 그러나 정규분포를 가정하여 단순한(1차 혹은 2차의) 결정경계를 추정하는 방식은 상당히 안정적이고, 이는 편향-분산 tradeoff 관계에서 낮은 분산을 얻어낼 수 있다.
LDA의 계산
LDA와 QDA의 결정경계를 계산하는 과정은, 앞서 언급한 표본공분산행렬 Σ(LDA) 또는 Σk(QDA) 를 대각화하여 간단히 만들 수 있다. QDA 상황에서 고유값분해로부터 표본공분산행렬이
Σ^k=UkDkUk⊤
로 분해된다고 하자. 이때 Uk 는 p×p 정규직교행렬(orthonormal)이고, Dk 는 고유값들을 대각성분(dkl)으로 하는 대각행렬이다. 이를 이용하면. discriminant function δk(x) 를 계산할 때
(x−μ^k)⊤Σ^k−1(x−μ^k)=[U+k⊤(x−μ^k)]⊤Dk−1[Uk⊤(x−μ^+k)]
log∣Σ^k∣=l∑logdkl
임을 이용할 수 있다. 이때 아래 식은 '행렬식 = 대각원소의 곱'으로부터 얻어진다.
Reference
- Elements of Statistical Learning