[머신러닝] 7. 지도학습(분류)_추가

PurinYun·2023년 11월 24일
0

AIffel

목록 보기
35/75

알파 : 규제의 강도 조절

단 목적은 조금 다릅니다.

릿지의 알파 : 계수의 크기 제한이 목적

랏소의 알파 : 불필요한 변수제거가 목적

1. 선형 회귀 :

사례 : 주택 가격 예측, 주식 가격 분석, 수요 예측
이유 : 주택 크기와 가격 사이 관계 분석 등

2. 릿지 회귀 (L2규제)

사례 : 다중 공선성(모델 변수간의 상관관계가 높아서 예측에 영향을 미치는 것)
이 존재하는 데이터, 과적합의 위험이 있는 복잡한 데이터셋에서 사용
이유 : 과적합을 방지하고, 다중 공선성 문제를 완화합니다. 모델의 일반화 능력이 향상
평가지표 : MSE = 모델이 데이터에 얼마나 잘 적합되었는가. + 규제의 영향 평가 가능

3. 라쏘 회귀 (L1규제)

사례 : 변수 선택이 중요한 모델링 상황, 고차원 데이터셋에서 변수의 수를 줄이고 싶을 때 사용
예시 : 유전자 데이터 분석, 마케팅 데이터에서 중요 변수 선택 등에 활용
장점: 변수선택을 자동으로 해서 모델을 단순화 하고, 과적합 방지할 수 있음

4. 엘라스틱넷 회귀 (L1+L2규제)

사례 : 변수 선택이 중요한 모델링 상황, 고차원 데이터셋에서 변수의 수를 줄이고 싶을 때 사용
이유 : 변수선택을 자동으로해서 모델을 단순화하고, 과적합을 방지할 수 있음. 모델의 해석이 쉬

# 다음은 이번 노드에서 학습했던 데이터를 로드하고,
# 랜덤포레스트, 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()))
profile
Fantivation

0개의 댓글