ML

DAY 7 ( 정규화 평가지표 MSE, MAE, RMSE, R2_SCORE, Lasso(L1), Ridge(L2), Elastic Net, Data Scaling 실습 )

도키마 2024. 7. 9. 16:00



 

 

 

 

오늘의 노래 추천 🛳️

 

 
항해
아티스트
김세정
앨범
문(門)
발매일
1970.01.01

 

비오는 날엔 시원한 노래 듣자



 


 

 

 

 

 

 

 

 

 

 

 

 

DAY 7

 

 

 

 

 

 

 

 

 

 

 

 

 



 

[ Linear Regression Model ]

 

선형 회귀 모델

 


 

 

 

y = ax + b

* 기울기, 절편

 

linear regression 함수

 

x1, x2 등의 각각 특징의 기울기 ( 가중치 ) 를 구함

 

 

 

 

model.coef_, model.intercept_

 

ㅡ > 평균제곱오차가 최소인 w 와 b 값을 구한다

 

 

 

 

cost function

 

비용함수로 수식을 검증

 

 

 

 

 

 

 

 

" 경사하강법 "

 

 

 

 

 

 

 

 

 

 

ㅡ Linear Model 정규화 ㅡ

Reguralization ( Lasso, Ridge )

 

Lasso, Ridge

 

모형이 과도하게 최적화 되었을 때 제약조건을 통해

ㅡ> 선형회귀 계수(w) 의 값에 제약을 주어 overfit 방지

 

Lasso, Ridge

 

Lasso : 모든 원소를 똑같은 힘으로 규제해 특정 계수들은 0이됨

* 특정선택 ( Feature Selection ) 이 자동으로 이뤄짐

** alpha 으로 규제의 광도 설정

 

Ridge : 모든 원소를 골고루 규체를 적용해 0에 가깝게 수렴하도록 만듬

 

ElasticNet : L1, L2 모델을 적절히 혼합해 사용



 

 

ㅡ Lasso 적용 ㅡ

Lasso

 

Lasso

 

linear_model 에서 Lasso를 import 하고  alpha 값을 조정



 

 

ㅡ Lasso 모델 학습 후 weight 값 확인  ㅡ

coef_

 

coef_

 

np.sum, !=0

 

 

 

 

ㅡ Lasso 모델 train, test 의 score 값 비교  ㅡ

score

 

score

 

규제값 ( alpha ) 을 늘려가면서 조절



 

 

Ridge 적용

Ridge

 

Ridge


linear_model 에서 Ridge을 import 하고 alpha 값을 조정

 

 

 

 

ㅡ Ridge 모델 학습 후 weight 값 확인  ㅡ

coef_

 

coef_

 

np.sum, !=0

 

 

 

 

ㅡ Ridge 모델 train, test 의 score 값 비교  ㅡ

score

 

score

 

규제값 ( alpha ) 을 늘려가면서 조절

 

 

 


ㅡ 정규화 모델 평가지표 MSE, MAE, RMSE, R2 SCORE ㅡ

MSE, MAE, RMSE, R2 SCORE

 

MSE : 평균제곱오차

MAE : 평균절대오차

R2 SCORE : 결정계수, R2 스코어

RMSE : np.sqrt (MSE)

* RMSE 는 sklearn 에서 제공안됨

 

정규화 평가지표 ㅡ> 실제 답안지와 예측 답안지가 있어야함

 

 

 

 

ㅡ Lasso 평가지표 import ㅡ

MSE, RMSE, MAE, R2 score 

 

import

 

예측 답안지 생성

 

 

 

 

ㅡ Lasso 평가 ㅡ

MSE, RMSE, MAE, R2 score 

 

MSE MAE RMSE R2_score



 

 

ㅡ Ridge 평가 ㅡ

예측 답안지 생성 

 

predict

 

MSE MAE RMSE R2_score



 

 

ㅡ 평가지표 결과 확인 ㅡ

결과 확인

 

Lasso
Ridge



 

 

ㅡ 정규화 모델 parameter tuningㅡ

lasso parameter tuning

 

list



 

 

ㅡ 반복문으로 리스트에 값 넣어주기 ㅡ

Lasso

 

for

 

for 반복문에서 모델을 생성, 학습, 예측 한뒤 예측값을 통해 RMSE 값을 구하고 리스트에 저장



 

 

ㅡ 구한 RMSE 값을 그래프로 작성 ㅡ

plt.plot

 

plt.plot
plt.plot



 

 

ㅡ 반복문으로 리스트에 값 넣어주기 ㅡ

Ridge

 

ridge

 

for 반복문에서 모델을 생성, 학습, 예측 한뒤 예측값을 통해 RMSE 값을 구하고 리스트에 저장



 

 

ㅡ 구한 RMSE 값을 그래프로 작성 ㅡ

plt.plot

 

plt.plot
그래프 결과



 

 

ㅡ ElasticNet 을 활용한 정규화 진행 ㅡ

plt.plot

 

 l1_ratio : L1, L2 의 규제 비율을 나타냄

 

ElasticNet, l1_ratio



 

 

ㅡ weight 값 확인 ㅡ

coef_

 

 

!=0, np.sum



 

 

ㅡ 예측값 생성 ㅡ

predict

 

predict



 

 

ㅡ 예측값 생성 및 MSE, MAE, RMSE, R2_SCORE 값 구하기 ㅡ

MSE, MAE, RMSE, R2_SCORE

 

MSE, MAE, RMSE, R2_SCORE



 

 

ㅡ 값 확인 ㅡ

MSE, MAE, RMSE, R2_SCORE

 

MSE, MAE, RMSE, R2_SCORE



 

 

 

 

 

 

 

 

[ Data Scaling ]

 

데이터 스케일링

 


 

 

 

특성 ( Feature ) 과 범위 ( range ) 를 정규화하는 작업

* 특성마다 범위가 다를경우 학습하기 어려울 수 있음

 

학습의 안정성과 속도를 개선하지만 모델 종류나 특성에 따라 특성의 개수를 유지하는 게 좋을 수도 있음

 

 

스케일링의 종류와 예시

 

 

 

 

ㅡ Standard Scaler ㅡ

 

변수의 평균, 표준편차를 이용해 정규분표 형태로 변환 ( 평균 0, 분산 1 )

* 이상치 ( Outlier ) 에 민감함

 

 

 

ㅡ Robust Scaler ㅡ

 

변수의 사분위수를 이용해 변환

* 이상치 ( Outlier ) 가 있는 데이터 변환 시 사용

 

 


ㅡ MinMax Scaler ㅡ

 

변수의 Max, Min 값을 이용해 

 

 


ㅡ Normalizer Scaler ㅡ

 

 

 

 


ㅡ data scaling code ㅡ

스케일링 코드

데이터 스케일링 코드

 

sklearn.processing 에서 scaler 를 불러온 뒤 객체 생성 후 학습시키고 transform 으로 스케일 변환



 


ㅡ fit, transform 스케일링 방법 ㅡ

fit, transform

 

fit_transform () : fit, transform 기능을 한번에 처리

fit (), transform () : fit, transform 기능을 따로 처리

 

fit_transform ()

 

fit, transform

 

* fit 은 한번만



 

 

 

 

[ data scaling 실습 ]

 

 

 

 

ㅡ 스케일러 import ㅡ

MinMaxScaler

 

MinMaxScaler



 

 

ㅡ MinMax scaler 모델 생성 및 학습ㅡ

MinMaxScaler, fit_transform

 

fit_transform

 



 

ㅡ Standard scaler 모델 생성 및 학습ㅡ

StandardScaler, fit_transform

 

fit_transform




 

 

[ iris 데이터를 이용한 data scaling 실습 ]

 

 

 

 

ㅡ data 불러오고 DataFrame 으로 만들기 ㅡ

load_iris, pd.DataFrame

 

load_iris, pd.DataFrame

 

describe ()
mean, var

 

describe 를 통해 min, max 값 등을 확인, mean,var 값 확인

 

 

 

 

ㅡ Standard 스케일링 ㅡ

StandardScaler (), fit_transform

 

fit_transform, StandardScaler



 

 

ㅡ Standard 스케일링된 data를 DataFrame 형태로 변환 ㅡ

pd.DataFrame

 

pd.DataFrame



 

 

ㅡ 스케일된 데이터의 mean,var 값 확인 ㅡ

mean, var

 

mean, var

 



 

 

ㅡ MinMax 스케일링 ㅡ

MinMaxScaler (), fit_transform

 

pd.DataFrame
MinMaxScaler, fit_transform ()

 

* df 명이 겹치치 않도록 DataFrame 을 새로 생성해주고 MinMax Scaling 진행 



 

 

ㅡ MinMax 스케일링된 data를 DataFrame 형태로 변환 ㅡ

pd.DataFrame

 

pd.DataFrame



 

 

ㅡ MinMax 스케일링된 data를 DataFrame 형태로 변환 ㅡ

pd.DataFrame

 

 

 

 

 


수정중

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


 

 



 

 

 

 

 

BYE