일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dynamic programming
- 자살
- 공부
- 계획
- 2021
- 인생
- 철학
- mmdetection
- 강의
- 슬픔
- BOJ
- it
- dp
- 2020
- 알고리즘
- 파이썬 강의
- 강좌
- 프로그래밍
- 자작시
- 다이나믹프로그래밍
- 라즈베리파이 모니터
- 백준
- 2024
- 파이썬
- python 강의
- python
- 파이썬 강좌
- mmcv
- python 강좌
- C++
- Today
- Total
Stargazer
[기계학습] 최소 제곱법(Least Square Estimation) 본문
최소제곱법이 뭔지는 알겠는데,
당최 머신러닝에서 쓰는 최소제곱법의 유도식이 이해되질 않아서 정리를 한번 해보겠다.
최소 제곱법은 오차의 제곱합이 최소가 되도록하는 추정값을 산출할 때 사용한다
쉽게 말하면, 오차를 가장 적게하는 근사치를 구하는 것이다.
대부분의 데이터들은 완벽한 그래프를 그리는게 아니라, 오차가 존재하여 불완전한 그래프를 그린다.
그래서 이 점들을 가장 오차없이 그리는 간단한 그래프를 구하기 위해 근사치를 구하는 것이 목적이다.
최소 제곱법으로 부터 근사치 유도
최소제곱법, 말그대로 오차의 제곱을 해서 다 더하여서 확인한다.
이 방식이 간단해서, 선형회귀에서 기본적으로 접근할때 사용되는 방식이다.
오차를 e라고 하면,
오차 : $e_i = y_i - \hat{f}(x_i)$ 이기 때문에
오차의 제곱합$=\sum_{i=1}^{n}e_{i}^2$ 이다.
가중치(weight): $w = (w_1,w_2, ... , w_p)^T$
예측값: $\hat{f}(x_i) = \hat{y}_i = w^Tx_i + b$
$X$는 주어진 입력이고, $y$는 정답레이블, $\hat{w}$은 우리가 구하려는 근사치이다.
$y=Xw$ <- 이 식을 만족할 만한 근사치를 구해보자.
$\hat{w} = argmin_w \sum_{i=1}^{n}e_{i}^2 = argmin_w (y-Xw)^T(y-Xw)$
위 식이 의미하는 바는, 오차 e를 가장 작게 만드는 w로 넣은 값을 근사치라고 하겠다라는 의미가 되겠다.
$\begin{matrix}e &=& (y-Xw)^T(y-Xw)\\&=&(y^T-w^TX^T)(y-Xw) \\&=& y^Ty - y^TXw - w^TX^Ty + w^TX^TXw \\&=& y^Ty - 2w^TX^Ty + w^TX^TXw \end{matrix}$
위처럼 변형될 수 있는 이유는 $y^TXw$가 대칭행렬이라서 이다.
대칭행렬인 이유는 연산 결과가 스칼라(1 by 1)여서 전치행렬이 원래 행렬과 같기 때문
$\frac{\partial e}{\partial w} = \frac{\partial }{\partial w}(y^Ty - 2w^TX^Ty + w^TX^TXw) \\ = -2X^Ty + 2X^TXw$
이 식을 만족하는 w를 구하면
$X^Ty = X^TXw$
$w = (X^TX)^{-1}Xy^T$ <- 유도 결과
$\hat{w} = (X^TX)^TX^Ty$ <- 교수님이 주신 자료 결과
지금 정리해보니 교수님의 실수인 것 같다.
행렬 shape도 중간에 계속 바꾸고 이유없이 자리 바꾸는게 보여서 헷갈렸던 것 같다.
그리고 마지막 결론이 $\hat{w} =(X^TX)^TX^T$ 처럼 왜 $X^TX$ 가 직교행렬인가에 대한 설명이 부족하다.
다시 유도해달라고 요청해야 할 듯 싶다.
'인공지능 > ML, DL' 카테고리의 다른 글
[머신러닝] Normal Equation Noninvertibility(정규 방정식 비가역성) (0) | 2022.08.05 |
---|---|
[기계학습] 최적화 문제 - 라그랑주 프리멀 함수, 라그랑주 듀얼 함수 (0) | 2022.03.23 |