원자력 발전소 상태 판단 알고리즘 공모전 도전 5일차!(마지막날)
솜씨좋은장씨
·2020. 2. 12. 14:39
먼저 lightGBM 모델을 사용하였습니다.
from lightgbm import LGBMClassifier, plot_importance
lgb2 = LGBMClassifier(n_estimators=2, learning_rate=0.001, max_depth=7,min_child_samples=48, random_state=4321)
lgb2.fit(X_train, y_train, verbose=2)
결과는!
이번에는 GridSearchCV를 활용하여 RandomForest의 최적의 파라미터를 찾아보았습니다.
위의 링크를 참고하였습니다.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
rf_param_grid = {
'n_estimators' : [10, 30, 50, 70, 100],
'max_depth' : [6, 8, 10, 12],
'min_samples_leaf' : [3, 5, 7, 10],
'min_samples_split' : [2, 3, 5, 10]
}
rf = RandomForestClassifier(random_state=0)
import time
strTime = time.time()
print("시작시간: ", strTime)
rf_grid = GridSearchCV(rf, param_grid=rf_param_grid, scoring='accuracy', n_jobs=-1, verbose = 1)
rf_grid.fit(X_train, y_train)
print("소요시간 : ", time.time() - strTime)
생각보다 너어어어무 오랜 시간이 걸려 한참 기다렸습니다.
는 .... 결국 Colab의 런타임 연결이 해제되고 어쩔수없이 시간상 변수를 줄여서 다시 시도해 보았습니다.
rf_param_grid = {
'n_estimators' : [4, 6, 7, 8],
'max_depth' : [7, 9],
'min_samples_leaf' : [3, 5],
'min_samples_split' : [2, 3]
}
print("최고 평균 정확도 {0:4f}".format(rf_grid.best_score_))
print("최고의 파라미터 : ", rf_grid.best_params_)
정확도가 낮지만 여러번의 삽질로 인하여 시간이 없어 일단 지금 나온 최적의 파라미터를 가지고 시도해보기로 했습니다.
model = RandomForestClassifier(random_state=0, n_estimators=rf_grid.best_params_['n_estimators'], max_depth=rf_grid.best_params_['max_depth'], min_samples_leaf=rf_grid.best_params_['min_samples_leaf'], min_samples_split=rf_grid.best_params_['min_samples_split'], verbose=1, n_jobs=-1, warm_start=True)
model.fit(X_train, y_train)
결과는!
이번엔 n_estimators 만 200으로 바꾸어 해보았습니다.
model4 = RandomForestClassifier(random_state=0, max_depth=rf_grid.best_params_['max_depth'], min_samples_leaf=rf_grid.best_params_['min_samples_leaf'], min_samples_split=rf_grid.best_params_['min_samples_split'], n_estimators=200, warm_start=True)
model4.fit(X_train, y_train)
결과는!
최종 Private 순위
총 190팀 중에 47위를 기록했습니다.
5일 동안 도전 후기
처음 시작할때 머신러닝의 여러 앙상블 모델에 대해서 모르고
그저 DACON에서 제공해주는 base_line 코드의 하이퍼 파라미터만 바꿔보면서 도전했지만
알바도 하고 Dev-Matching을 도전하면서 핸즈온 머신러닝과 패스트 캠퍼스의 머신러닝 강의를 통해
각 알고리즘의 개념과 주로 많이쓰이는 모델, 그리고 보통 성능이 잘나오는 모델이 무엇인지도 알 수 있었습니다.
그 후 속도도 빠르고 성능도 잘나온다는 lightGBM을 사용해 보았지만 결과는 좋지 못하였습니다.
어떻게하면 최적의 파라미터를 찾을 수 있을까!
하고 다시 공부를 하면서 GridSearchCV와 같은 기법에 대해서 알게되었습니다.
Colab 환경에서 여러 하이퍼파라미터를 변수로 넣고 테스트 해보기에는 시간과 자원이 부족함을 느꼈습니다.
조금 더 빨리 공부하고 더 많이 도전해봤으면 어땠을까 하는 생각이 들지만!
이 대회의 수상이 끝난 후 연습으로 지속적으로 제출이 가능하다고하니
시간이 모자라서 더 못했던 내용들을 하나씩 도전해보면서 성능을 높여가볼 생각입니다.
성능을 높이는 과정은 개인 블로그에 하나씩 올려보려합니다.
언젠가는 머신러닝/딥러닝용 컴퓨터를 맞추고 런타임 걱정없이 돌릴 그날까지!
열심히 공부하려합니다.
대회가 끝났지만 연습을 할 수 있도록 아직 대회가 열려있습니다.
대회를 도전해보고 싶으신 분들은 아래의 링크를 통해 도전해보시기 바랍니다.
읽어주셔서 감사합니다!
지금 바로 대회 참가해보기 ↓
'경진대회, 공모전 > DACON 원자력발전소 상태 판단 알고리즘 경진대회' 카테고리의 다른 글
원자력 발전소 상태 판단 알고리즘 공모전 도전 3,4일차! (0) | 2020.02.09 |
---|---|
원자력 발전소 상태 판단 알고리즘 공모전 도전 1, 2일차! (1) | 2020.01.26 |
제공 데이터 이해하고 학습데이터/테스트 데이터 load 해보기! (1) | 2020.01.23 |