Выбор правильного порогового значения для классификации в логистической регрессии

#machine-learning #scikit-learn #logistic-regression #roc #precision-recall

#машинное обучение #scikit-learn #логистическая регрессия #ОКР #точность-отзыв

Вопрос:

Я работаю над тем, нажата реклама или нет на наборе данных классификации веб-сайта (в значительной степени сбалансированном). Мне нужно знать правильный порог вероятности для классификации, будут ли посетители веб-сайта нажимать на объявление или нет.

Цель: — Поскольку реклама на веб-сайте дорогая, мы хотим убедиться, что реклама показывается только тем, у кого есть хорошие шансы на конверсию, а ненужные клики только увеличат наши расходы.

Итак, теперь я должен выбрать пороговое значение таким образом, чтобы у нас было большое количество конверсий и мало кликов по объявлениям, которые не конвертируются.

Я запустил логистическую регрессию (1 = нажата реклама, 0 = не нажата), и прикрепленное изображение содержит данные о accuracy , recall , precision auc score , f1_score ,, при пороговых значениях 0.4,0.45, 0.5, 0.55, 0.6.

Насколько мне известно, это пороговое значение должно быть выбрано там, где f1_score является максимальным. Однако, поскольку мы хотим минимизировать количество кликов по рекламе, которые не конвертируются, мы хотим иметь высокую точность, то есть как можно меньше ложных срабатываний.

Для этого набора данных оценка f1 максимальна при пороге = 0,45, однако точность выше при пороге = 0,55 и 0,6. Какое пороговое значение я должен выбрать, учитывая нашу упомянутую цель?

Пытался найти ответы на определение правильного порогового значения, но не нашел ни одного очень удовлетворительного. поиск по stackoverflow и Web.

 THRESHOLD=0.4 #0.4 to 0.6 incremented by 0.5

predictions=np.where(classifier.predict_proba(X_test)[:,1] > THRESHOLD,1,0)
pd.DataFrame(data=[accuracy_score(Y_test, predictions), recall_score(Y_test, predictions),
                   precision_score(Y_test, predictions), roc_auc_score(Y_test, predictions), f1_score(Y_test,predictions)], 
             index=["accuracy", "recall", "precision", "roc_auc_score",'f1_score'])
  

Правильное пороговое значение

Комментарии:

1. Вы получите наименьший процент ложных срабатываний с порогом вероятности 1,0. Однако вы вообще не будете показывать много рекламы… Чтобы сделать что-то еще, вам нужно будет определить стоимость и преимущества классификаций, а также баланс классов, который здесь выходит за рамки и больше подходит для crossvalidated.SE .

2. Это не вопрос программирования , и, возможно, это даже не вопрос статистики / ML, подходящий для перекрестной проверки; как хорошо объяснено в разделе «Порог вероятности классификации», выбор порога является не частью компонента статистики / ML, а частью компонента решения / бизнеса вашего приложения. ……………. «Решение / бизнес «. Никто не может сказать вам, следует ли вам максимизировать оценку F1 или точность, это зависит исключительно от ваших бизнес-потребностей (включая затраты на неправильно классифицированные выборки)…