언어/파이썬

머신러닝with파이썬6강(1)_선형회귀, 릿지회귀

디지털랫드 2024. 3. 13. 12:10

1. 선형회귀

  • 단순 선형회귀와 다중 선형회귀가 있지만 흔히 사용하는 것은 다중 선형회귀입니다.
  • Feature가 한 개인 경우가 드물기 때문에 보통 feature가 두 개 이상인 다중 선형회귀를 만들게 됩니다.

2. 비용함수

  • 데이터와 모델 간의 거리를 계산합니다.
  • 비용함수(cost function) 또는 손실함수, 목적함수라 부르기도 합니다.
  • 오차(error)를 계산합니다. (실제 값과 예측값의 차이)
  • 평균 제곱 오차를 최소화하는 파라미터를 찾습니다.

3. 경사하강법

  • 오차를 찾아 나가는 방식
  • 비용함수의 기울기 절대값이 가장 작은 지점을 찾아서 오차가 작은 모델을 만듭니다.

 

 
 
실행 완료
 

1) 데이터 불러오기


 
 
실행 완료
[3]:
((353, 10), (89, 10), (353,), (89,))

2) 선형 회귀


 
 
실행 완료
[5]:
2707.6236708320466

 

 

이번 시간 정리


1. 릿지 회귀

  • 오버피팅 문제로 규제(regularization)를 적용한 모델
  • 규제 방식: L2 규제
  • 파라미터(alpha) 값을 활용해 조절
  • alpha 값이 커질수록 회귀 계수 값을 작게 만듦

*규제를 통해서 모델의 성능을 올릴 수 있습니다.


아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

1) 릿지 회귀


 
 
실행 완료
[11]:
3522.1129142470336
 
 
실행 완료
[10]:
alpha1agesexbmibps1s2s3s4s5s6
-14.226237
-252.596638
478.237599
374.575253
-1027.276426
669.703861
228.639350
209.055969
787.865881
51.760485
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/134143487.py in <module>
      1 # 릿지 회귀 (alpha=10)
----> 2 model = Ridge(alpha=10)
      3 model.fit(X_train, y_train)
      4 pred = model.predict(X_test)
      5 mean_squared_error(y_test, pred)

NameError: name 'Ridge' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2718849389.py in <module>
      1 # 회귀 계수 (alpha 10)
----> 2 coef['alpha10'] = model.coef_
      3 coef

NameError: name 'coef' is not defined
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/425803006.py in <module>
      1 # 릿지 회귀 (alpha=0.05)
----> 2 model = Ridge(alpha=0.05)
      3 model.fit(X_train, y_train)
      4 pred = model.predict(X_test)
      5 mean_squared_error(y_test, pred)

NameError: name 'Ridge' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/337844646.py in <module>
      1 # 회귀 계수 (alpha 0.05)
----> 2 coef['alpha0.05'] = model.coef_
      3 coef

NameError: name 'coef' is not defined