2015-08-18 3 views
0

Я использую функцию funusionMatrix из библиотеки каретки в R для оценки производительности нескольких методов, таких как (эластичная сеть из библиотеки glmnet, гауссовые процессоры из kernlib, randomforest) на двух данные класса.confusionMatrix для классификатора в R

я могу видеть, иногда некоторые из методов, я получаю

предупреждение: В confusionMatrix.default (пред, правда): Уровни не в том же порядке, для справки и данных. Рефакторинг данных до .

, а производительность - 65%; однако, если я переклассифицирую уровни (измените порядки) предсказаний (в приведенном выше примере, пред), исходя из «истины»; производительность достигает 25%.

Я построил следующие данные игрушки.

pred = c("a", "a", "a", "b") 
pred = as.factor(pred) 
levels(pred) = rev(levels(pred)) % given this line, I can either get 25% or 75%. 

truth = c("a", "a", "b", "b") 
truth = as.factor(truth) 

confusionMatrix(pred, truth) 

Я понимаю, что это интуитивно понятно, так как это двухклассные данные. Однако, интересно, если я сделаю это в свою пользу; если производительность составляет 25% (просто, принимая ее как 75%).

ответ

0

См ?caret::confusionMatrix, в частности, параметр positive

положительный необязательная строка символов для уровня фактора, соответствующего «положительного» результата (если это имеет смысл для ваших данных). Если есть только два уровня факторов, первый уровень будет использоваться как «положительный» результат.

На втором примечании, если вы не являетесь классами примерно 50-50, вы должны, вероятно, оценить свои результаты с чем-то иным, чем матрицей замешательства.

+0

так, гипотетически, если вы делаете классификатор для данных двух классов, которые могут предсказать 30%; не раковые больные от больных раком, (а) он не может перевернуть его и сказать, он предсказывает 70% больных раком!? - Мне тоже нравятся ваши комментарии по этому поводу :-). - Я должен добавить, что я не думаю, что здесь может работать «позитивный» параметр. – user702846

+0

А? если у вас есть только два класса, то не членство в одном классе является достаточным условием принадлежности к другому классу. –

+0

Если вы не используете 'positive == ... ...', то ссылочный класс по умолчанию считается первым. Поэтому, когда вы используете 'rev (levels (pred)), вы получаете результат, который вы видели. Если вы хотите использовать 'rev (levels (pred)), тогда вы должны использовать' positive == ... ... '', чтобы получить одинаковый результат в каждом случае. –

Смежные вопросы