4 분 소요

기계학습과 회귀분석이 진짜 이번 학기의 양대 산맥인 듯 하다. 그중에서도 기계학습이 제일 빡센 듯. 무슨 브레이크가 고장난 기관차처럼 교수님이 페이지당 1분도 할애하지 않으신다. 근데 수식으로 도배되어있는 pdf 파일.. 이게 무슨 일이야..

가우시안 분포(Gaussian Distribution)

저번에 다룬 NBC(나이브 베이즈 분류)의 한계점 중 두번째는 이산적인 값만 다룰 수 있다는 것이었다. 그렇다면 연속적인 값에 대해서는 어떻게 분류할 수 있을까? 우리는 그 해결책을 찾기위해 흔히 정규분포로 알려진 가우시안 분포(Gaussian Distribution)를 들고 오겠다.

\[P(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}\text{exp}(-\frac{1}{2}\frac{(x-\mu)^2}{\sigma^2})\equiv N(x;\mu,\sigma^2)\]

평균이 mu, 분산이 시그마 제곱인 정규분포이다. 확률변수 X에서 평균 mu를 빼고 표준편차 sigma로 나누면 표준정규분포(Unit normal distribution)가 된다. 이제 가우시안 분포를 통해 기존의 이산적인 값들을 연속적인 값으로 변환하여 UVN(단일변수 정규 분포)를 통한 분류를 해보자.

UVN: 가우시안 분포를 따를 때

4장의 MLE 내용을 그대로 가져간다. 다만 log likelihood의 식이 가우시안 분포를 활용하여 바뀌었음을 확인하자. 평균 mu과 분산 simga squared로 각각 편미분하면 결과는

\[\mu=\frac{\sum_tx^t}{N}\] \[\sigma^2=\frac{\sum_t(x^t-\mu)^2}{N}=\frac{\sum_t(x^t)^2}{N}-\mu^2\]

평균과 분산의 정의(편차 제곱의 평균; 제곱의 평균 빼기 평균의 제곱)에 정확히 들어맞는 결과이다. 다시봐도 신기하다. 다만 통계학에서 unbiased(불편)이려면 자유도를 고려하여 분모가 N-1이 되어야하지만, 수천 만개의 input이 들어가면 큰 차이는 없다고. 자세한 건 다음주에 다룰 듯

UVN: 지도학습의 경우

이 역시 4장의 지도학습 내용에서 식만 바뀐 것이다. 진짜 다 모르겠고, 심지어 이건 중간과정도 적어놓지 않으셨다. 나는 진짜 모르겠다. P(c_k)(=해당 클래스로 분류될 확률)은 저번과 같고, 평균과 분산을 구하는 수식이 추가되었다. 결과만 보자.

\[P(c_k)=\frac{\sum_tr_K^t}{N}\] \[\mu_{k,i}=\frac{\sum_tr_k^tx_i^t}{\sum_tr_k^t}\] \[\sigma_{k,i}^2=\frac{\sum_tr_k^t(x_i^t-\mu_{k,i})^2}{\sum_tr_k^t}=\frac{\sum_tr_k^t(x_i^t)^2}{\sum_tr_k^t}-\mu_{k,i}^2\]

평균의 식은 ‘K 클래스에 속한 개수’ 분에 ‘그 K 클래스에 속한 i번째 차원의 원소의 합’을 계산한 것이고, 분산은 직전의 가우시안 분포와 맥락이 같다. 또한 계산 횟수(iteration을 줄이는) 면에서 두 번째 분산 계산 식이 유리하다.

예제를 보면 위의 (더러운) 식이 깔끔하게 적용되는 것을 볼 수 있다.

UVN: continuous한 값 예측 예제

남녀의 키와 몸무게를 나타낸 확률 표에서 165cm에 55kg의 사람을 UVN(단일변수 나이브 베이즈 분류)로 분류해보자.

베이즈 정리를 적용 후, 키와 몸무게가 ‘조건부 독립(conditionally independent)’이라고 가정하는 귀납 편향을 사용하자. 그렇다면 가우시안 분포를 통해 continuous하게 해석이 가능하다. 하지만 이 해석은 너무나도 계산량이 많다. 더 간단하게 딱! 판별하는 방법은 없을까?

가우시안 분포에서의 결정 경계

결정 경계(decision boundary)를 찾아서 딱 필요한 기준점을 세워보자. 앞선 예제와 같이 이진 분류(binary classification)인 경우를 살펴보자. 사잇값들은 정규분포를 따를 것이라는 귀납 편향이 앞선 예제와 같이 똑같이 적용된다.

결론부터 쉽게 말하자면 이진분류에서 결정경계는 이차방정식의 해와 같이 2개가 나온다. 18페이지를 보면 c1과 c2를 나누는 결정 경계가 딱 2개 존재함을 확인할 수 있다. 이때 음의 무한대로 가면 분산이 더 큰 c2로 분류된다는 점을 잘 기억해두자.

만약 두 priors P(c1)=P(c2)라면 보다 더 깔끔한 식으로 결정경계 2개를 확인할 수 있다.

이번엔 두 분산이 같다면 이차항이 소거되며 결정 경계가 하나만이 남음을 볼 수 있다. 이때 누군가의 prior가 압도적으로 크든 말든 무조건 결정 경계는 하나만 나온다(계수가 크든 작든 이차항이 없으므로)

이제 앞선 두 상황을 합친, 두 priors와 두 분산이 각각 같은 상황을 가정해보면 결정경계는 \(\frac{\mu_1+\mu_2}{2}\)로 정해진다. 당연한 것이다. 두 평균의 정확히 중간에 결정 경계가 딱 하나 발생한다. 이렇게 NBC의 두 번째 한계였던 ‘이산값 밖에 처리하지 못한다’는 한계를 가우시안 분포를 도입해 해결해보았다!

공분산 행렬(Covariance Matrix)

큰일났다. 일변수를 다룬지 얼마됐다고 벌써 다변수로 범위가 확장되었다. 이놈의 수업은 대체 학부생을 위한 수업이 맞단 말인가. 자 이제부터 선형대수 폭탄이다. 미치겠다 이 놈의 수업

공분산(Covariance)

이전에 6장에서 평균과 분산에 대해 공부할 때 잠시 나왔는데(깃헙에 포스팅하지 않은 내용) 공분산(Covariance)이란 두 변수의 곱의 평균에서 각각의 평균의 곱을 뺀 것이다. notation은

\[\mathbb{CV}[X,Y]=\sigma_{XY}=\mathbb{E}[XY]-\mu_X\mu_Y\]

말로 설명하자면 두 변수간의 관계를 나타내는 값이다. 기하학적으로 좌표평면에 놓고 보면 사분면 중 어느쪽에 더 많이 위치하냐에 따라서 값이 양수가 되기도, 음수가 되기도 한다. 여기서 정의되는 것이 상관계수다.

상관 계수(Correlation)는 공분산을 두 분산의 곱의 루트로 나눈 것이다. 즉 notation은

\[\mathbb{CR}[X,Y]=\rho_{XY}\equiv\frac{\mathbb{CV}[XY]}{\sqrt{\mathbb{V}(X)\mathbb{V}(Y)}}=\frac{\sigma_{XY}}{\sigma_X\sigma_Y}\]

상관 계수의 특징은 반드시 -1보다 크거나 같고, +1보다 작거나 같다는 것이다. 이는 분산과 공분산의 관계식으로 유도 가능하다. 또한 상관계수의 값은 기울기와는 상관이 없고, 오직 두 변수간에 놓인 모양새에 따라 달라진다.(일자로 뻗어져있는지, 그냥 산개되어있는지 등)

평균 벡터와 공분산 행렬

d차원의 벡터 x와 이 벡터들을 N개 모아놓은 행렬 D를 가정하자. 이때 벡터 x는 attributes나 features라 불리고, D는 instances나 observations라 불린다. 간혹 instance D에 정수 레이블로 이루어진 벡터나 원-핫 벡터로 이루어진 행렬이 덧붙여지는 경우도 있다.

이제 feature 벡터 x와 이에 따른 확률벡터 P(x)를 가정하자. 벡터 x의 평균을 구하면 각각의 x1, x2, …끼리만 이루어진 식으로 계산이 되어(이 과정이 사실 이해가 아직 안 된다. 전확률의 합은 1이어서 사라지는 듯 한데..)

각 x1, x2에 대한 평균 mu1, mu2가 계산된다. 이를 볼드체의 \(\mu\) 라 표현하고 평균 벡터(Mean Vector)라 부른다.

한편 feature인 벡터 x의 분산을 ‘편차 제곱의 평균’ 방식으로 구하면 벡터 간 외적이 되어 행렬이 발생하는데, 회귀분석에서 배웠듯이 주대각은 분산이고 나머지는 공분산인 행렬이 만들어진다. 이를 \(\mathbb{CV}[X]\) 혹은 \(\Sigma\) 라고 표기하고 공분산 행렬(Covariance Matrix)이라 부른다. 경우에 따라 분산 행렬, 혹은 분산-공분산 행렬이라 표현한다.

공분산행렬은 주대각의 분산을 제외한 나머지 공분산 값들이 순서를 바꾸어도 값이 같기에 대칭행렬(symmetric)이다.

또한 각 공분산을 해당하는 i번째, j번째의 표준편차로 나눈 값들을 행렬로 표현할 수 있는데, 이를 \(\mathbb{CR}[X]\) 혹은 \(R\) 이라고 표기하고 상관계수 행렬(Correlation Matrix)이라 부른다. 예를 들어 1행 1열의 원소는

\[\rho_{11}=\frac{\sigma_{11}}{\sigma_1\times \sigma_1}=\frac{\sigma_1^2}{\sigma_1\times \sigma_1}=1\]

1이다(자기 자신에 대한 상관계수는 1). 이때 시그마에 하나만 적혀있으면 표준편차, 두개가 적혀있으면 분산 혹은 공분산이므로 \(\sigma_{ii}=\sigma_i^2\)라는 관계에 유의하자.

한편 상관계수 행렬 R은 공분산행렬 \(\Sigma\) 의 양쪽에 같은 행렬 S^-1/2을 곱함으로써 분해할 수 있고, 반대로 공분산행렬 \(\Sigma\) 는 상관계수 행렬 R의 양쪽에 같은 행렬 S^1/2을 곱함으로써 분해할 수 있다. 이를 주성분 분석(PCA)이라 부른다.(다음 포스팅에서 자세하게 다룬다)

한편 표본에 대하여 표본평균벡터(Sample Mean Vector), 표분공분산행렬(Sample Covariance Matrix), 표본상관계수행렬(Sample Correlation Matrix)도 계산이 가능하다. 이 경우 확률식과 다르게 직접 모든 식들을 더한 후 N으로 나누는, 정말 표본다운 계산법을 보여준다.

벡터의 사영과 선형 변환

선형대수가 지금부터 이후의 포스팅까지 계속 나온다. 여기서 Review하는 내용들이 다 쓰이니 잘 기억하자. 특기할 만한 것은 일단 전치와 역행렬은 서로 순서를 바꾸어도 계산값이 동일하다는 것, 대각합 내의 행렬곱 순서를 바꿔도 값은 같다는 것, 의미론적으로 대각합과 스칼라내적은 같다는 것 정도가 있겠다.

이제 벡터 x에 대해 벡터 a를 곱함으로써 얻는 사영(Projection)의 성질에 대해 알아보자. 먼저 y의 평균벡터는 x의 평균벡터에 a^T를 곱한 것과 같다. 또한 y의 분산은 x의 공분산 행렬 앞뒤에 각각 a^T와 a를 곱한 것과 같다. 수식으로 표현하면 간단한데

\[y=a^Tx\to \mu_y=a^T\mu_x,\;\sigma_y^2=a^T\Sigma_xa\]

이번엔 벡터 x에 행렬 A를 곱한 선형 결합(Linear Transformation)의 경우를 보자. 평균벡터는 동일하게 x의 평균벡터에 A^T를 곱한 것과 같고, 공분산 행렬도 동일하게 x의 공분산 행렬 앞뒤에 각각 A^T와 A를 곱한 것이 된다. 벡터 a가 행렬 A로 바뀌었을 뿐이다.

\[y=A^Tx\to \mu_y=A^T\mu_x,\;\sigma_y^2=A^T\Sigma_xA\]

여기서 행렬을 곱한다는 것은 새로운 축(basis)으로 바라본다는 듯이다. 새 축으로 바라보면 군집의 형태는 유지되지만 바라보는 각도가 바뀌면서 물리량이 변화할 수 있다. 예를 들어 축을 가장 큰 분산의 축으로 새로 잡으면 공분산이 0이 되어버린다.

더 자세한 내용은 다음 시간에..

출처: 기계학습(COSE362) ㅇㄷㅅ 교수님