- RandomizedSearchCV
# 파라미터 지정
param_distributions = {
# 100~300 사이의 랜덤한 정수값을 3개 array형태로 반환
'n_estimators' : np.random.randint(100, 300, 10),
# 0.05 ~ 0.3 사이의 실수값 10개 uniform한 값(균일 분포) 반환
'learning_rate' : np.random.uniform(low=0.05, high=0.3, size=10)}
reg1 = RandomizedSearchCV(model_gbr, parameters, n_iter=10, cv=5, n_jobs=-1,
verbose=2, scoring='neg_root_mean_squared_error')
n_iter : CV 가 검증을 해볼 파라미터 조합의 수
scoring : 교차검증을 하는 방법 선택
n_jobs : 컴퓨터에서 사용할 코어의 수, 전체 사용 -1
cv : 교차검증 진행할 횟수
verbose : 함수 수행시 발생하는 상세한 정보들을 표준 출력으로 자세히 내보낼 것인가를 나타냄
subsample: 은 트리 모델 학습 시 사용되는 훈련 데이터 중 일부 샘플만 사용하도록 지정하는 하이퍼파라미터 예를 들어, subsample=0.8로 설정하면 각 트리 모델이 학습될 때 80%의 훈련 데이터만 사용하여 학습
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html
GradientBoostingRegressor
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor(random_state=42)
model
RandomizedSearchCV
-> numpy 사용해서 랜덤하게
from sklearn.model_selection import RandomizedSearchCV
param_distributions = {"n_estimators": np.random.randint(100, 300, 10),
"learning_rate": np.random.uniform(low=0.05, high=0.3, size=10)
}
reg = RandomizedSearchCV(model,
param_distributions=param_distributions,
n_iter=5,
scoring='neg_root_mean_squared_error',
cv=3, verbose=1, n_jobs=-1,
random_state=42)
reg.fit(X_train, y_train)
- 최적의 파라미터
reg.best_estimator_
- 최고점수
reg.best_score_
-> error를 보는 거라 작을 수록 성능이 좋다는 것을 직관적으로 보여주는 것
abs(reg.best_score_)
- 조합 순위 보기
pd.DataFrame(reg.cv_results_).sort_values("rank_test_score")
학습과 예측
# 실전 시험 문제(X_test)를 풀기
y_predict = (reg.best_estimator_).fit(X_train, y_train).predict(X_test)
y_predict[:5]
# 피처 중요도
fi = pd.Series(reg.best_estimator_.feature_importances_)
fi.index = reg.best_estimator_.feature_names_in_
fi.sort_values().plot.barh()
bike 대회의 목적
- 회귀 알고리즘을 사용해 보기
- 회귀의 평가방법 익히기 =>
1에 가깝고 클수록 잘 예측한 지표 => R Sqaure Score(결정 계수)
오차를 측정하기 때문에 작을 수록 잘 예측한 지표 => MAE, MSE, RMSE, RMSLE, MAPE
평가하고자 하는 목적에 따라 다른 평가지표를 사용하게 됩니다.
- Lable Smoothing =>
로그 변환을 통해 한쪽에 치우치고 뾰족한 분포를 정규분포에 가깝게 변환하는 과정
log를 적용하고 exp를 통해 원래 값으로 복원하는 방법
- HyperParameter Tunning => GridSearchCV, RandomSearchCV
- Boosting 알고리즘 사용해 보기
- Tree 계열 모델에서는 스케일링 방법은 분할 기법을 사용하기 때문에 모델의 성능에 큰 차이가 없습니다.
- 하지만 Transform 은 분포를 변경해 주기 때문에 모델이 데이터를 좀 더 잘 볼 수 있게 변환해 주는 효과가 있습니다.
'AI SCHOOL' 카테고리의 다른 글
[ML] GridSearch / GradientBoostingRegressor (0) | 2023.03.19 |
---|---|
[ML] ExtraTreesRegressor / 회귀 모델 평가 지표(MAE, MSE, RMSE, r2_Score) (0) | 2023.03.18 |
[ML] One hot Encoding / ExtraTreesClassifier / cross validation (0) | 2023.03.18 |
[ML] one-hot encoding / Random Forest (0) | 2023.03.18 |
[ML] Decision Tree (0) | 2023.03.17 |