Оценочная метрика в машинном обучении

#r #machine-learning #classification #data-mining

#r #машинное обучение #классификация #интеллектуальный анализ данных

Вопрос:

Насколько логичным будет решение задачи двоичной классификации в качестве примера ниже, если я использую «Точность» в качестве показателя при обучении и нахожу оценку AUC с использованием пакета ROCR? Или я должен всегда использовать «ROC» в качестве показателя для вычисления оценки AUC? Набор данных несбалансирован.

 control <- trainControl(method="cv", number=5)

fit <- train(diabetes~., data=PimaIndiansDiabetes, method="gbm", metric="Accuracy", trControl=control)
  

Комментарии:

1. Точность зависит от несбалансированных данных, вы, вероятно, захотите использовать любую метрику, которая не зависит от баланса классов. ROCR это хороший пакет для вычисления метрики, вам нужна кривая (ROC) или область под этой кривой (AUROC)?

2. Да, мне нужна кривая (ROC) или область под этой кривой (AUROC).

Ответ №1:

Для оценки производительности любого классификатора наиболее базовой метрикой / эталоном является матрица путаницы, поскольку точность, прецизионность, отзыв, F-мера, ROC и AUC — все это вытекает из матрицы путаницы. Возвращаясь к вашему вопросу, достаточно ли точности как показателя производительности для оценки двоичного классификатора? Ответ «Да», только если распределение данных сбалансировано, т. Е. имеется равное количество объектов класса 1 и класса 2. Но если данные несбалансированы (как в вашем случае), то использование точности в качестве ключевого показателя производительности является большим ОТКАЗОМ. Простой пример, опровергающий привлекательность / ошибочность точности: представьте, что *** телефонная компания хочет проверить количество дефектных сотовых телефонов, которые она производит. Теперь в среднем на каждые 1000 неисправных телефонов приходится 10, и созданный классификатор никогда не обнаруживает неисправный телефон в 1000 отобранных им телефонах, тогда точность классификатора по-прежнему составляет 99%, поскольку TP = 990 и TN = 0, а точность = TP TN / 1000. Таким образом, лучшим или, по крайней мере, контрольным показателем для оценки производительности является F-оценка каждого класса, и оттуда его можно перейти к следующему уровню построения кривых ROC и оценки AUC.

Комментарии:

1. Неверно, что точность хороша только для сбалансированных данных. Да, это может привести к очень странному поведению, когда у вас экстремальный дисбаланс (например, 1-99), но набор данных, который имеет такие пропорции, как (1-4-3-8), может быть очень точным. Это рассуждение ошибочно с самого начала. Вы не подгоняете оценочную метрику к распределению данных, вы подгоняете оценку к тому, на какой вопрос вы пытаетесь ответить . Никогда не бывает наоборот.

2. На самом деле, моя цель — построить кривую ROC и найти область под этой кривой (AUROC). Как я указал в вопросе, после того, как я использовал «Точность» или «ROC» в качестве оценочного показателя в функции train, я получил немного отличающиеся результаты F1score или AUC. Я хочу знать причину. Итак, в этом случае я должен использовать «ROC» в качестве показателя?

3. @lejlot Я не пытался сказать, что оценочная метрика и распределение данных связаны. Все, что я пытался донести, это использовать только точность для оценки производительности классификатора, что я не рекомендую. Спасибо!

Ответ №2:

Я думаю, что если вы хотите использовать точность, то сначала вам следует сбалансировать свой набор данных, используя такие методы, как повышающая или понижающая дискретизация. Для интерпретируемости AUC лучше по сравнению с точностью.