В чем разница между need_proba и need_threshold в функции make_scorer scikit-learn?
Разница между ними не очень хорошо объяснена в
make_scorer
документация. Я заметил, что если
needs_proba
или установлено значение True, функция подсчета очков получает
pred_proba
вместо
y_pred
. Однако установить их оба в True невозможно. Выдает ошибку как
ValueError: Set either needs_proba or needs_threshold to True, but not both
Документация для говорит :
Например, medium_precision или площадь под кривой ROC нельзя вычислить, используя только дискретные прогнозы.
что я понял, поскольку для need_threshold должно быть установлено значение True, если скоринг равен medium_precision или roc_auc_score. Однако это работает одинаково независимо от того, имеет ли need_threshold значение True или False.
Можете ли вы помочь мне понять разницу между ними и использованием
needs_threshold
?
1 ответ
Согласно примечанию ниже на странице документов,
needs_threshold
пытается для
decision_function
прежде чем вернуться к
predict_proba
. Для показателей ранжирования, таких как
roc_auc_score
а также
average_precision
, разницы не будет.
Я полагаю, вам может понадобиться метрика, которая принимает либо исходные выходные данные функции принятия решения, либо (откалиброванные?) выходные данные вероятности. Например, в SVC решающей функцией является расстояние (со знаком) от разделяющей плоскости, которое может потребоваться для вычисления среднего среди неправильно классифицированных примеров, тогда как вам также может понадобиться метрика, использующая вероятности результирующего класса (после калибровка Platt, которая происходит внутри, когда SVC
probability=True
).