Table of Contents
728x90
Lasso (L1 정규화)와 랜덤 포레스트를 함께 사용하는 것은 일반적인 방법 중 하나입니다. Lasso를 사용하여 특성 선택을 먼저 수행하고, 그 후에 선택된 중요한 특성들만을 사용하여 랜덤 포레스트와 같은 복잡한 모델을 학습하는 방식입니다. 이 방법은 모델의 복잡도를 줄이고, 과적합을 방지하며, 해석 가능성을 높이는 데 도움이 됩니다.
단계별 접근 방법
Lasso를 사용하여 특성 선택:
먼저 Lasso 회귀를 사용하여 중요한 특성을 선택합니다. Lasso는 L1 정규화로 인해 일부 특성의 가중치를 0으로 만들기 때문에, 중요한 특성만을 남기게 됩니다.랜덤 포레스트를 사용하여 예측 모델 생성:
선택된 중요한 특성을 사용하여 랜덤 포레스트 모델을 학습합니다. 랜덤 포레스트는 여러 개의 결정 트리를 결합하여 높은 예측 성능을 발휘하는 앙상블 기법입니다.
예제 코드
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 데이터 로드 및 분할
# 데이터 프레임 df에 특성 X와 타겟 y가 있다고 가정
X = df.drop('target', axis=1)
y = df['target']
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)
# Lasso를 사용하여 중요한 특성 선택
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)
# 중요하지 않은 특성 제거
selected_features = X_train.columns[(lasso.coef_ != 0)]
X_train_selected = X_train[selected_features]
X_valid_selected = X_valid[selected_features]
# 랜덤 포레스트 모델 학습
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train_selected, y_train)
# 예측 및 평가
y_pred = rf.predict(X_valid_selected)
mse = mean_squared_error(y_valid, y_pred)
print(f'Mean Squared Error: {mse}')
# 최종 모델을 전체 데이터로 학습
X_selected = X[selected_features]
rf.fit(X_selected, y)
주의사항
- 하이퍼파라미터 튜닝: Lasso와 랜덤 포레스트 모두 하이퍼파라미터가 있으며, 교차 검증을 통해 최적의 값을 찾아야 합니다. 예를 들어, Lasso의
alpha
값과 랜덤 포레스트의n_estimators
등을 조절해야 합니다. - 데이터 스케일링: Lasso는 데이터의 스케일에 민감하므로, 특성 스케일링(예: StandardScaler 또는 MinMaxScaler)을 수행하는 것이 좋습니다.
- 데이터셋의 크기와 특성: 데이터셋의 크기와 특성의 수에 따라 모델 선택과 튜닝이 달라질 수 있습니다. 작은 데이터셋에서는 Lasso의 영향이 클 수 있으며, 큰 데이터셋에서는 랜덤 포레스트의 성능이 중요할 수 있습니다.
이 방법을 통해 중요한 특성을 선택하고, 복잡한 모델을 사용하여 더 나은 예측 성능을 얻을 수 있습니다.
'ML' 카테고리의 다른 글
데이터 분석 및 예측 모델 평가에서 사용되는 지표 (0) | 2024.07.22 |
---|---|
Kaggle 대회에서 public leaderboard와 private leaderboard를 분리하는 이유 (0) | 2024.07.20 |
L1 L2 정규화, Lasso Ridgd 과적합 방지 (0) | 2024.07.18 |
오버피팅 overfitting 된다면? (0) | 2024.07.18 |
randomforest, categorical numerical 를 어떻게 판단해? (0) | 2024.07.18 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- English
- 오블완
- Github
- recursion #재귀 #자료구조 # 알고리즘
- clustering
- Array
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- 파이썬
- 리스트
- PEFT
- Numpy
- 티스토리챌린지
- Python
- classification
- cnn
- 손실함수
- git
- Lora
- LIST
- RAG
- LLM
- Transformer
- nlp
- 코딩테스트
- Hugging Face
- t5
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- 해시
- speaking
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함