По умолчанию приложение Classification Learner создает модели, которые присваивают одинаковый штраф всем ошибочным классификациям во время обучения. Для заданного наблюдения приложение назначает штраф 0, если наблюдение классифицировано правильно, и штраф 1, если наблюдение классифицировано неправильно. В некоторых случаях это назначение неуместно. Например, предположим, что вы хотите классифицировать пациентов как здоровых или больных. Стоимость неправильной классификации больного как здорового может в пять раз превысить стоимость неправильной классификации здорового человека как больного. Для случаев, когда вы знаете стоимость неправильной классификации наблюдений одного класса в другой, и затраты варьируются в зависимости от классов, укажите затраты на неправильную классификацию перед обучением моделей.
Примечание
Пользовательские затраты на неправильную классификацию не поддерживаются для моделей логистической регрессии и нейронных сетей.
В приложении Classification Learner, в Options разделе вкладки Classification Learner, выберите Misclassification Costs. Приложение открывает диалоговое окно, в котором показаны затраты на неправильную классификацию по умолчанию (матрица затрат) как таблица с метками строк и столбцов, определяемыми классами в переменной отклика. Строки таблицы соответствуют истинным классам, а столбцы соответствуют предсказанным классам. Интерпретировать матрицу затрат можно таким образом: запись в i строка и j столбец - это стоимость неправильной классификации наблюдений i первого класса в j-й класс. Диагональные элементы матрицы затрат должны быть 0, а недиагональные значения должны быть неотрицательными вещественными числами.
Можно задать собственные затраты на неправильную классификацию двумя способами: путем ввода значений непосредственно в таблицу в диалоговом окне или путем импорта переменной рабочей области, содержащей значения затрат.
Примечание
Масштабированная версия матрицы затрат дает те же результаты классификации (для примера, матрицы неточностей и точности), но с другой общей неправильной классификацией затрат. То есть, если CostMat
- матрица затрат неправильной классификации и a
- положительный, действительный скаляр, затем модель, обученная с матрицей затрат a*CostMat
имеет ту же матрицу неточностей, что и модель, обученная с CostMat
.
В диалоговом окне затрат на неправильную классификацию дважды щелкните по записи в таблице, которую необходимо изменить. Удалите значение и введите правильные затраты на неправильную классификацию для записи. После редактирования таблицы нажмите кнопку OK, чтобы сохранить изменения.
В диалоговом окне калькуляции затрат нажмите Import from Workspace. Приложение открывает диалоговое окно для импорта затрат из переменной в MATLAB® рабочей области.
В списке Cost variable выберите матрицу затрат или структуру, содержащую затраты на неправильную классификацию.
Матрица затрат - матрица должна содержать затраты на неправильную классификацию. Значение диагональных элементов должно быть 0, а значения вне диагонали должны быть неотрицательными вещественными числами. По умолчанию приложение использует порядок классов, показанный в предыдущем диалоговом окне затрат на неправильную классификацию, чтобы интерпретировать значения матрицы затрат.
Чтобы задать порядок классов в матрице затрат, создайте отдельную переменную рабочей области, содержащую имена классов в правильном порядке. В диалоговом окне импорта выберите соответствующую переменную из списка Class order in cost variable. Переменная рабочей области, содержащая имена классов, должна быть категориальным вектором, логическим вектором, числовым вектором, строковыми массивами или массивом ячеек из векторов символов. Имена классов должны совпадать (в орфографии и капитализации) с именами классов в переменной отклика.
Структура - структура должна содержать поля ClassificationCosts
и ClassNames
с этими спецификациями:
ClassificationCosts
- Матрица, содержащая затраты на неправильную классификацию.
ClassNames
- Имена классов. Порядок классов в ClassNames
определяет порядок строк и столбцов ClassificationCosts
. Переменная ClassNames
должен быть категориальным вектором, логическим вектором, числовым вектором, строковыми массивами или массивом ячеек векторов символов. Имена классов должны совпадать (в орфографии и капитализации) с именами классов в переменной отклика.
После определения переменной стоимости и порядка классов в переменной стоимости нажмите Import. Приложение обновляет таблицу в диалоговом окне затрат на неправильную классификацию.
После того, как вы задаете матрицу затрат, которая отличается от матрицы по умолчанию, приложение обновляет панель Current Model Summary для новых моделей. На панели Current Model Summary, в разделе Misclassification Costs, приложение перечисляет матрицу затрат как «пользовательскую». Для моделей, которые используют затраты на неправильную классификацию по умолчанию, приложение приводит матрицу затрат к значению «по умолчанию».
После определения затрат на неправильную классификацию можно обучать и настраивать модели как обычно. Однако использование пользовательских затрат на неправильную классификацию может изменить способ оценки эффективности модели. Например, вместо выбора модели с наилучшей точностью выберите модель, которая имеет хорошую точность и низкие общие затраты на неправильную классификацию. Общая стоимость неправильной классификации для модели sum(CostMat.*ConfusionMat,'all')
, где CostMat
- матрица затрат неправильной классификации и ConfusionMat
- матрица неточностей для модели. Матрица неточностей показывает, как модель классифицирует наблюдения в каждом классе. См. раздел «Проверка эффективности по классам» в матрице неточностей.
Чтобы просмотреть общую стоимость неправильной классификации обученной модели, выберите модель в панели Models. На панели Current Model Summary проверьте раздел Training Results. Общая стоимость неправильной классификации указана ниже точности модели.
После того, как вы обучите модель с пользовательскими затратами на неправильную классификацию и экспортируете ее из приложения, можно найти пользовательские затраты внутри экспортированной модели. Для примера, если вы экспортируете древовидную модель как структуру с именем trainedModel
можно использовать следующий код для доступа к матрице затрат и порядку классов в матрице.
trainedModel.ClassificationTree.Cost trainedModel.ClassificationTree.ClassNames
Cost
свойство экспортированной модели сбрасывается на матрицу затрат по умолчанию, но Prior
свойство обновляется.Когда вы генерируете код MATLAB для модели, обученной с пользовательскими затратами на неправильную классификацию, сгенерированный код включает матрицу затрат, которая передается в функцию обучения через 'Cost'
аргумент пары "имя-значение".