이번 장에서는 회귀 알고리즘 2가지와 모델 규제에 대해 배웠다.
k-최근접 이웃 회귀
- 분류 문제에 사용했던 kNN 알고리즘은 회귀 문제에도 사용할 수 있다.
- 하지만 범위를 훈련 세트의 범위를 벗어나는 데이터는 예측이 잘 안 맞는다.
- 모델은 kNeightborsRegressor 를 사용.
- kNN 회귀 방식 : 이웃 값들의 평균으로 예측치를 구함.
- 회귀의 평가에는 결정계수($R^2$)를 사용함. $R^2 = {\sum(타깃 – 예측)^2 \over \sum(타겟 – 평균)^2}$
- 상대적 수치이므로 절대 수치로 비교하려면 mean_absolute_error를 쓸 수 있다.
- 과대적합 vs 과소적합
- 훈련 세트 점수는 좋은데 테스트 세트 점수가 나쁘다면? → 과대적합(훈련 세트에만 너무 잘 맞춰짐)
- 반대라면? 과소적합
- 둘다 점수가 낮은 것도 과소적합
- 데이터가 적어서 생길수도 있다
- 과소적합(훈련 세트 점수 < 테스트 세트 점수) 해결하기
- 모델을 좀 더 복잡하게 만들어서 다시 훈련 → 훈련 세트 점수는 높아지고 테스트 세트 점수는 낮아질 것.
선형 회귀
- kNN 회귀 모델의 한계 때문에 훈련 세트의 데이터 범위를 벗어나는 예측이 빗나갔다.
- 선형 회귀 : 대표적인 회귀 알고리즘, 간단하고 성능이 뛰어남. 특성이 하나인 경우 어떤 직선을 학습하는 알고리즘. 데이터의 특성을 가장 잘 나타낼 수 있는 직선을 찾는다.
- sklearn.linear_model.LinearRegression 클래스
선택 미션
- 모델 파라미터란?
- 머선러닝 모델의 구성 요소
- 알고리즘이 찾은(학습한) 값
- 선형회귀에선 기울기(coef_ 또는 weight)와 절편(intercept_ 또는 bias) 값을 뜻함.
다항회귀
- 데이터의 특성에 따라 선형이 아니라면 n차항을 늘려가며 선형회귀를 할 수 있다.
- 훈련 데이터(특성)의 제곱(2차항), 세제곱(3차항), … 을 훈련 데이터에 추가
- 이때에도 선형회귀 모델을 사용할 수 있다.
다항회귀
- 데이터의 특성에 따라 선형이 아니라면 n차항을 늘려가며 선형회귀를 할 수 있다.
- 훈련 데이터(특성)의 제곱(2차항), 세제곱(3차항), … 을 훈련 데이터에 추가
- 이때에도 선형회귀 모델을 사용할 수 있다.
특성 공학과 규제
다중 회귀
- 여러 특성을 사용하는 회귀
- 기본적으로 단순 선형 회귀와 같은 방식. 다만 여러 특성을 사용한다.
규제
- 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것 = 훈련 세트에 과대적합 되지 않도록 하는 것
- 선형 회귀에서는 계수의 크기를 작게 만드는 것을 의미
- 릿지(ridge), 라쏘(lasso)
- 릿지 : 보통 이걸 선호
- solver 매개변수 : 알고리즘 지정, sag=확률적 평균 경사하강법, saga=개선된 sag
- 라쏘 모델은 특성의 계수를 0 으로 만들 수도 있다(즉 무시). 어떤 특성이 유효한지 찾기 위한 용도로도 활용할 수 있다.
- 최적화에 좌표 하강법을 사용
- max_iter 매개변수 : 알고리즘 반복 수행 횟수 지정
- 릿지 : 보통 이걸 선호
- 훈련은 정규화한 특성으로 해야 함.
- 규제의 정도를 alpha로 조정할 수 있음.
- 이런 값들을..하이퍼파라미터(hyperparameter) 라고 부름. 사람이 정하는 값.
- 적절한 alpha 값 찾기(하이퍼파라미터 튜닝) : 이것저것 해보기. 그리고 score 계산해보기