앞서 몇 개 글에 걸쳐 머신러닝이란 무엇이고, 머신러닝이 어떻게 학습하는 지 알아보았다. 무엇보다 머신러닝을 모델링하는 목적은 데이터 패턴을 일반화(Generalize)하는 것이였다. 이제 이번 글부터는 본격적으로 개별 머신러닝 알고리즘들에 대해 하나씩 알아보도록 하자.
참고로 앞에서도 잠깐 이야기했지만 머신러닝 알고리즘은 정답이 있는 데이터를 주고 학습시키는 지도학습과 정답을 주지 않고 알아서 학습해 보라는 비지도학습, 그리고 행동에 대한 보상을 통해 학습시키는 강화학습 등이 있다. 그리고 지도학습은 다시 어떤 것을 예측하는 지에 따라클래스를 예측하는 분류(Classification)와 가격이나 LTV와 같은 실수값을 예측하는 회귀(Regression)로 다시 나눌 수 있다.
지도학습과 비지도학습 (위키북스, ADsP 데이터분석 준전문가)
선형회귀(Linear Regression)란?
그 첫 번째로 선형회귀 알고리즘에 대해 공부해 보도록 하자. 우선 회귀분석이란 하나 이상의 독립변수와 종속변수의 관계를 모델링하는 기법을 말한다. 앞서 머신러닝이 학습하는 법에서 강아지의 몸무게, 견종 등의 요인(독립변수)과 일일 급식량(종속변수)의 관계를 다중 회귀식으로 나타내고 오차합이 가장 줄어드는 방향으로 학습해 가중치를 찾았는데 회귀분석을 예로 든 것이였다.
회귀(Regress)라는 말은 어디로 돌아간다 또는 퇴보한다라는 의미인데, 영국의 유전학자 프랜시스 골턴이 데이터의 추세에 따라 선을 그리면 마치 데이터들이 추세선을 따라 회귀하는 경향이 있다고해서 회귀분석이라고 이름지었다고 한다.
위키피디아, 회귀분석
물론 추세선이 직선만 있는 것은 아닐 것이다. 선형회귀에서 선형이란 선 또는 선 모양의 어떤 것을 직관적으로 떠올릴 수 있다. 하지만 선형회귀와 비선형회귀를 나누는 기준은 단순히 직선이냐 곡선 모양이냐가 아니라 Y=W0 + W1X1... 형태의 하나의 식으로 나타낼 수 있는 지 여부이다.
다항회귀는 독립변수와 종속변수를 2차 함수 이상의 관계로 나타내어 곡선 모양을 띄지만, 이 때 거듭제곱을 다른 변수들로 대체하면 역시 단순 혹은 다중회귀식와 같은 모양을 가지게 됨을 알 수 있다. 데이터 포인트들이 비선형 모양으로 존재할 때 다항회귀나 비선형회귀를 이용해 곡선을 그릴 수 있을 것인데 다항회귀에 대해서는 이어지는 다음 글들에서 알아보도록 하자.
다항회귀 (Polynomial Regression)
단순 선형회귀 (Simple Linear Regression)
선형회귀에서 가장 간단한 단순 선형회귀부터 알아보자. 단순 선형회귀는 한 개의 독립변수(X)와 종속변수(Y)를 직선의 관계로 나타내는 것을 의미한다. 강아지 몸무게가 일일 급식량에 미치는 영향, 사용자의 접속횟수와 구매율, 또는 접속횟수와 이탈율의 관계 등을 예로 들 수 있을 것이다.
단순 선형회귀
다음과 같은 데이터들이 있을 때 추세선을 그릴 수 있을 것이다. 어떻게 선을 그으면 좋을까? 종속변수(Y)의 평균값을 가지면서 X축에 평행한 직선에서부터 시작해 선을 점차 회전시켜보자. 언제 실제 Y값과 예측Y값의 오차제곱합(SSR, Residual Sum of Squared)이 가장 작을까? 점차 선을 회전시킬수록 SSR은 줄어들 것이다.
The Main Ideas of Fitting a Line to Data
그런데 선을 많이 회전시킬수록 SSR은 다시 커지기 시작한다. 그래서 우리는 SSR이 가장 작은 Sweet Spot을 찾을 수 있을 것이다.
The Main Ideas of Fitting a Line to Data
그러고 보니 머신러닝이 학습하는 법에서 배운 손실함수 모양이 보이지 않는가? 가중치를 바꿔가며 나온 예측 Y와 실제 Y의 오차를 제곱해서 합한 (또는 평균한) 2차 함수 모양의 손실함수가 나오고 손실함수 값이 가장 작을 때 가중치를 찾는다고 했다. 그림에서 손실함수 미분값이 0에 가까운 때 일 것이다. 그리고 아무도 이 값을 손으로 계산하는 사람은 없고(?) 경사하강법으로 가중치를 조금씩 업데이트 해나가며 손실이 최소가 될 때 가중치를 찾는다고 했다.
이렇게 SSR 또는 MSE가 가장 작은 모델을 찾고 테스트 데이터를 넣어 예측 오차가 최소일 것이라 합리적인 기대를 한다. 그런데 우리가 찾은 선형회귀 모델은 얼마나 원래 데이터셋을 잘 설명하는 것일까?
SSR이나 MSE가 모델의 성능을 직관적으로 평가할 수 있는 수치라면, R²(R-squared, 회귀결정계수)는 원래 데이터셋의 분포가 회귀모델의 의해 얼마나 설명되는 지를 나타내는 평가지표이다. 데이터셋의 총 변동(SST, Total Sum of Squares)에서 회귀모델에 의해 설명된 변동(SSE, Explained Sum of Squares)이 차지하는 비중으로 계산할 수 있다. R²는 0에서 1사이의 값을 가지는데 1에 가까우면 가까울수록 독립변수들과 종속변수 간 인과관계가 높다고 판단한다.
R-squared
다중 선형회귀 (Multiple Linear Regression)
이제 변수를 추가해보자. 다중 선형회귀는 여러 개 독립변수와 하나의 종속변수의 관계를 나타내는 식이다. 변수를 추가한다고 해도 바뀌는 것은 없다. 직관적으로 강아지 일일 급식량에 미치는 요인으로 몸무게와 함께 성별이나 견종에 따른 요인을 반영한 Y값을 계산한다고 하면 예측값이 (조금) 바뀔 뿐이지 기본적으로 바뀌는 것은 없다.
다중 선형회귀
다만 시각적으로는 3차원까지가 나타낼 수 있는 한계이므로, 아래와 같이 2개의 변수와 한 개의 종속변수의 관계를 2차원 평면과 같은 선형 관계를 가진 것으로 나타낼 수 있을 것이다.
Linear Regression, Clearly Explained!!!
다중 선형회귀 역시 손실함수(MSE)가 최소가 되는 방식으로 가중치를 찾는 것, R²로 모델의 설명력을 평가하는 것 등 기본적으로 단순 선형회귀와 동일하다. 그런데 다중 선형회귀의 경우 임의의 변수가 늘어나는 것만으로도, 예를 들어 강아지 급식량과 관련된 식에 동전을 뒤집었을 때 나오는 앞면 뒷면을 0과 1로 해서 랜덤변수를 추가한다 해도 R²가 높아지는 경향이 있어 파라미터(가중치) 개수로 일종의 패널티를준Adjusted R²로 모델의 설명력을 판단하는 것이 더 정확한 것으로 본다.
Adjusted R-squared
다음 글에서는 변수가 여러 개인 다중 선형회귀에서 발생할 수 있는 다중공선성의 의미와 해결방법에 대해 알아보도록 하자.