본문 바로가기

혼자 공부하는 머신러닝+딥러닝

[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 2주차



진도 : Chapter 03

기본 미션 : Chapter.03(03-1) 2번 문제 출력 그래프 인증하기

선택 미션 :  모델 파라미터에대해 설명하기


기본 미션

 

확인 문제 2번

 

과대적합과 과소적합에 대한 이해를 돕기 위해 복잡한 모델과 단순한 모델을 만들겠습니다.

앞서 만든 k - 최근접 이웃 회귀 모델의 k 값을  1, 5, 10으로 바꿔가며 훈련해 보세요. 그다음 농어의 길이를 5에서 45까지 바꿔가며 예측을 만들어 그래프로 나타내 보세요. n이 커짐에 따라 모델이 단순해지는 것을 볼 수 있나요?


 

농어의 무게를 예측하는 k-최근접 이웃 회귀 모델을 만들어보자

회귀 모델을 학습시킬 농어 데이터를 준비해준다.

 

 

훈련 세트와 테스트 세트로 나눈다. 훈련세트는 train_input, train_target 이고 테스트 세트는  test_input, test_target 이다.

테스트 세트를 25 % 로 하는 것이 train_test_split() 함수의 defalut 이다. 

 

perch length 에서 나눠진 train_input 과 test_input은 perch_length와 마찬가지로 1차원 배열이다.사이킷런에 사용할 훈련세트는 2차원의 배열이어야 하므로 train_input과 test_input를  (-1, 1)로 reshape 해준다.  크기에 -1을 지정하면 배열의 크기를 자동으로 지정한다.

 

 

k-최근접 이웃 회귀 (k-NN Regression) 객체를 만들어준다. 농어의 길이(x)를 5에서 45까지 바꿔가며 예측하기위해 5에서 45까지 x 좌표를 만든다. 

 

 

k- 최근접 이웃 알고리즘(회귀, 분류)에서 k값은 이웃의 수이다. 예측하려는 샘플에 가장 가까운 샘플 k개를 선택한다.

사이킷런의 k-최근접 이웃 알고리즘의 기본 k값은 5이다. n_neighbors 매개변수로 k값을 다르게 지정할 수 있다.

 

k-최근접 이웃 회귀 모델의 k값을 1, 5, 10으로 바꿔가며 훈련시키고 맷플롯립을 활용하여 k값의 증가에 따른 변화를 시각화 해본다. 훈련 세트는 산점도 , 새로운 샘플 x와 x의 예측값은  선그래프로 나타낸다. 

(책의 코드와는 다르게 선그래프를 빨강색으로 설정하였다.)

 

 

k값을 줄이면 훈련 세트에 있는 국지적인 패턴에 민감해지고, k값을 늘리면 데이터 전반에 있는 일반적인 패턴을 따른다.

 k값이 줄어들면 모델이 더 복잡해지면서  훈련 세트에 더 잘 맞게 된다. 

 

 

 + 추가 

 

결정 계수는 회귀 문제의 성능 측정 도구이다. 예측이 타깃에 가까워지면  1에 가까운 값이 된다. (= 성능이 좋아짐)

k값의 변화에 따른 결정계수를 계산해보았다. k값이 줄어들면 훈련 세트의 결정계수 점수가 높아진다.

 

 

머신러닝의 모델은 훈련 세트로 훈련하므로 보통 훈련 세트의 점수가 더 높게 나온다. 

훈련 세트와 테스트 세트의 점수를 비교했을 때 훈련 세트가 너무 높으면 과대적합, 그 반대이거나 두 점수가 모두 낮으면 과소 적합이다. 과대 적합은 훈련 세트에만 잘 맞는 모델 , 과소 적합은 모델이 너무 단순하여 훈련 세트에 적절히 훈련되지 않은 경우이다. 또는 훈련 세트와 테스트 세트의 크기가 매우 작은 경우 과소 적합이 발생하기도 한다. (위의 실습의 경우가 그렇다.)

 

 

 

 

선택 미션

 

모델파라미터 


개인공부