Перекрывающиеся наборы данных могут вызвать головную боль при определении границ решения.Я пытаюсь понять, когда fitcsvm
может найти границу, а когда нет.Если я запускаю следующие два фрагмента кода, каждый на 10 измерениях одной наблюдаемой, разница заключается только в принадлежности к одному измерению.
f = [-1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1]';
t = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]';
SVMModel = fitcsvm(t, f);
и
f = [-1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1]';
t = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]';
SVMModel = fitcsvm(t, f);
Когда вы вычисляете границу решения после выполнения первого фрагмента кода, она возвращает границу решения t=6.5
, которая кажется справедливой.Для второго куска кода SVMModel.Alpha.*SVMModel.SupportVectorLabels.*SVMModel.SupportVectors
оценивается как 0, а смещение равно -1, что указывает на отсутствие результата (граница удовлетворяет 0*t-1=0
).
Может кто-нибудь сказать мне условия, при которых fitcsvm
делает и не возвращает границы решения.Помогите!
Спасибо