2017-01-30 1 views
0

Exécution de la validation croisée xgboost J'ai une aire sous la courbe < 0,5.xgboost.cv renvoie une aire sous la courbe inférieure à 0,5

Je suis en cours d'exécution xgboost.cv comme suivre

best_params_grid_search={'base_score': 0.5, 
'colsample_bylevel': 1, 
'colsample_bytree': 0.8, 
'gamma': 0, 
'learning_rate': 0.3, 
'max_delta_step': 0, 
'max_depth': 3, 
'min_child_weight': 3, 
'missing': nan, 
'n_estimators': 15, 
'objective': 'binary:logistic', 
'reg_alpha': 0, 
'reg_lambda': 1, 
'scale_pos_weight': 1, 
'seed': 5, 
'silent': 1, 
'subsample': 0.8} 

skf_inner = StratifiedKFold(n_splits=n_fold_inner,random_state=5, shuffle=True) 

dtrain = xgb.DMatrix(X_train, label=y_train, missing = np.nan) 

num_rounds = 20 
cv_xgb4 = xgb.cv(best_params_grid_search, 
dtrain,num_boost_round =num_rounds,folds=skf_inner,metrics={'auc'},seed=5) 

mais je reçois une AUC < 0,5. Comment dois-je interpréter ce résultat?

test-auc-mean test-auc-std train-auc-mean train-auc-std 
0  0.402675  0.088828  0.777729  0.058559 
1  0.390638  0.124389  0.890424  0.044356 
2  0.418827  0.068236  0.932992  0.031358 
3  0.448971  0.073219  0.946747  0.011304 
4  0.460597  0.118598  0.956311  0.008302 
5  0.437963  0.057661  0.970979  0.005968 
6  0.461831  0.095017  0.978789  0.010346 
7  0.422428  0.111894  0.977095  0.014329 
8  0.419650  0.117329  0.983260  0.011606 
9  0.433745  0.106113  0.989522  0.008979 
10  0.440947  0.097941  0.992227  0.009497 
11  0.449588  0.071629  0.994396  0.006438 
12  0.429218  0.061360  0.995858  0.004400 
13  0.455144  0.064862  0.998051  0.002757 
14  0.443416  0.057515  0.999513  0.000689 
15  0.440535  0.079628  0.999513  0.000689 
16  0.446296  0.077557  1.000000  0.000000 
17  0.450000  0.074674  1.000000  0.000000 
18  0.468107  0.092640  1.000000  0.000000 
19  0.451029  0.096165  1.000000  0.000000 

Les données peuvent être downoladed ici:

https://drive.google.com/file/d/0B3vXKJ_zYaCJQmxWX1AtTjdoYWc/view?usp=sharing

Merci à l'avance.

Répondre

0

D'abord, quand il est unnormal d'avoir AUC < 50 parce que cela signifie, que votre classificateur fonctionne pire que classificateur uninformative (sélecteur aléatoire) .Proof: https://en.wikipedia.org/wiki/Receiver_operating_characteristic secondaire, vous modèle est très sur-équipé (train auc -mean est 1.0). Cela signifie que vous devriez rendre votre algorithme plus robuste.