Linear Regression 2

·2025년 7월 25일

just공부

목록 보기
31/47

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^{(1)} = w_0 + w_1 x^{(1)} + \epsilon^{(1)} \\ y^{(2)} = w_0 + w_1 x^{(2)} + \epsilon^{(2)} \\ y^{(3)} = w_0 + w_1 x^{(3)} + \epsilon^{(3)} \\ y^{(4)} = w_0 + w_1 x^{(4)} + \epsilon^{(4)} \\ y^{(5)} = w_0 + w_1 x^{(5)} + \epsilon^{(5)}
y=[y(1)y(2)y(3)y(4)y(5)]X=[1x(1)1x(2)1x(3)1x(4)1x(5)]w=[w0w1]\mathbf{y} = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ y^{(4)} \\ y^{(5)} \end{bmatrix} \quad \mathbf{X} = \begin{bmatrix} 1 & x^{(1)} \\ 1 & x^{(2)} \\ 1 & x^{(3)} \\ 1 & x^{(4)} \\ 1 & x^{(5)} \end{bmatrix} \quad \mathbf{w} = \begin{bmatrix} w_0 \\ w_1 \end{bmatrix}
y=Xw\mathbf{y} = \mathbf{X} \mathbf{w}

앞의 내용에서와 같이 ww는 weight를 나타낸다.

  • XX는 5 by 2
  • ww는 2 by 1
  • product를 해주면 yy와 같이 5 by 1의 벡터가 나오게 된다.

위의 표현을 미분공식에 적용을 해봅시다.

J=12i=1m(w1x(i)+w0y(i))2Jw0=(w1x(i)+w0y(i))=0Jw1=(w1x(i)+w0y(i))x(i)=0J = \frac{1}{2} \sum_{i=1}^{m} \left( w_1 x^{(i)} + w_0 - y^{(i)} \right)^2 \\ \frac{\partial J}{\partial w_0} = \sum \left( w_1 x^{(i)} + w_0 - y^{(i)} \right) = 0 \\ \frac{\partial J}{\partial w_1} = \sum \left( w_1 x^{(i)} + w_0 - y^{(i)} \right) x^{(i)} = 0

연립방정식 형태로 풀기 위해서 좌측의 항인 Jw0\frac{\partial J}{\partial w_0}00이라고 가정하자.
이 식에서는 변수가 2개일 때를 가정하고 문제를 푸는 것이다.

Weight vector인 w0w_0w1w_1를 찾는 것이 목표이다.

w=[w0w1]\mathbf{w} = \begin{bmatrix} w_0 \\ w_1 \end{bmatrix}

얘네들에 대한 연립방정식을 세울 것이다.
앞에 있는 식을 정리하게 되면 아래와 같은 식이 나온다.

1)

w^0m+w^1x(i)=y(i)w^0x(i)+w^1(x(i))2=y(i)x(i)\hat{w}_0 m + \hat{w}_1 \sum x^{(i)} = \sum y^{(i)} \\ \hat{w}_0 \sum x^{(i)} + \hat{w}_1 \sum (x^{(i)})^2 = \sum y^{(i)} x^{(i)}
  • summation을 한 형태로 나타난다.

2)

XTX=[mx(i)x(i)(x(i))2]\mathbf{X}^T \mathbf{X} = \begin{bmatrix} m & \sum x^{(i)} \\ \sum x^{(i)} & \sum (x^{(i)})^2 \end{bmatrix}
X=[1x(1)1x(2)1x(3)1x(4)1x(5)]w=[w0w1]y=[y(1)y(2)y(3)y(4)y(5)]\mathbf{X} = \begin{bmatrix} 1 & x^{(1)} \\ 1 & x^{(2)} \\ 1 & x^{(3)} \\ 1 & x^{(4)} \\ 1 & x^{(5)} \end{bmatrix} \quad \mathbf{w} = \begin{bmatrix} w_0 \\ w_1 \end{bmatrix} \quad \mathbf{y} = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ y^{(4)} \\ y^{(5)} \end{bmatrix}
  • XX가 5 by 2인데, transpose를 하게되면, (XT\mathbf{X}^T 를 하게 되면) 2 by 5가 된다.
  • XTX\mathbf{X}^T \mathbf{X} 를 하게 되면 2 by 5 와 5 by 2가 되니까 2 by 2가 되게 된다
  • XTX\mathbf{X}^T \mathbf{X}의 결과를 자세하게 보게 되면 아래와 같다.
X=[1x(1)1x(2)1x(3)1x(4)1x(5)]XT=[11111x(1)x(2)x(3)x(4)x(5)]\mathbf{X} = \begin{bmatrix} 1 & x^{(1)} \\ 1 & x^{(2)} \\ 1 & x^{(3)} \\ 1 & x^{(4)} \\ 1 & x^{(5)} \end{bmatrix} \mathbf{X}^T = \begin{bmatrix} 1 & 1 & 1 & 1 & 1 \\ x^{(1)} & x^{(2)} & x^{(3)} & x^{(4)} & x^{(5)} \end{bmatrix}

3-1)

(XTX)w^=XTy(\mathbf{X}^T \mathbf{X}) \hat{\mathbf{w}} = \mathbf{X}^T \mathbf{y}\\ ↓ \\

3-2)

w^=(XTX)1XTy\hat{\mathbf{w}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
  • 1)의 공식을 3) 공식으로 표현할 수 있다.
  • 3-1)의 식에서 (XTX)(\mathbf{X}^T \mathbf{X})를 오른쪽으로 넘겨주게 되면 3-2)와 같은 식이 나오게 되어, w^\hat{w}을 구할 수 있게 된다.
  • 즉, (XTX)(\mathbf{X}^T \mathbf{X})의 역행렬을 구하게 되면, w^\hat{w}을 유추할 수 있게 된다.

역행렬 방법을 자세하게 알아보자.

w^=(XTX)1XTy\hat{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
역행렬 공식 (2x2 행렬):[abcd]1=1adbc[dbca]\text{역행렬 공식 (2x2 행렬):} \quad \begin{bmatrix} a & b \\ c & d \end{bmatrix}^{-1} = \frac{1}{ad - bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}
  • 위의 공식을 활용해서 아래의 수식을 풀 수 있다.
XTX=[mx(i)x(i)(x(i))2]=[mmxˉmxˉ(x(i))2]\mathbf{X}^T \mathbf{X} = \begin{bmatrix} m & \sum x^{(i)} \\ \sum x^{(i)} & \sum (x^{(i)})^2 \end{bmatrix} = \begin{bmatrix} m & m\bar{x} \\ m\bar{x} & \sum (x^{(i)})^2 \end{bmatrix}
  • determinent를 구하기 위해서 ad-bc를 해주어야 한다.
  • m×(x(i))2mxˉ×mxˉm × \sum (x^{(i)})^2 - m\bar{x} × m\bar{x} 를 하게 되면 아래와 같이 나온다.
XTX=m(x(i))2(mxˉ)2=m((x(i))2mxˉ2)=m(x(i)xˉ)2|\mathbf{X}^T \mathbf{X}| = m \sum (x^{(i)})^2 - (m \bar{x})^2 \\ = m \left( \sum (x^{(i)})^2 - m \bar{x}^2 \right) \\ = m \sum (x^{(i)} - \bar{x})^2
  • 위에서 말한 것과 같이 XTX\mathbf{X}^T \mathbf{X} 행렬식은 2×22 × 2 행렬이므로, adbcad - bc 형태로 계산된다.
  • x(i)=mxˉ\sum x^{(i)} = m\bar{x} 를 이용해 정리한다.
  • 제곱 분배법칙을 적용해 (mxˉ)2=m2xˉ2(m\bar{x})^2 = m^2\bar{x}^2 이용한다.
  • 분산의 정의 (x(i)xˉ)2\sum (x^{(i)} - \bar{x})^2와 동일한 형태로 정리를 할 수 있다.
  • 즉, XTX|\mathbf{X}^T \mathbf{X}|는 입력 벡터의 분산에 비례한다.

variation 형태로 정리가 되어서, 행렬 식이 mmx(i)x^{(i)} 값을 이용한 variation으로 표현할 수 있다.

(XTX)1=1m(x(i)xˉ)2[(x(i))2mxˉmxˉm]=1(x(i)xˉ)2[(x(i))2/mxˉxˉm](\mathbf{X}^T \mathbf{X})^{-1} = \frac{1}{m \sum (x^{(i)} - \bar{x})^2} \begin{bmatrix} \sum (x^{(i)})^2 & -m\bar{x} \\ - m\bar{x} & m \end{bmatrix} \\ = \frac{1}{\sum (x^{(i)} - \bar{x})^2} \begin{bmatrix} \sum (x^{(i)})^2 / m & -\bar{x} \\ -\bar{x} & m \end{bmatrix}
  • 일반적인 2x2 행렬의 역행렬 공식을 활용하여 XTX\mathbf{X}^T\mathbf{X}의 역을 계산했다.
  • x(i)=mxˉ\sum x^{(i)} = m\bar{x} 와 분산성질 (x(i)xˉ)2\sum (x^{(i)} - \bar{x})^2을 이용해 분산 기반으로 정리된 형태이다.
  • 두 번째 식은 각 항을 mm으로 나눈 형태로 평균 기반 표현으로 단순화했다.

XX transpose 역행렬을 구할 수 없는 경우

데이터의 mm이 feature의 개수 nn일 때, m이 n보다 작을 때이다.
하지만 오늘날 데이터가 작은 경우는 거의 없다고 볼 수 있다.

w^=(XTX)1XTy\hat{\mathbf{w}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
  • 선형 회귀의 최소제곱해 공식
w^=(XTX)1XTy=[w^0w^1]=1(x(i)xˉ)2[(x(i))2/mxˉxˉm][y(i)x(i)y(i)]\hat{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}= \begin{bmatrix} \hat{w}_0 \\ \hat{w}_1 \\ \end{bmatrix} \\ = \frac{1}{\sum (x^{(i)} - \bar{x})^2} \begin{bmatrix} \sum (x^{(i)})^2 / m & -\bar{x} \\ -\bar{x} & m \end{bmatrix} \begin{bmatrix} \sum y^{(i)} \\ \sum x^{(i)} y^{(i)} \end{bmatrix}
  • 역행렬은 이전의 수식처럼 분산 기반으로 유도한다.
w^1=x(i)y(i)mxˉyˉ(x(i)xˉ)2\hat{w}_1 = \frac{\sum x^{(i)} y^{(i)} - m \bar{x} \bar{y}}{\sum (x^{(i)} - \bar{x})^2}
w^0=yˉw^1xˉ\hat{w}_0 = \bar{y} - \hat{w}_1 \bar{x}

여러 개의 변수일 경우?

XTX=[mx(i)x(i)(x(i))2]\mathbf{X}^T \mathbf{X} = \begin{bmatrix} m & \sum x^{(i)} \\ \sum x^{(i)} & \sum (x^{(i)})^2 \end{bmatrix}

위의 수식이 확대된다.

결론

w^=(XTX)1XTy\hat{w} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^Ty

Normal equation

  • XTX\mathbf{X}^T\mathbf{X}의 역행렬이 존재할 때 사용한다.
  • Iteration 등 사용자 지정 Hyper-parameter가 없다
  • Feature가 많으면 계산 속도가 느려진다.
profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글