Я обучил модель и определил «порог», на котором я хотел бы ее развернуть, но у меня возникли проблемы с пониманием того, как порог связан с оценкой.
X = labeled_data[features].reset_index(drop=True)
Y = np.array(labeled_data['fraud'].reset_index(drop=True))
# (train/test etc.. settle on an acceptable model)
grad_des = SGDClassifier(alpha=alpha_optimum, l1_ratio=l1_optimum, loss='log')
grad_des.fit(X, Y)
score_Y = grad_des.predict_proba(X)
precision, recall, thresholds = precision_recall_curve(Y, score_Y[:,1])
Итак, теперь я строю график точности и отзыва по сравнению с порогом и решаю, что хочу, чтобы мой порог был равен 0,4.
Что такое порог?
Коэффициенты моей модели, которые, как я понимаю, являются «оценкой» событий путем вычисления coefficients['x']*event_values['x']
, в сумме дают 29. Порог находится в диапазоне от 0 до 1.
Как мне понять перевод от порога к тому, что, я думаю, является необработанной оценкой? Будет ли событие с 1
для всех признаков (все они бинарные) иметь расчетную оценку 29, поскольку это сумма всех коэффициентов?
Нужно ли мне вычислять эту «необработанную» метрику оценки для всех событий, а затем отображать ее в зависимости от точности, а не от порога?
Изменить и обновить:
Так что мой вопрос зависел от непонимания логистической функции, как указал ниже Михаил Коробов. Независимо от «исходной оценки» логистическая функция устанавливает значение в диапазоне [0, 1].
Чтобы «развернуть» это значение обратно в «необработанную оценку», которую я искал, я могу сделать scipy.special.logit(0.8) - grad_des.intercept_
, и это вернет «оценку» строки.