Overview
선형회귀 Linear Regression
통계학을 다뤄보지 않은 분들은 회귀분석이란 단어가 어색하실거에요. 회귀분석이 뭔지 부터 잠깐 짚고 넘어가겠습니다.
회귀분석
회귀(regression,回歸)라는 단어에는 '돌아간다'라는 뜻이 있습니다. 찰스다윈의 친척인 프랜시스 골턴은 우생학으로 유명한 분인데, 부모와 자녀의 키를 분석했던 방법이 회귀분석의 시초입니다. 어떻게 분석했을까요? 프랜시스 골턴은 키가 유전의 영향이 클거라는 생각을 했습니다. 키가 큰 유전자를 받으면 자식도 키가 클 것이라는 가설을 세운 것이죠. 프랜시스가 해야할 일은 먼저 데이터를 수집하는 것이었습니다. 집집을 돌아다니며 얻을 수 있는 키에대한 정보를 모조리 수집했습니다. 이 때 중요한 발견을 합니다. 부모가 키가 크면 자식은 키가 그 것보다는 작았고, 부모가 키가 작으면 자식은 키가 그보다 컸습니다. 각 세대별로 평균에 선을 쭉 그어보니, 점점 평균으로 돌아가는 것처럼 보였습니다. 프랜시스는 이를 회귀분석이라고 했습니다. 나중에 다룰 칼 피어슨 상관계수의 주인공 '칼 피어슨'은 이를 수학적으로 함수관계를 도출하고 정립하였습니다. 모델이 만들어진 것입니다 !
선형회귀
머신러닝에서 선형회귀는 이러한 회귀분석을 칼 피어슨처럼 선을 그어 수학식(모델)을 만들고 예측하는데 그 목적이 있습니다. 학습에는 크게 다음과같은 네가지가 있습니다.
- Gradient descent based learning
- Probability theory based learning
- Information theory based learning
- Distance similarity based learning
이번 포스트에서는 첫번째, Gradient descent based learning에서 다룹니다.
Gradient descent based learning
우리는 여러 독립변수들로 종속변수를 예측하고 싶습니다. 예를 들어 집을 팔 예정이라고 해봅시다. 집의 가격을 예측하고자할 때, 해당 지역에서 최근 거래된 부동산의 가격을 모두 수집할 것입니다. 집의 평수가 커지면 집값이 비싸진다고 가정할 때, 집의 평수를 대입하면 수집된 데이터를 통해서 집의 가격을 예측할 수 있겠죠?
여기서 독립변수는 집의 평수이고 종속변수는 집의 가격입니다. 우리는 종속변수를 $\hat{y}$으로 쓰고 이는 종속변수에대한 예측치입니다. 우리는 y hat이라는 예측치를 가지고 싶습니다. 모델은 $y= ax + b$의 형태로 만들 것입니다. 그리고 오차를 가장 적게 만들 고 싶습니다.
최소제곱법
예측된 값과 실제값의 오차를 줄이는 것이 관건인데, 오차는 예측치보다 비싸면 음수가 될것이고(1000만원 예측, 실제 1200만원 : 1000-1200 = -200) 예측치보다 싸면 양수가 됩니다. 모두 더해주면 서로 상쇄가되니 제곱해줍니다. 이를 최소제곱법이라고합니다.
우리의 목표는 위의 오차를 가장 적게 만들어 주는 것입니다 ! 결국 최대/최소의 문제입니다. 극솟값을 구하는 문제, 우리는 이 문제를 미분으로 해결할 수 있습니다.
Cost Function
우리는 앞서말한 y=ax+b라는 함수를 가설함수라고 부를 것입니다. 실제값과 가설함수의 차이를 Cost Function(Loss Function)이라고 부릅니다.
식에서 sum 괄호안의 의미는, 우리가 구할 가설함수에서 x를 대입한 값(즉 예측값)과 실제 y의 값의 차입니다. 앞서말한 최소제곱법입니다.
CostFunction에서 우리가 할 것
우리가 찾고자하는 값은 가중치와 절편입니다. 가중치는 $y=ax+b$에서 $a(w_1)$를 의미하고 절편은 $b(w_0)$를 의미합니다. 앞으로 가중치를 weight라는 의미의 $w$로 표기하겠습니다. (Cost function과 Loss function은 동일한의미입니다.) Cost function은 $J(w0,w1)$로 쓰며 J는$w_0$과 $w_1$에의해 결정되는 함수입니다. (계속 같은말입니다.)
이 식을 곰곰히 씹어보시길 바랍니다. m은 데이터의 갯수입니다. 첫번째 데이터부터 m까지 전체데이터의 차를 제곱해준 것입니다. 왜 2m으로 나눠주는 이유는 미분할거라서 제곱이 앞에 2로 나오기 때문입니다. 우리는 이 함수를 argmin, 즉 이 값이 가장 작아질 수 있는 $w_0$과 $w_1$를 찾을 것입니다.
우리는 고등학교때 미분을 $\frac{dy}{dx}$로 배웠죠. 미분을 하는 변수가 1개일 때 보통 이렇게 적습니다. 지금은 어떤 변수 하나에대해 미분을 할 것이고 이러한 행위를 편미분이라고 합니다. 위 식은, $w_1$에 관해서 Cost functioin을 편미분한다는 식입니다. 우리는 모든 가중치에대해서 편미분을 할 것 입니다.
컨셉만 잡고싶으신 분들은 아래 내용을 읽지않으셔도 됩니다.
Chain Rule
Chain Rule은 딥러닝의 핵심입니다. 대단한 건 아니고, (2x-1)을 A로 치환하고 , f 를 A에대해 먼저 미분합다(df/dA)
그럼 2A가 나올 것인데, 2A는 4x-2입니다. 이제 A를 x에대해 미분한다. (dA/dx)
그럼 2가 나옵니다. 이제 둘을 곱한다. ( df/dA * dA/dx )
둘을 곱하면서 dA는 상쇄되고 df/dx만 남는다. 다시말해 둘을 곱한 값은 f를 x로 미분한 값과 같습니다.(4x-2)*2
간단하죠?
Cost Function을 w0에대해 미분할때, 전체를 A를 $(w_{1}*x_{(i)} + w_{0} - y_{(i)})^2$로 놓고 미분하면 $2A$가됩니다.
$A$를 $w_0$에대해 미분하면 1이됩니다. 이둘을 곱하면 됩니다. (두번째)
$A$를 $w_1$에 대해 미분하면 $x_{(i)}$가 남습니다. (세번째)
이게 필요한 미분의 전부입니다 !
'인공지능 > 머신러닝' 카테고리의 다른 글
[선형회귀] Overfitting & Regulation (0) | 2021.01.27 |
---|---|
[선형회귀] Stochastic Gradient Descent (0) | 2021.01.27 |
[선형회귀] Multivariate Linear Regression (0) | 2021.01.27 |
[선형회귀] Gradient Descent (0) | 2021.01.26 |
[선형회귀] Normal equation (0) | 2021.01.26 |
댓글