Pudding

말랑말랑말랑 곰도리 푸딩 한 입에 먹기 챌린지

Machine Learning

[혼공머신] 2주차_회귀 / 특성 공학 / 변환기(Transformer)

sse 2025. 1. 19. 22:52
2주차

Ch. 03 회귀 알고리즘과 모델 규제

03-1 k-최근접 이웃 회귀

지도학습 알고리즘은 크게 분류회귀로 나뉜다.

분류는 ch.2에서 해본 내용이고, 회귀는 어떤 숫자를 예측하는 것이다!

k-최근접 이웃은 회귀에도 사용할 수 있는데, 가까운 샘플 k개의 수치의 평균으로 예측해준다.

k-최근접 이웃 분류와 k-최근접 이웃 회귀 모두 fit(), score(), predict()를 사용할 수 있다.

하지만 다른점은! 

회귀에서 score()를 사용하면 정확도가 아닌 결정계수 값이 나온다.

회귀에서의 score() : 결정계수 값
- 0에 가까울 때 > 타깃의 평균 정도 예측
- 1에 가까울 때 > 예측이 타깃에 아주 가까워 짐

결정계수 대신 sklearn.metrics패키지의 mean_absolute_error를 사용해서 평균 절댓값 오차를 확인할 수도 있다.

이어서 훈련한 모델을 사용해 테스트 세트와 훈련 세트의 결정계수를 비교해보자.

테스트 세트와 훈련 세트의 점수에 따라 과대적합인지, 과소적합인지를 확인해볼 수 있다.

과대적합 / 과소적합
과대적합 : 훈련세트의 점수가 좋지만 테스트 세트의 점수가 굉장히 나쁜 경우
> 훈련 세트에만 잘 맞기 때문에 새로운 샘플에 대해 잘 동작하지 않음
과소적합 : 훈련세트보다 테스트 세트의 점수가 높거나 두 점수가 모두 너무 낮은 경우
> 모델이 너무 단순하여 적절히 훈련되지 않음
> 훈련 / 테스트 세트의 크기가 너무 작아도 발생함

k-최근접 이웃의 경우 과대적합일 경우 k값을 늘려 보완할 수 있고,

과소적합일 경우 k값을 줄여서 보완할 수 있다.

03-2 선형 회귀

k-최근접 이웃 모델은 데이터가 일정 이상 큰 경우 이웃으로 잡히는 샘플이 모두 같기 때문에

예측값(이웃들의 평균값)이 계속 동일하게 나오게 된다.

이러한 한계점을 보완하기 위해 선형 회귀를 사용할 수 있다!

선형 회귀 알고리즘은 LinearRegression 클래스를 사용하고, fit(), score(), predict() 메서드도 그대로 사용할 수 있다.

선형 회귀 : 특성을 가장 잘 나타내는 직선을 학습하는 알고리즘
coef_ : 학습한 직선의 기울기
intercept_ : 학습한 직선의 절편

 

비슷하게 다항 회귀는 최적의 곡선을 찾는 알고리즘이다.

다항 회귀 : 특성을 가장 잘 나타내는 곡선을 학습하는 알고리즘
coef_ : 학습한 곡선의 기울기
intercept_ : 학습한 곡선의 절편

03-3 특성 공학과 규제

다중 회귀 : 여러 개의 특성을 사용한 선형 회귀
특성 공학 : 기존의 특성을 사용해서 새로운 특성을 뽑아내는 작업

특성 공학 작업을 하기 위해서 사이킷런의 변환기(Transformer)를 사용할거다.

여기서 주의할 점은 fit()과 transform() 메서드를 차례대로 호출해야한다는 점이다.

훈련을 해야 변환이 가능하다고 한다!

fit() : 새롭게 만들 특성 조합을 찾음 / 타깃 데이터가 필요하지 않음
transform() : 실제로 데이터를 변환함

규제는 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것이다.

선형 회귀 모델은 기울기의 크기를 작게 만들어 규제할 수 있다.

 

기본 과제 : 3-1 확인문제 2

k-최근접 이웃 회귀 모델의 k값을 변화시키면서 그래프를 그리는 문제였다!

빈칸 부분에는 각각 n과 knr.predict(x)를 넣어주었당.

그리고 출력된 그래프는 각 n이 1, 5, 10 일때 다르게 나왔다!

신기하당 ㅎㅎ


이번 챕터를 통해 특성을 새로 만들 수 있다는 점을 처음 알게 되었다(!!)

완전 신기하고 앞으로도 잘 써먹어야겠다고 느껴진다 ㅎㅎ

근데 과대적합이나 과소적합이 생기지 않도록 잘 조절하는게 좀 어렵다 .. ㅜ

나 같은 경우는 두뇌풀가동을 좀 해야돼..........