Как рассчитать PR-кривую / AUPR для сравнения нейронной сети и модели случайного леса - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть несбалансированный набор данных, в котором я пытаюсь прогнозировать онлайн-покупки на основе поведения клиентов (т.е. у меня есть проблема классификации с переменной «1 = Да покупка» и «0 = Нет покупки»). Я использую нейронную сеть и случайный лес для создания модели прогнозирования и решил, что PR-кривая - это хороший способ измерить, насколько хороши мои модели из-за дисбаланса в моем наборе данных.

Случайный лес превосходит нейронную сеть с точки зрения общей точности, чувствительности, специфичности и точности. Однако, значение, которое я получаю для области под кривой PR (AUPR), намного ниже для случайного леса, чем для нейронной сети, что, вероятно, связано с тем, как я ее вычисляю:

1) нейронная сеть: нейронная сеть дает мне прогноз от 0 до 1 для каждого наблюдения. Я использую эти значения для расчета AUPR - поэтому я не выбираю порог перед вычислением AUPR

2) Случайный лес: Случайный лес дает мне только 0 или 1 в качестве прогноза, который я использую для расчета AUPR.

Итак, мой вопрос: нужно ли мне сначала выбрать пороговое значение для нейронной сети, чтобы разделить мой прогноз на «0» или «1» вместо значений между ними, а затем рассчитать AUPR - чтобы сделать его сопоставимым со случайным лесом AUPR?

Кстати, это мой код для AUPR, где pred - мои прогнозируемые значения, а purchase_decision - мои фактические значения.

AUPR <- pr.curve(scores.class0=Dataset_Master.test$pred[Dataset_Master.test$purchase_decision==1],
                         scores.class1=Dataset_Master.test$pred[Dataset_Master.test$purchase_decision==0],
                         curve=FALSE)$auc.integral
...