선형회귀 모델은 지도 학습 알고리즘으로 수치 예측을 할때 주로 사용되는 기본적인 모델이면서 매우 강력하다. 데이터셋은 크게 두가지 종류의 변수로 나눌 수 있다. 독립변수와 종속변수이다. 독립 변수라 함은 어떤 영향도 받지 않는 말그대로 독립적인 변수이다. 다른 말로는 인풋 변수, 예측 변수라고도 할 수 있다. 이러한 독립 변수들에 영향을 받고 실제로 값이 변할 수 있는 변수는 종속 변수라고 하는 것이다. 쉽게 말해 우리가 구하고자 하는 아웃풋이 바로 이 종속 변수인 것이다. 선형 회귀는 이러한 독립 변수와 종속 변수의 관계를 선형식을 이용하여 설명하는 모델이다.
선형 회귀 분석을 수행하기 위해서는 다양한 가정이 기반이 된다. 하지만 항상 가정을 만족해야하는 것은 아니고 필요에 따라서 버릴 가정은 버리는 경우도 종종 있다. 우선 기본적으로 4가지의 기본 가정을 만족해야한다. 다시 한번 말하지만 이 가정이 절대적인 것은 아니고 좋은 모델을 만들기 위한 가정이다.
선형 회귀에는 평균 제곱 오차(MSE)가 등장한다. MSE라고 하면 쉽게 말해 실제 데이터와 예측으로 나온 데이터가 평균적으로 얼마나 떨어져 있는지를 의미한다. 제곱을 하는 이유는 더 차이를 더 부각하고 양수로 바꾸기 위함이다. MSE를 언급하는 이유는 선형회귀에서 MSE가 손실함수로 나오는 아웃풋이기 때문이다. 어쨌든 최종적으로 원하는 결과는 손실 함수를 최소화 시키는 것이라고 볼 수 있다. 여기서 우리가 도출해낼 수 있는 점 중 하나는 제곱을 곱했기 때문에 이식이 이차식이 될것이라는 것이다. 아래의 사진을 보면 조금더 편하게 이해를 할 수 있을 것 같다.
이러한 상황에서 우리는 결국 극점/최소점을 찾고자 하는데 어떻게 찾을 수 있을까? 이 때 경사하강법이라는 것이 등장하게 된다.
경사하강법은 미분과 밀접한 관계가 있다. 결국에 이차식에서 어느 지점에서 미분을 하게 되면 결국 그 지점에서의 기울기를 보여주게 되는데 최솟점이 되는 지점은 기울기가 평평하므로 0이 되게 된다. 점차 점차 기울기가 0으로 가까워 지는 방향으로 이동을 하며 0이 되는 지점을 찾게 되는데, 이 과정을 대부분 산을 내려가는 것과 유사하다고 한다. 당연히 이 내려가는 속도를 우리가 조정해줄 수 있지만, 산을 너무 천천히 내려가면 자세한 값들을 찾을 수는 있겠지만 속도가 매우 느려질 것이다. 반대로 내려가는 보폭을 너무 크게 한다면 최소점이 되는 지점을 놓치고 지나갈 수 있지만, 시간이 빠르다는 장점을 가지고 있다. 하지만 경사 하강법을 여러가지 문제 직면할 수 있는 다차수에 대한 그래프의 경우 글로벌 미니멈을 찾는 것이 아닌 시작하는 지점에 따라서 로컬 미니멈을 찾거나 혹은 saddle point 라는 최소도 최대도 아니지만 기울기가 0인 지점을 찾을 수도 있다.
장점
단점
아래의 코드를 이용하여 모델을 불러와 변수에 저장한다.
from sklearn import linear_model
model_lr = linear_model.LinearRegression()
분석할 X_train과 y_train을 선형회귀모델로 학습 시키기 위해 다음과 같은 코드를 실행한다.
model_lr.fit(X_train, y_train)
R2score과 같이 정확도를 확인하고자 한다면 다음과 같은 코드를 실행시키면 된다.
model_lr.score(X_train, y_train) #훈련 데이터의 경우
model_lr.score(X_valid, y_valid) #검증 데이터의 경우