Как оптимизировать кривую точности-отзыва вместо кривой AUC-ROC в python scikit-learn?

Я задаю дополнительный вопрос, как это было предложено в моем предыдущем посте - Хорошая кривая ROC, но плохая кривая точности-отзыва. Я использую только настройку по умолчанию с Python scikit-learn. Похоже, что оптимизация выполняется на AUC-ROC, но я больше заинтересован в оптимизации точности отзыва. Ниже приведены мои коды.

# Get ROC 
y_score = classifierUsed2.decision_function(X_test)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(false_positive_rate, true_positive_rate)
print 'AUC-'+ethnicity_tar+'=',roc_auc
# Plotting
ax1.plot(false_positive_rate, true_positive_rate, c=color, label=('AUC-'+ethnicity_tar+'= %0.2f'%roc_auc))
ax1.plot([0,1],[0,1], color='lightgrey', linestyle='--')
ax1.legend(loc='lower right', prop={'size':8})

# Get P-R pairs
precision, recall, prThreshold = precision_recall_curve(y_test, y_score)
# Plotting
ax2.plot(recall, precision, c=color, label=ethnicity_tar)
ax2.legend(loc='upper right', prop={'size':8})

Где и как я могу вставить коды Python, чтобы изменить настройку, чтобы я мог оптимизировать повторный вызов?

1 ответ

На самом деле у вас есть два вопроса:

  1. Как оценить, насколько точна кривая точного отзыва в одном числе?
  2. Как построить модель, чтобы максимально увеличить это число?

Я отвечу на них по очереди:

1. Показателем качества кривой точности-отзыва является средняя точность. Эта средняя точность равна точной площади под непере интерполированной (то есть кусочно-постоянной) кривой точного возврата.

2. Чтобы максимизировать среднюю точность, вы можете настроить только гиперпараметры вашего алгоритма. Вы можете сделать это с GridSearchCV, если вы установите scoring='average_precision', Или вы можете найти оптимальные гиперпараметры вручную или с помощью другой техники настройки.

Как правило, невозможно напрямую оптимизировать среднюю точность (во время подгонки модели), но есть некоторые исключения. Например, эта статья описывает SVM, которая максимизирует среднюю точность.

Другие вопросы по тегам