Ошибка в прогнозировании при использовании C.50 с затратами и прогнозировании с помощью type = prob для рисования кривых ROC в R

Я рисую кривые ROC для серии реализованных мной классификаторов. Дело в том, что следующее сообщение об ошибке я получаю в тех случаях, когда у меня был классификатор C.50 с матрицей затрат (я работаю с RStudio).

Ошибка в файле predic.C5.0 (classifier.cost.1, data, type = "prob"): значения достоверности (т. Е. Вероятности класса) не должны использоваться с затратами.

С классификатором все в порядке, и когда я не использую type = "prob" в команде прогнозирования, он тоже работает нормально, но мне не удается нарисовать кривую ROC.

Это код, который я использую для создания собственных кривых ROC:

pred.class.cost <- predict(classifier.cost.1, data, type="prob")
perf.class.cost <- performance(prediction(pred.class.cost[,2], data$class),"tpr","fpr")
ROC.class.cost <- data.frame([email protected][[1]],[email protected][[1]])

Итак, два вопроса:

  1. Что означает ошибка и как ее исправить?
  2. Если это невозможно исправить, каким другим способом создать собственные кривые ROC? (Затем я использую ggplot2, чтобы получить все кривые ROC и построить их вместе.

Любая помощь приветствуется. Спасибо!


person Fabiola Fernández    schedule 17.09.2015    source источник


Ответы (1)


В разделе прогнозирования документации C5.0 объясняется, что:

Когда аргумент стоимости используется в основной функции, вероятности классов, полученные из распределения классов в конечных узлах, могут не согласовываться с окончательным прогнозируемым классом. По этой причине запрос вероятностей классов из модели с неравными затратами вызовет ошибку.

Чтобы обойти это, предположим, что вы хотите придать больший вес положительному классу, тогда вы можете сделать избыточную выборку из положительных или заниженную выборку из отрицательных (я предпочитаю последнее). Это будет иметь эффект, аналогичный применению стоимости, а затем позволит вам получить вероятности и сгенерировать кривую ROC.

person Tchotchke    schedule 17.09.2015
comment
Спасибо за ответ. Я не связывал эту часть документации с командой предсказать ... Однако, хотя я попробую ваше предложение, чтобы иметь возможность генерировать кривые ROC. Я не могу (не должен) делать передискретизацию или недостаточную выборку, потому что это будет затруднительно для интерпретации данных (я работаю с данными о здоровье, и клиницисты не любят передискретизацию или недостаточную выборку, это не будет отражать «реальную» популяцию, длинная история...). Есть ли способ связать недостаточную выборку, например, с матрицей затрат? Просто чтобы проверить, могу ли я сделать эквивалент ... - person Fabiola Fernández; 17.09.2015
comment
Я думаю, что если вы передискретизируете фактор X, то это может быть эквивалентно присвоению вашим положительным результатам стоимости X. - person Tchotchke; 17.09.2015
comment
Спасибо! Я попробую! - person Fabiola Fernández; 21.09.2015