6강 - 회귀 문제를 이해하고 k-최근접 이웃 알고리즘으로 풀어 보기

2021. 6. 17. 20:47ICT 멘토링/혼자 공부하는 머신러닝+딥러닝

6강 - 회귀 문제를 이해하고 k-최근접 이웃 알고리즘으로 풀어 보기

학습 로드맵

지난 시간에...

5강 복습

농어의 무게를 예측하라

이진 분류 타깃 0,1

회귀(regression) 타깃 임의의 숫자

 

회귀

골턴 - 19세기 통계학자

 

k-최근접 이웃 회귀(knn)

회귀와 분류의 차이

분류
회귀

농어의 길이만 사용

import matplotlib.pyplot as plt

plt.scatter(perch_length, perch_weight)	//weight 타깃
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

훈련 세트 준비

from sklearn.model_selection import train_test_split

train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight, random_state=42)

train_input = train_input.reshape(-1, 1)
test_input = test_input.reshape(-1, 1)

reshape(-1, 1) - numpy에 맞게 데이터 정렬. 열을 하나로 결정, 행은 주어진대로!

 

분류가 아닌 회귀라서 split할 때 straify 사용 안 함. default = false

reshape(-1,1) 사용 후

회귀 모델 훈련

from sklearn.neighbors import KNeighborsRegressor

knr = KNeighborsRegressor()
knr.fit(train-input, train_target)

knr.score(test_input, test_target)
//0.9928094061010639
from sklearn.metrics import mean_absolute_error

test_prediction = knr.predict(test_error

test_prediction = knr.predict(test_input)
mae = mean_absolute_error(tset_target, test_prediction)
print(mae)
//19.157142857142862

결정계수

분류 - Classifier

 - 정확도

회귀 - Regressor

 - R^2(결정계수)

 

예측이 평균과 비슷해지면 우측항이 1이 되어 R^2가 0이됨

예측이 타깃을 정확히 맞추면 우측항이 0이 되어 R^2가 1이 됨

0~1 값 가능.

1에 가까우면 좋은 회귀 모델 0에 가까우면 좋지 않은 회귀 모델로 결정 가능!

 

과대적합과 과소적합

knr.score(train_input, train_target)	//과소적합(underfitting)
//0.9698823289099255

knr.score(test_input, test_target)
//0.9928094061010639

과소적합 - training set이 test set보다 큰 게 일반적인데 test set이 training set 보다 크게 나오는 경우.

              training set가 과소적합됨(underfitting)

 

과대적합 - training set이 0.99 test set이 0.6인 경우처럼 테스트 세트와 훈련 세트가 너무 크게 차이가 나는 경우.

              훈련 세트는 매우 잘 fit 되어야 함.

이웃 개수 줄이기

knr.n_neighbors = 3					
//기본값은 5인데 3으로 설정하여 실행
knr.fit(train_input, train_target)

print(knr.score(train_input, train_target))
//0.9804899950518966
print(knr.score(test_input, test_target))
//0.974645996398761

k에 따른 적합도
k가 1일 때 과대적합, k가 42일때 과소적합, k가 3일 때 적절.

k 값은 우리가 직접 정해줘야 함

지정할 수 있는 매개변수 - 하이퍼 파라미터

 

참고자료

https://www.youtube.com/watch?v=0mrLRkgbjA0&list=PLVsNizTWUw7HpqmdphX9hgyWl15nobgQX&index=6