Низкая производительность для SVM для несбалансированного набора данных - как улучшить? - PullRequest
0 голосов
/ 13 декабря 2018

Рассмотрим набор данных A, в котором есть примеры для обучения проблеме бинарной классификации.Я использовал SVM и применил взвешенный метод (в MATLAB), поскольку набор данных сильно разбалансирован.Я применил веса обратно пропорционально частоте данных в каждом классе.Это делается на тренировке с помощью команды

 fitcsvm(trainA, trainTarg , ...
            'KernelFunction', 'RBF', 'KernelScale', 'auto', ...
            'BoxConstraint', C,'Weight',weightTrain  );

. Я использовал 10-кратную перекрестную проверку для обучения и также изучил гиперпараметр.поэтому внутри CV набор данных A разбивается на поезд (trainA) и наборы проверки (valA).После того, как обучение закончено и вне цикла CV, я получаю матрицу путаницы на A:

80025 1
0 140

, где первая строка для класса большинства, а вторая строка для класса меньшинства.Существует только 1 ложноположительный результат (FP), и все примеры классов меньшинства были правильно классифицированы, давая истинно положительный результат (TP) = 140.

ПРОБЛЕМА : Затем я запускаю обученную модель нановый набор невидимых тестовых данных B, который никогда не был виден во время тренировки.Это путаница для тестирования на B.

50075 0
100 0

. Как видно, класс меньшинства вообще не был классифицирован, поэтому назначение весов провалилось.Хотя нет FP, SVM не может собрать примеры классов меньшинства.Я не применял весов или методов балансировки, таких как выборка (SMOTE, RUSBoost и т. Д.) На B.Что может быть не так и как преодолеть эту проблему?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Площадь под кривой (AUC) обычно используется для измерения производительности моделей, которые применяются к несбалансированным данным.Также полезно построить кривую ROC, чтобы визуально получить больше информации.Использование только матрицы путаницы для таких моделей может привести к неправильной интерпретации.

perfcurve из набора инструментов статистики и машинного обучения обеспечивает обе функции.

0 голосов
/ 13 декабря 2018

Веса неправильной классификации класса могут быть установлены вместо весов выборки!

Вы можете установить весовые коэффициенты класса на основе следующего примера.

Вес неправильной классификации для класса A (n-записей; доминирующий) в класс B (m-записей; класс меньшинства) может быть н / м.Вес неправильной классификации Для класса B в качестве класса A можно установить значение 1 или m / n в зависимости от серьезности, которую вы хотите наложить на обучение

c=[0 2.2;1 0];
mod=fitcsvm(X,Y,'Cost',c)

Согласно документации :

Для обучения в двух классах, если вы укажете матрицу затрат, тогда программное обеспечение обновит предыдущие вероятности, включив штрафы, описанные в матрице затрат.Следовательно, матрица затрат сбрасывается на значение по умолчанию.Для получения дополнительной информации об отношениях и алгоритмическом поведении BoxConstraint, Cost, Prior, Standardize и Weights см. Алгоритмы.

...