오늘은 Linear Regression의 기본적 수식 이해를 위한 글을 작성한다. 머피의 머신러닝 11장에 해당하며, ridge regression까지 다뤄볼 예정이다.
0. 들어가며
logistic regression과의 차이
linear regression(선형 회귀)와 logistic regression(로지스틱 회귀)는 둘 다 x에 대해서 y에 대한 확률(P(y|x)) 을 구하는 것으로 쓰인다. 그리고 두 방법론 다 모델을 일반적으로 x는 파라미터 θ를 통해 wx + b 형태로 사영된다. 그래서 얼핏 봤을 땐 비슷한 이름과 선형 형태인 wx+b로 인해 헷갈릴법 하다. (물론 logistic regression은 nonlinear classifier 형태도 있다. x를 wx+b가 아닌 w1x**2 + w2x + b 형태로 사영하는 방법.)
이 둘의 차이점은 수식을 보면 확연해진다. 아래의 bernoulli와 categorical을 사용하는 두 수식은 logistic regression으로 구하는 p(y|x)을 의미한다. y 종류의 수에 따라 사용하는 distribution이 다르며, 두 분포 다 미분하기 쉽다.
이전글(MLE)에서 bernoulli, categorical distribution에 대한 수식과 미분 결과를 정리한 적이 있다.
https://hi-lu.tistory.com/entry/%EC%95%84-%EB%A7%9E%EB%8B%A4-MLE
반면, 오늘 다룰 linear regression을 통한 p(y|x)는 아래와 같이 Gaussian distribution을 따른다.
Gaussian prob 계산하기
평균 u, 분산 ∑를 갖는 가우시안 분포 P(x|θ) = N(x| u, ∑)가 있을 때 Log P(x|θ)는 아래와 같이 표현된다.
1. linear regression 설명
linear regrssion의 기본적인 모델은 아래와 같다. 파라미터 θ에는 bias term인 w0, 가중치(weights) w, y의 분산인 σ이 해당한다. input이 0일 경우에 w0은 baseline과 같은 역할을 하게 된다. (wx + w0 = w0)
x가 1차원인 경우는 위와 같이 하나의 w 벡터로 마무리가 되지만, 다차원일 경우엔 아래와 같이 여러 가우시안이 필요하다. 이때의 J는 x의 총 차원 크기에 해당한다.
feature extractor(φ) 를 통해 x를 변형한 후 x자리를 대체해도 linear regression을 사용할 수 있다. 이런 경우는 linear하게 x를 매핑하기 어려울 때, 고정된 feature extractor φ로 nonlinear한 변형을 줄 수 있다는 장점이 있다.
2. LSE (Least Squares Estimation)
NLL (Negative Log Likelihood)가 최대한 작아지도록 학습하는 경우를 살펴보자. 가우시안 분포를 log로 나타낸 식을 대입하면 아래와 같이 나타낼 수 있다.
위 식을 정리하면 최종 형태는,
와 같다. 학습을 하기 위해 먼저 w를 구하기 때문에 w와 관련있지 않는 항은 날라간다. 따라서 우항을 날리고 (y - y^)**2만 남게 되는데, 이는 실제값 y와 예측값 y^와의 차이(residual)을 나타내는 것이다.
따라서 linear regression을 likelihood를 통해 최적화하는 것은 Residual sum of squares(RSS)를 작게 만든다는 것과 같은 말이다.
OLS (Ordinary Least Squares)
convex 함수의 가장 작은값을 구하려면 미분값이 0인 지점을 찾으면 된다. 위해서 NLL이 결국 RSS와 같은 의미를 지녔었기 때문에 RSS를 미분해보자.
RSS의 미분값을 정리하면 아래와 같다.
이 값이 0인 지점은 trans(X)Xw = trans(X)y 를 만족해야 함을 알 수 있다. 이 최저값이 unique한지 보기 위해 2계도함수(H)도 구해보자. 한번 더 미분이다. H가 항상 0보다 크다면 RSS 미분값이 0인 지점이 우리가 찾는 w임을 알 수 있다.
trans(X)X가 0보다 큼을 보이기 위해 0보다 큰 임의의 벡터 v를 아래와 같이 곱해보자. 그러면 Xv의 크기를 나타내는 식이 되기 때문에 항상 0보다 크다. v는 0보다 컸기 때문에 trans(X)X도 0보다 큼을 만족한다!
그럼 다시 RSS(w)의 미분 결과로 돌아가보자. w를 남기고 식을 정리해보면 아래와 같이 pseudo inverse 형태로 남는것을 알 수 있는데, 이부분은 지난 글인 SVD에서 다룬 적이 있다. pseudo inverse를 구할 때 만약 데이터 수(N)가 dim(D)보다 월등히 크다면 SVD보다 QR decomposition을 사용하는 것도 좋다.
X의 역함수를 구할 수 없을 때 pseudo inverse로 대체 가능했다. 지금의 RSS 미분 == 0 을 w에 대해 정리하면 X의 pseudo inverse와 y의 곱으로 정리가 가능하다. pseudo inverse를 구하기 위해 SVD를 사용할 수 있었다.
SVD (Singular Value Decomposition) 수식적 이해
오늘은 지난 글 EVD에 이어서 SVD에 대해 정리해 본다. 이번 글은 머피의 머신러닝 1의 7.5장에 근거한다. 0. 들어가면서 EVD 요약 Eigenvalue Decomposition은 행렬 A에 대해 eigenvalue(Λ)와 eigenvector(U)로 다음
hi-lu.tistory.com
3. 다른 MLE 구하기
bias 구하기
OLS를 통해 w를 구할 수 있었으니 이제 w를 활용해서 bias term인 w0도 구해보자. w0은 baseline으로 x가 0일때 default가 될 값이었기 때문에, y의 평균과 wx의 평균의 차로 나타낼 수 있다.
x의 차원수가 1이라면
OLS를 통해 X,Y를 통해 w를 구할 수 있었다.
X와 Y를 각각 center로 옮겨보자. Xc = X - mean(X), Yc = Y - mean(Y)로 중심이 0일 수 있게 세팅하고 w에 대입한다면 다음과 같다.
여기서 만약 x의 차원수가 1이라면(Nd == 1) 재밌게도 공분산으로 식이 정리된다. 새롭게 구한 w1를 regression coefficient라고도 하는데, 이는 X가 주어졌을 때 Y에 대한 미분값을 의미한다.
한 가지 재미있는 점은 W가 w1 뿐 아닌 w2, w3.. 을 갖고 있어도 (이에 대응하는 x1, x2.. 도 있을 것이다) w1를 update하는 데엔 x1만이 작용한다. 어차피 미분하는 텀으로 x2, x3, ...은 사라질 것이기 때문이다.
Batch 말고 Continual한 MLE update
batch update 대신 online learning으로 MLE를 계산해 모델 학습을 한다면 OLS는 사용하기 어렵다. w이 covariance로 표현될 수 있었는데, 이를 통해 재귀적으로 update가 가능하다. (== covariance만 구하면 w 연산이 가능.) 편의상 x의 dim이 1이라고 했을 때 n번째 업데이트 시 x의 평균값, y 평균값, Cov[x,x], Cov[x,y]는 다음과 같을 것이다.
n+1번째로 update하는 식에 n번째 데이터를 넣어서 표현할 수 있다.
이를 대입해서 n+1번째 Cov[x,x], Cov[x,y]를 구할 수 있으며, 따라서 online update가 가능하다. batch 결과와 비교해보면 결국 시간이 흐르면서 continuous learning 결과가 batch 결과에 유사해짐을 볼 수 있다.
분산 구하기
linear regression을 학습함에 있어 업데이트 해야하는 파라미터는 w0, w, σ가 있었다. w0와 w는 구했으니 이제 σ를 구할 차례다. LSS를 σ에 대해 미분한 값이 0인 지점을 찾아보자.
정리하니 재밌게도 MSE를 구하면 분산값임을 알게 되었다.
오늘은 linear regression에 대해 알아보았다. 특히 MLE로 linear regression을 풀어보는 방법을 수식으로 이해해 보았다.
사실상 ml 방법론을 쓴다면 linear보단 logistic regression이 더 손에 가는게 사실이긴 하다. 그래도 회귀 방법론들을 정복하여 기본기를 탄탄하게 가져가는건 좋다고 생각한다. 여유가 된다면 MLE 대신 MAP 접근법인 ridge, lasso regression도 다음에 다뤄보겠다.
'머신러닝 > 아맞다' 카테고리의 다른 글
Mutual Information 파헤치기 (0) | 2023.10.14 |
---|---|
엔트로피와 KL Divergence (0) | 2023.10.08 |
SVD (Singular Value Decomposition) 수식적 이해 (0) | 2023.09.23 |
Eigenvalue Decomposition (EVD)의 수식 기초 (0) | 2023.09.16 |
GMM과 EM의 완벽한 이해 (0) | 2023.09.09 |