[혼공학습단8기] Chapter3🌍 회귀 알고리즘과 모델 규제- 2. 선형 회귀

hanjuli94·2022년 7월 18일
0

혼공학습단

목록 보기
6/10

실습하기 앞서,

k-최근접 이웃 알고리즘의 한계 🤦

k-최근접 이웃 회귀 알고리즘으로 훈련된 모델을 통해 길이가 긴 농어의 무게를 예측해보았다.

1) k-최근접 이웃 회귀 알고리즘으로 농어 무게 예측하기

길이가 50cm인 농어의 무게를 1,033g으로 예측하였다.
근데 실제로는 무게가 더 나간다고 하니, 예측이 잘못되었다는 것일까?

2) 최근접 이웃을 산점도에 표기하기

어떤 이웃들을 통해서 무게를 예측하였는지 산점도에 표기해본다.

훈련데이터의 샘플들의 평균 무게를 통해 예측하였음을 알 수 있다.

그럼 그 3개의 샘플의 평균은 어떻게 될까?

😅 앞서 길이가 50cm인 농어의 예측 무게와 동일하다..!
그렇다면 길이가 더욱 길어진다고 해도 동일한 값으로 예측 할 것임을 알 수 있다.

**3) 최근접 이웃 회귀 한계를 확신하기

길이가 더욱 더 긴 농어의 무게를 예측해보자.

🔔 이로써 k-최근접 이웃 회귀 알고리즘의 한계가 있음을 알 수 있다.


실습하기

데이터는 위에서 준비하였기 때문에, 바로 모델을 만들어어 학습해본다.

1) 훈련 및 예측하기

  • 선형회귀 패키지: sklearn.liner_model
  • 선형회귀 클래스: LinearRegression

50cm 농어의 무게를 선형회귀로 학습한 모델로는 1,241g을 예측했다.


잠시만요! "선형회귀" 알고리즘과 모델 파라미터 📈

  • 선형회귀(linear regression) 알고리즘: 특성이 하나인 경우 어떤 직선을 학습하는 알고리즘

선형회귀의 경우 어떤 직선에 대한 부분이 예측의 key라고 볼 수 있다.
그럼 어떤 직선의 모양은 어떻게 될까?
다행히 우리는 학교에서 배웠던 직선의 방정식을 기억해내면 된다.

직선의 방정식(y값) = (기울기 × x값) + 절편

기울기와 절편은 다행스럽게도 선형회귀 클래스를 통해 알 수 있다.

  • 기울기: LinearRegression().coef_
  • 절편: LinearRegression().intercept_

실습데이터로 훈련한 선형회귀 모델의 기울기와 절편은 아래와 같다.

이렇게 머신러닝 모델이 찾은 기울기와 절편과 같은 값을 모델 파라미터(model parameter)라고 한다.


2) 훈련된 모델 확인하기

그럼 우리가 훈련한 모델의 1차방정식을 확인해보자.

이 직선이 최적의 1차방정식이라고 볼 수 있다.

3) 결정계수 확인하기

보정계수가 약간 차이가 나지만 과대적합이라고 볼 수 없으며, 전체적으로 점수가 낮은 것으로 판단되어 진다.

그렇다면 무엇이 문제일까?

앞서 보았던 직선 방정식을 보면 무게가 0이하로 내려가는 경우가 발생하는데, 현실에서는 있일 수 없는 일이다.
그럼 직선이 아닌 곡선으로 모델을 훈련해보자.


잠시만요! "다항회귀" 알고리즘 📈

  • 다항회귀(Polynomial Regression) 알고리즘: 특성이 하나인 경우 어떤 곡선을 학습하는 알고리즘

선형회귀가 어떤 직선에 대한 학습이라면,
다항회귀는 어떤 곡선에 대한 학습이다.

` 곡선의 방정식(y값) = (a × x값의 제곱) (b × x값) + 절편(c)

  • 항(a, b) 값: LinearRegression().coef_
  • 절편(c): LinearRegression().intercept_

4) 다항회귀를 통한 훈련 및 예측하기

  • column_stack ➡ 활용하여 x값의 제곱의 데이터셋 생성하기

  • 훈련하기

  • 예측하기

    선형 회귀로 예측한 값보다 더 높은 값을 예측했다!

5) 훈련된 모델 확인하기

6) 결정계수 확인하기


확인문제

  1. 선형 회귀 모델이 찾은 방정식의 계수를 무엇이라고 부르나요?
    ① 회귀 파라미터
    ② 선형 파라미터
    ③ 학습 파라미터
    ☞ ④ 모델 파라미터
  1. 사이킷런에서 다항 회귀 모델을 훌련할 수 있는 클래스는 무엇인가요?
    ☞ ① LinearRegression
    ② PolynomialRegression
    ③ KNeighborsClassifier
    ④ PolynomialClassifier

💡 헷갈릴수 있으나, 선형회귀/다항회귀/다중회귀를 지원하는 클래스는 LinearRegression 이다.

0개의 댓글