Это может быть показано с использованием некоторых тестовых данных, например, следующих:
rng(42)
X = randn(1000, 2);
y = rand(1000, 1) >= 0.98;
X(y==1, :) = X(y==1, :) + [2, 2];
Простой SVM с функцией ядра Гаусса не будет хорошо работать из-за дисбаланса класса:
model = fitcsvm(X, y, 'KernelFunction', 'rbf')
confusionmat(y, model.predict(X))
ans =
979 2
14 5
Как вы уже признали, параметр 'Cost'
может использоваться для компенсации дисбаланса путем наложения более высокого штрафа за неправильную классификацию класса меньшинства.В двумерном случае матрица затрат строится следующим образом:
[ Cost(0, 0), Cost(0, 1)
Cost(1, 0), Cost(1, 1) ]
Теперь Cost(0, 0)
- это стоимость отнесения выборки, принадлежащей к классу 0
, к классу 0
.Это правильная классификация, поэтому обычно стоимость устанавливается равной 0. Далее Cost(0, 1)
- это стоимость классификации точки, принадлежащей к классу 0
, как класса 1
, то есть неправильная классификация.
В вашем примере класс 0
более вероятен, чем класс 1
, поэтому мы должны наложить низкое наказание на классификацию выборки из класса 0
(большинство) в качестве класса 1
(меньшинство), ивысокий штраф за отнесение выборки из класса 1
(меньшинство) к классу 0
(большинство).Таким образом, Cost(0, 1)
должно быть низким, а Cost(1, 0)
должно быть высоким.
Установив c = [0, 2.2; 1, 0]
, вы сделали обратное - вы посоветовали функции fitcsvm
скорее классифицировать миноритарную выборку как большинство, чем противоположную.:
c = [0, 2.2; 1, 0];
model = fitcsvm(X, y, 'KernelFunction', 'rbf', 'Cost', c);
confusionmat(y, model.predict(X))
ans =
981 0
19 0
Если вы используете те же веса в матрице затрат c
, но переключаете Cost(0, 1)
и Cost(1, 0)
, тогда произойдет желаемый эффект:
c = [0, 1; 2.2, 0];
model = fitcsvm(X, y, 'KernelFunction', 'rbf', 'Cost', c);
confusionmat(y, model.predict(X))
ans =
973 8
7 12
Это действительно улучшает наш результат: в целом мы имеем схожее количество ошибочных классификаций: 15 вместо 16 общих ошибочных классификаций, но 12 из 19 выборок из класса меньшинства верны с новой моделью по сравнению с 5 ранее.