관리 메뉴

솜씨좋은장씨

[DACON] 심리 성향 예측 AI 경진대회 1일차! 본문

DACON/심리 성향 예측 AI 경진대회

[DACON] 심리 성향 예측 AI 경진대회 1일차!

솜씨좋은장씨 2020. 10. 1. 10:57
728x90
반응형

 

심리 성향 예측 AI 경진대회

출처 : DACON - Data Science Competition

dacon.io

심리 성향 예측 AI 경진대회 1일차!

오늘은 먼저 베이스라인 코드와 토론에 나와있는 AutoML 코드를 돌려보기로 했습니다.

 

심리 성향 예측 AI 경진대회

출처 : DACON - Data Science Competition

dacon.io

베이스라인 코드는 위의 링크에서 확인해보시면 됩니다.

 

베이스라인의 결과는!

0.6801542453 의 결과를 얻을 수 있었습니다.

 

베이스라인 코드가 LightGBM 모델로 작성되어있어 GridSearchCV 를 활용하여 최적의 파라미터를 찾아 성능을 높여 보자! 라고 생각하게 되었고 예전에 다른 대회를 진행해보면서 활용했던 코드를 가져와서 실행해보았습니다.

 

GridSearchCV

from sklearn.model_selection import GridSearchCV 

def get_best_params(model, params): 
    grid_model = GridSearchCV(model, param_grid=params, scoring='neg_mean_squared_error', cv=5, verbose=1) 
    grid_model.fit(train_x, train_y) 
    rmse = np.sqrt(-1* grid_model.best_score_) 
    print('최적 평균 RMSE 값:', np.round(rmse, 4)) 
    print('최적 파라미터:', grid_model.best_params_) 
    
    return grid_model.best_estimator_

파라미터 후보

lgb_param_grid = { 
    'n_estimators' : [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000], 
    'max_depth' : [5, 10, 15, 20, 25, 30], 
    'learning_rate' : [0.001, 0.005, 0.007, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1], 
    'min_child_samples': [10, 20, 30, 40, 50, 60, 70] 
    }

GridSearchCV에 넣을 LGBMClassifier 생성

model = lgbm.LGBMClassifier()

최적의 파라미터 찾기

%%time 
best_param = get_best_params(model, lgb_param_grid)

 

 

위에서 최적의 파라미터를 찾는 과정이 욕심을 부렸더니 너무 오래 걸려서 (20시간 넘게 진행중)

코드공유에 올라와있는 AutoML을 활용한 방법을 시도해 보았습니다.

 

심리 성향 예측 AI 경진대회

출처 : DACON - Data Science Competition

dacon.io

자세한 내용은 위를 참고해주세요.

 

결과는!

0.7739322873 의 결과를 얻을 수 있었습니다.

 

별다른 EDA나 모델 사용 고민없이도 77%가 넘는 정확도를 보이는 모델을 만들 수 있다는 것이 정말 신기했습니다.

 

GridSearchCV 결과가 너무 나오지 않아 AutoML을 활용하여 나온 모델 중
두번째로 좋다고 나온 모델을 활용해보기로 했습니다.

GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,
                            learning_rate=0.1, loss='deviance', max_depth=3,
                            max_features=None, max_leaf_nodes=None,
                            min_impurity_decrease=0.0, min_impurity_split=None,
                            min_samples_leaf=1, min_samples_split=2,
                            min_weight_fraction_leaf=0.0, n_estimators=100,
                            n_iter_no_change=None, presort='deprecated',
                            random_state=6670, subsample=1.0, tol=0.0001,
                            validation_fraction=0.1, verbose=0,
                            warm_start=False)

이 모델을 베이스라인 코드에 모델 부분만 교체하여 활용해 보았습니다.

 

결과는!

AutoML에서 사용하였던 전처리 방법과 다른 전처리 방법으로 인하여 기대한 결과가 나오지 못한 것 같습니다.

 

오늘은 첫 날이라 공개되어있는 코드를 가지고만 시도를 해보았습니다.

 

내일부터는 데이터 EDA를 통해 성능을 더 높여보려합니다.

 

읽어주셔서 감사합니다.

 

첫날 결과 ( 29 / 88 )

 

Comments