알파 : 규제의 강도 조절
단 목적은 조금 다릅니다.
릿지의 알파 : 계수의 크기 제한이 목적
랏소의 알파 : 불필요한 변수제거가 목적
사례 : 주택 가격 예측, 주식 가격 분석, 수요 예측
이유 : 주택 크기와 가격 사이 관계 분석 등
사례 : 다중 공선성(모델 변수간의 상관관계가 높아서 예측에 영향을 미치는 것)
이 존재하는 데이터, 과적합의 위험이 있는 복잡한 데이터셋에서 사용
이유 : 과적합을 방지하고, 다중 공선성 문제를 완화합니다. 모델의 일반화 능력이 향상
평가지표 : MSE = 모델이 데이터에 얼마나 잘 적합되었는가. + 규제의 영향 평가 가능
사례 : 변수 선택이 중요한 모델링 상황, 고차원 데이터셋에서 변수의 수를 줄이고 싶을 때 사용
예시 : 유전자 데이터 분석, 마케팅 데이터에서 중요 변수 선택 등에 활용
장점: 변수선택을 자동으로 해서 모델을 단순화 하고, 과적합 방지할 수 있음
사례 : 변수 선택이 중요한 모델링 상황, 고차원 데이터셋에서 변수의 수를 줄이고 싶을 때 사용
이유 : 변수선택을 자동으로해서 모델을 단순화하고, 과적합을 방지할 수 있음. 모델의 해석이 쉬
# 다음은 이번 노드에서 학습했던 데이터를 로드하고,
# 랜덤포레스트, xgboost 모델을 각각 돌려보는 과정입니다.
# 다시 보며 그 과정을 복습하고 실행해보세요.
# 데이터 로드
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_breast_cancer
def make_dataset():
bc = load_breast_cancer()
df = pd.DataFrame(bc.data, columns=bc.feature_names)
df['target'] = bc.target
X_train, X_test, y_train, y_test = train_test_split(
df.drop('target', axis=1), df['target'], test_size=0.5, random_state=1004)
return X_train, X_test, y_train, y_test
X_train, X_test, y_train, y_test = make_dataset()
# 랜덤포레스트
from sklearn.ensemble import RandomForestClassifier
model1 = RandomForestClassifier(
n_estimators=500,
max_depth=5,
random_state=0)
model1.fit(X_train, y_train)
pred1 = model1.predict_proba(X_test)
print(accuracy_score(y_test, pred1[:,1].round()))
# xgboost
from xgboost import XGBClassifier
model2 = XGBClassifier(
n_estimators=500,
max_depth=5,
random_state=0,
eval_metric='logloss',
objective = 'binary:logistic',
use_label_encoder=False)
model2.fit(X_train, y_train)
pred2 = model2.predict_proba(X_test)
print(accuracy_score(y_test, pred2[:,1].round()))