Normal equation
벡터는 소문자 bold로 표기하고,
Metrix는 대문자 bold로 표기한다.
y(1)=w0+w1x(1)+ϵ(1)y(2)=w0+w1x(2)+ϵ(2)y(3)=w0+w1x(3)+ϵ(3)y(4)=w0+w1x(4)+ϵ(4)y(5)=w0+w1x(5)+ϵ(5)
y=⎣⎢⎢⎢⎢⎢⎡y(1)y(2)y(3)y(4)y(5)⎦⎥⎥⎥⎥⎥⎤X=⎣⎢⎢⎢⎢⎢⎡11111x(1)x(2)x(3)x(4)x(5)⎦⎥⎥⎥⎥⎥⎤w=[w0w1]
y=Xw
앞의 내용에서와 같이 w는 weight를 나타낸다.
- X는 5 by 2
- w는 2 by 1
- product를 해주면 y와 같이 5 by 1의 벡터가 나오게 된다.
위의 표현을 미분공식에 적용을 해봅시다.
J=21i=1∑m(w1x(i)+w0−y(i))2∂w0∂J=∑(w1x(i)+w0−y(i))=0∂w1∂J=∑(w1x(i)+w0−y(i))x(i)=0
연립방정식 형태로 풀기 위해서 좌측의 항인 ∂w0∂J 을 0이라고 가정하자.
이 식에서는 변수가 2개일 때를 가정하고 문제를 푸는 것이다.
Weight vector인 w0과 w1를 찾는 것이 목표이다.
w=[w0w1]
얘네들에 대한 연립방정식을 세울 것이다.
앞에 있는 식을 정리하게 되면 아래와 같은 식이 나온다.
1)
w^0m+w^1∑x(i)=∑y(i)w^0∑x(i)+w^1∑(x(i))2=∑y(i)x(i)
2)
XTX=[m∑x(i)∑x(i)∑(x(i))2]
X=⎣⎢⎢⎢⎢⎢⎡11111x(1)x(2)x(3)x(4)x(5)⎦⎥⎥⎥⎥⎥⎤w=[w0w1]y=⎣⎢⎢⎢⎢⎢⎡y(1)y(2)y(3)y(4)y(5)⎦⎥⎥⎥⎥⎥⎤
- X가 5 by 2인데, transpose를 하게되면, (XT 를 하게 되면) 2 by 5가 된다.
- XTX 를 하게 되면 2 by 5 와 5 by 2가 되니까 2 by 2가 되게 된다
- XTX의 결과를 자세하게 보게 되면 아래와 같다.
X=⎣⎢⎢⎢⎢⎢⎡11111x(1)x(2)x(3)x(4)x(5)⎦⎥⎥⎥⎥⎥⎤XT=[1x(1)1x(2)1x(3)1x(4)1x(5)]
3-1)
(XTX)w^=XTy↓
3-2)
w^=(XTX)−1XTy
- 1)의 공식을 3) 공식으로 표현할 수 있다.
- 3-1)의 식에서 (XTX)를 오른쪽으로 넘겨주게 되면 3-2)와 같은 식이 나오게 되어, w^을 구할 수 있게 된다.
- 즉, (XTX)의 역행렬을 구하게 되면, w^을 유추할 수 있게 된다.
역행렬 방법을 자세하게 알아보자.
w^=(XTX)−1XTy
역행렬 공식 (2x2 행렬):[acbd]−1=ad−bc1[d−c−ba]
- 위의 공식을 활용해서 아래의 수식을 풀 수 있다.
XTX=[m∑x(i)∑x(i)∑(x(i))2]=[mmxˉmxˉ∑(x(i))2]
- determinent를 구하기 위해서 ad-bc를 해주어야 한다.
- m×∑(x(i))2−mxˉ×mxˉ 를 하게 되면 아래와 같이 나온다.
∣XTX∣=m∑(x(i))2−(mxˉ)2=m(∑(x(i))2−mxˉ2)=m∑(x(i)−xˉ)2
- 위에서 말한 것과 같이 XTX 행렬식은 2×2 행렬이므로, ad−bc 형태로 계산된다.
- ∑x(i)=mxˉ 를 이용해 정리한다.
- 제곱 분배법칙을 적용해 (mxˉ)2=m2xˉ2 이용한다.
- 분산의 정의 ∑(x(i)−xˉ)2와 동일한 형태로 정리를 할 수 있다.
- 즉, ∣XTX∣는 입력 벡터의 분산에 비례한다.
variation 형태로 정리가 되어서, 행렬 식이 m과 x(i) 값을 이용한 variation으로 표현할 수 있다.
(XTX)−1=m∑(x(i)−xˉ)21[∑(x(i))2−mxˉ−mxˉm]=∑(x(i)−xˉ)21[∑(x(i))2/m−xˉ−xˉm]
- 일반적인 2x2 행렬의 역행렬 공식을 활용하여 XTX의 역을 계산했다.
- ∑x(i)=mxˉ 와 분산성질 ∑(x(i)−xˉ)2을 이용해 분산 기반으로 정리된 형태이다.
- 두 번째 식은 각 항을 m으로 나눈 형태로 평균 기반 표현으로 단순화했다.
X transpose 역행렬을 구할 수 없는 경우
데이터의 m이 feature의 개수 n일 때, m이 n보다 작을 때이다.
하지만 오늘날 데이터가 작은 경우는 거의 없다고 볼 수 있다.
w^=(XTX)−1XTy
w^=(XTX)−1XTy=[w^0w^1]=∑(x(i)−xˉ)21[∑(x(i))2/m−xˉ−xˉm][∑y(i)∑x(i)y(i)]
- 역행렬은 이전의 수식처럼 분산 기반으로 유도한다.
w^1=∑(x(i)−xˉ)2∑x(i)y(i)−mxˉyˉ
w^0=yˉ−w^1xˉ
여러 개의 변수일 경우?
XTX=[m∑x(i)∑x(i)∑(x(i))2]
위의 수식이 확대된다.
결론
w^=(XTX)−1XTy
Normal equation
- XTX의 역행렬이 존재할 때 사용한다.
- Iteration 등 사용자 지정 Hyper-parameter가 없다
- Feature가 많으면 계산 속도가 느려진다.