[통계] Simple Linear Regression(단순선형회귀) 개념과 R 실습
[통계] 다항회귀(polynomial regression)와 다중선형회귀(multiple linear regression) 개념과 R 실습
이전의 글에서 머신러닝의 개념에 대해 다뤘고, 통계학으로 회귀(Regression)를 간단하게 설명하였다. 이번 글에서는 머신러닝에서, 즉 컴퓨터가 회기 모델을 만들 때에는 어떤 과정으로 이루어지는지 알아보겠다.
머신러닝에서의 모델 예측
정답이 있는(x에 대한 y의 값이 대응되어있는) 데이터로부터 우리의 목표는 그 데이터를 가장 잘 설명하는 모델을 만들고, 모델로부터 새로운 x에 대한 답 y를 얻는 것이다.
가장 일반적으로 만들 수 있는 모델은 다음과 같다.
여기서 θ가 모델의 모양을 결정하는 값들이다. 우리의 목표는 '데이터에 가장 적합'한 θ값을 찾는 것이다. 데이터에 가장 적합하다는 것은 구체적으로 어떻게 알 수 있을까. 모델과 데이터들의 오차를 살펴보면 된다.
간단하게 이야기하자면 머신러닝에서의 Regression은 컴퓨터가 모델을 계속 그려보면서 모델과 데이터간의 오차를 줄여가면서 최종적으로 오차가 최소일 때를 찾아내는 것이다. 여기서 말하는 오차는 머신러닝에서는 Cost 혹은 MSE(Mean Square Error)이라고 하고, 우리의 목표는 Gradient Descent(경사하강법)를 이용하여 Cost(MSE)가 최소가 될 때를 찾는 것이다.
Gradient Descent 사용하여 실제 데이터와 모델간의 차이를 최소로 만드는 과정
그럼 이제 좀 더 자세하게 'Gradient Descent라는 방법을 사용하여 실제 데이터와 모델간의 차이를 최소로 만드는 과정’을 이제 설명해보겠다.
먼저 가장 간단한 Simple linear regression의 모델은 다음 식으로 쓸 수 있다.
그리고 ‘실제 데이터와 모델간의 차이’는 Cost function(비용함수)이라는 것을 가지고 값을 매길 수 있는데 그 식은 다음과 같다.
이때 시그마 안에 들어있는 h(x)가 예측 값(모델이 설명하는 값)이고 y가 실제 값(데이터가 갖는 값)을 의미한다.
예측 값에서 실제 값을 뺀 값(오차)을 제곱하고, 다 더해서 데이터 수만큼 나눠(평균)줬기 때문에 이 값을 Mean Square Error(평균제곱오차)라고 하는 것이다. 계속 말하지만 우리의 목표는 이 값을 최소로 만드는 것이다!
θ값을 변화시키면서 그 때의 MSE 값(혹은 Cost function)의 변화를 그래프로 그릴 수 있을 것이다(실제로는 그리기 힘들다..! 가상의 그래프라고 생각하자). 그 그래프는 다음과 같은데, x를 θ, f(x)를 MSE(Cost function)라고 생각하자.
1) 처음 θ값을 정하고, 그 떄의 MSE 값을 구한 것이 "starting point”이다.
2) 그 θ값에서의 접선의 기울기(Cost function 미분)를 구한다.
3) θ값을 기울기 값만큼 반대방향(“starting point”에서 미분값이 -1이었다면 +1만큼 θ값을 변화시킴)으로 보낸다.
4) 1)~3)을 계속 반복하여 더이상 θ값에 변화가 없거나 매우 작거나 할 때(미분값 = 0, 접선의 기울기 = 0)까지 반복한다.
밑의 영상에서 그 과정을 잘 보여주고 있다.
결국 이 과정을 식 하나로 표현하면 다음과 같다.
이 때 곱해주는 알파를 Learning rate(학습률)이라고 하는데, 얼마나 큰 보폭으로 θ값을 변화시킬 지 정하는 상수이다.
그렇다면 의문점이 하나 들 것이다. 그냥 MSE(Cost function)의 함수를 구해버려서 미분값 = 0 이 되는 지점을 찾으면 되는 것 아닌가? 이 방법은 과거엔 가능했지만 현재의 미친듯한 행과 열을 자랑하는 데이터 수준에서는 불가능하다. 이 방대한 행렬의 역행렬을 계산하는 것은 정말 기계 입장에서도 귀찮고 짜증나는 연산이므로 그냥 Gradient decent 이용해서 여러번 시도하는 것이 더 낫다고 한다.
참고 자료는 다음과 같다.
https://towardsdatascience.com/machine-learning-fundamentals-via-linear-regression-41a5d11f5220
https://sandipanweb.wordpress.com/2017/11/25/some-deep-learning-with-python-tensorflow-and-keras/10/
역시 요즘은 대 유튜브의 시대이다. 위 글 간단하게 읽어보고 밑의 유튜브가서 보면 바로 이해가 갈 것이다..ㅎㅎ
다음 글에서는 모델의 학습 방법과 성능 측정방법, 그 다음 글에서는 과적합(overfitting)에 대해 다루도록 하겠다.
'자기계발 > 데이터사이언스' 카테고리의 다른 글
[파이썬] 줌(zoom) 수업 출석 체크 프로그램 (5) | 2020.04.18 |
---|---|
[머신러닝] 모델 학습 방법과 일반화 성능 (1) | 2020.02.19 |
[통계] 다항회귀(polynomial regression)와 다중선형회귀(multiple linear regression) 개념과 R 실습 (0) | 2020.01.20 |
[통계] Simple Linear Regression(단순선형회귀) 개념과 R 실습 (0) | 2020.01.17 |
[머신러닝] 인공지능과 머신러닝이란, 머신러닝의 종류 (0) | 2020.01.14 |