4

Я задаю следующий вопрос, как было предложено из моего предыдущего сообщения - Good ROC curve but poor precision-recall curve. Я использую настройку по умолчанию с помощью Python scikit-learn. Похоже, что оптимизация на AUC-ROC, но меня больше интересует оптимизация точности отзыва. Ниже приведены мои коды.Как оптимизировать кривую прецизионного отзыва вместо кривой AUC-ROC в python scikit-learn?

# 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. Мера качества кривой прецизионной припоминания является average precision. Эта средняя точность равна точной площади при не-интерполированной (то есть кусочно-постоянной) кривой критического значения.

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

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