Je reçois différents scores ROC-AUC des méthodes skomear RandomForestClassifier et roc_curve, auc, respectivement.Différence des scores ROC-AUC dans les méthodes sklearn RandomForestClassifier vs. auc
Le code suivant m'a fait un ROC-ASC (c.-à-gs.best_score_) de 0,878:
def train_model(mod = None, params = None, features = None,
outcome = ...outcomes array..., metric = 'roc_auc'):
gs = GridSearchCV(mod, params, scoring=metric, loss_func=None, score_func=None,
fit_params=None, n_jobs=-1, iid=True, refit=True, cv=10, verbose=0,
pre_dispatch='2*n_jobs', error_score='raise')
gs.fit(...feature set df..., outcome)
print gs.best_score_
print gs.best_params_
return gs
model = RandomForestClassifier(random_state=2000, n_jobs=-1)
features_to_include = [...list of column names...]
parameters = {
'n_estimators': [...list...], 'max_depth':[...list...],
'min_samples_split':[...list...], 'min_samples_leaf':[...list...]
}
gs = train_model(mod = model, params = parameters, features = features_to_include)
considérant que, le code suivant m'a fait un ROC-ASC de 0,97:
fpr = dict()
tpr = dict()
roc_auc = dict()
fpr['micro'], tpr['micro'], _ = roc_curve(...outcomes array...,
gs.predict_proba(...feature set df...)[:, 1])
roc_auc['micro'] = auc(fpr['micro'], tpr['micro'])
Pourquoi y a-t-il une telle différence? Ai-je fait quelque chose de mal avec mon code?
Merci! Chris
Très bien. Donc, si je devais déclarer «officiellement» l'AUC pour ce modèle, j'utiliserais le second (0,97)? Et je suppose que la version «micro» est probablement meilleure que la «macro» dans ce cas, car il faut tenir compte du déséquilibre de l'étiquette. Cela dit, connaissez-vous une bonne explication de «micro» par rapport à «macro» (bonus si cela concerne les calculs de l'AUC)? Mon jeu de données contient un groupe de fausses fausses et de fausses prédictions qui n'apparaîtraient pas dans le Faux Positif ou le Vrai Positif. Est-ce que cela affecterait ma décision d'utiliser micro vs macro? Merci!! – Chris
Pas exactement - pour déclarer une AUC raisonnable 'officiellement', vous avez besoin d'une sorte d'ensemble de test qui n'a pas été entraîné. L'utilisation de données d'entraînement pour rapporter les métriques de test/performance trompe, et sur-rapporte toujours. J'utiliserais le score INFERIEUR (le premier) comme l'AUC que vous signalez. Pour macro ou micro, le lien que j'ai posté devrait l'expliquer. – mprat