본문 바로가기
개발노트/머신러닝

[머신러닝] 특성공학과 규제 #2

by 전지적진영시점 2023. 3. 22.
반응형

개발 환경

---------------------------------

OS : Mac

개발 툴 : colab 

개발 언어 : python

---------------------------------

 

https://jpointofviewntoe.tistory.com/146

 

[머신러닝] 특성공학과 규제 #1

개발 환경 --------------------------------- OS : Mac 개발 툴 : colab 개발 언어 : python --------------------------------- 특성 공학 기계 학습 및 패턴인식 분야에서 중요한 개념 중 하나로, 원시 데이터로부터 유용

jpointofviewntoe.tistory.com

 

<이전 포스팅 소스>

 

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
df = pd.read_csv('https://bit.ly/perch_csv_data')
perch_full = df.to_numpy()

fish_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0,
       115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0,
       150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0,
       218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0,
       556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 820.0,
       850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 1000.0,
       1000.0])

train_input, test_input, train_target, test_target = train_test_split(perch_full, fish_weight, random_state=42)


from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(include_bias=False)

poly.fit(train_input)
train_poly = poly.transform(train_input)

test_poly = poly.transform(test_input)

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_poly)
train_sscaled = ss.transform(train_poly)
test_sscaled = ss.transform(test_poly)

 

 

 

 

3. 모델 학습

 

이번 실습에서는 훈련 데이터의 특성이 3개이므로 다중 회귀 모델을 훈련하겠습니다.

이는 선형 회귀 모델을 훈련하는 것과 같습니다.

 

규제

규제는 머신러닝 모델이 너무 복잡해져서 overfitting 되는 것을 방지하기 위한 기법입니다.

모델이 overfitting이 되면, 학습 데이터에 대해서는 정확도가 높지만 새로운 데이터에 대해서는 예측 성능이 낮아지는 문제가 발생할 수 있습니다. 

 

즉 규제는 모델의 복잡도를 감소시키는 방법 중 하나로, 가중치의 크기를 제한하여 모델이 간단해지도록 합니다.

이를 통해 일반화 성능을 개선하고, 새로운 데이터에 대한 예측 성능을 향상시킵니다.

 

선형회귀 모델의 경우 특성에 곱해지는 계수(또는 기울기)의 크기를 작게 만드는 일입니다.

 

제가 그림을 그려보았습니다. ㅎㅎ

점점 그림 실력이 좋아지는 것 같습니다

정규화

사이킷 런에서 제공하는 StandardScaler 클래스를 사용하여 정규화를 진행하겠습니다.

선형회귀 모델에 규제를 적용할 때 계수 값의 크기가 서로 많이 다르면 공정하게 제어되지 않을거기 때문입니다.

StandardScaler 클래스는 변환기의 하나입니다.

 

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_poly)
train_sscaled = ss.transform(train_poly)
test_sscaled = ss.transform(test_poly)

 

먼저 standardScaler() 클래스의 객체를 ss로 초기화했습니다.

그런 다음 PolynomialFeatures 클래스로 만든 train_poly를 사용해 이 객체를 훈련합니다.

 

train_sscaled = ss.transform(train_poly)
test_sscaled = ss.transform(test_poly)

 

꼭 훈련세트로 학습한 변환기를 사용해서 테스트 세트까지 변환해야 합니다.

 

다음 포스팅에서 릿지 회귀와 라쏘 회귀를 다루고 특성공학과 규제 포스팅을 마치겠습니다!

 

https://link.coupang.com/a/Rzrh2

 

Apple 2023 맥북 프로 14 M2

COUPANG

www.coupang.com

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

https://www.buymeacoffee.com/jinyyyyleeG

 

반응형

댓글