본문 바로가기
혼공학습단

[혼공머신] 2주차(1)_KNN 회귀

by netsgo 2024. 1. 7.
 

혼자 공부하는 머신러닝+딥러닝 - 예스24

- 혼자 해도 충분하다! 1:1 과외하듯 배우는 인공지능 자습서 이 책은 수식과 이론으로 중무장한 머신러닝, 딥러닝 책에 지친 ‘독학하는 입문자’가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있

www.yes24.com

 

KNN 회귀


KNN은 회귀에서도 사용할 수 있다. KNN 회귀는 예측하려는 샘플에 가장 가까운 k개의 샘플을 확인하고, 샘플에서 수치들의 평균을 구하면 된다.

 

KNN 최근접 이웃 회귀

 

KNN 회귀는 정확한 숫자를 맞출 수 없기 때문에 예측값을 구하게 된다. 이 예측값을 평가하기 위해 결정계수(coefficient of determination, R^2)를 사용한다.

 

과대 적합(Overfitting)과 과소 적합(Underfitting)


훈련 데이터보다 테스트 데이터에서 평가 점수가 높게 나오는 경우 과소 적합이라고 할 수 있다. 데이터 셋의 크기가 작은 경우도 과소 적합이 발생하지만 이번 예시에서는 일반적인 경우에 대해서 언급하고 있다.

 

과소 적합 문제를 해결하기 위해서는 모델을 복잡하게 만들면 된다. KNN 회귀에서 모델을 더 복잡하게 만드는 방법은 이웃의 개수 k 값을 줄이는 것이다. 이웃의 개수를 줄이면 훈련 데이터에 있는 국지적인 패턴에 민감해지고, 이웃의 개수를 늘리면 데이터 전반에 있는 일반적인 패턴을 따르게 되기 때문이다. k 값을 바꾸기 위해서는 n_neighbors 값을 수정하면 된다.

 

KNN 회귀의 문제점


KNN 회귀는 가장 가까운 샘플을 찾아 수치 값을 평균하기 때문에 새로운 샘플이 훈련 데이터 범위를 벗어나면 엉뚱한 값을 예측할 수 있다.

훈련 데이터를 벗어난 샘플의 경우 엉뚱한 값을 예측할 수 있다.

 

선형 회귀(LInear Regression)


선형 회귀는  널리 사용되는 대표적인 회귀 알고리즘으로 어떤 특성 값을 예측하기 위한 직선을 학습하는 알고리즘이다.

 

두 번째 그래프가 특성 값을 잘 설명하는 직선의 방정식을 나타냈다고 할 수 있다. 선형 회귀는 이러한 직선의 방정식을 찾는 것이며 사이킷런에는 sklearn.linear_model 패키지 아래에 LinearRegression 클래스로 선형 회귀 알고리즘을 구현해 놓았다. 하나의 직선을 그리기 위해서는 기울기와 절편이 필요하다. 선형 회귀는 이 기울기와 절편을 찾는 과정이고 사이킷런의 LInerRegression 클래스로 찾은 기울기와 절편은 lr.coef_와 lr.intercept_에 저장되어 있다.

 

다항 회귀(Polynomial Regression)


 

위의 그래프는 선형 회귀로 구한 직선이 데이터를 잘 표현하고 있다고 말하기 어렵다. 산점도를 보면 데이터가 일직선으로 분포되어 있지 않기 때문이다. 그렇다면 최적의 직선을 찾기보다 최적의 곡선을 찾으면 어떨까?

 

 

위의 2차 방정식을 표현하려면 길이를 제곱한 항이 필요하다.

 

 

길이를 제곱한 항을 추가하여 다항 회귀의 Linear Regression 모델을 구했다. Linear Regression 모델의 기울기와 절편은 coef_, intercept_ 속성에 저장되어 있다.