Представьте, у меня есть следующие векторы особенность:Как поддерживает векторную машину с запутанными векторами функций?
Учебные векторы:
Класс 1: [3, 5, 4, 2, 0, 3, 2], [33, 50, 44, 22 , 0, 33, 20]
Класс 2: [1, 2, 3, 1, 0, 0, 4], [11, 22, 33, 11, 0, 0, 44]
Векторы испытаний:
Cla сс 1: [330, 550, 440, 220, 0, 330, 200]
Класс 2: [110, 220, 333, 111, 0, 0, 444]
Я использую SVM , который учится из обучающих векторов, а затем классифицирует тестовые образцы.
Как вы можете видеть, векторы объектов имеют очень разные размеры: особенности набора для обучения - очень низкие значения, а векторы тестовых множеств - очень высокие значения.
Мой вопрос заключается в том, запутан ли SVM для изучения таких векторов признаков?
Конечно, когда я делаю вектор масштабирования разница все же есть:
, например, после применения standardScaler() на характеристические векторы для класса 1:
Обучение:
[0,19 1,53 0,86 -0,48 -1,82 0,19 -0,48]
[20.39 31.85 27.80 12.99 20.39 11.64 -1,82]
Тест: [220.45 368.63 294.54 146.35 -1.82 220.45 132.88]
В принципе, это проблема реального мира, и я спрашиваю об этом, так как я разработал способ предварительного масштабирования этих векторов признаков для моего конкретного случая.
После того как я хотел бы использовать мой метод предварительного масштабирования, характеристические векторы для класса 1 станут:
Обучение:
[3. 5. 4. 2. 0. 3. 2.]
[2,75 4,16666667 3,66666667 1,83333333 0. 2,75 1,66666667]
Тест: [2,84482759 4,74137931 3,79310345 1,89655172 2,84482759 0. 1,72413793]
, что делает их очень похожими по своей природе.
Это выглядит еще лучше, когда standardScaler() наносится на предварительно масштабируется векторов:
Обучение:
[0,6 1. 0,8 0,4 0,6 0,4 0]
[0,55 0,83333333 0.73333333 0.36666667 0. 0,55 0,33333333]
Тест: [0,56896552 0,94827586 0,75862069 0,37931034 0,56896552 0. 0,34482759]
Окончательный вопрос: каким образом мой метод предварительного масштабирования поможет SVM? Это скорее теоретический вопрос, и любое понимание этого оценивается.