Я нашел несколько вопросов, связанных с этим, но никто не решал мои сомнения. В частности, два ответа на вопрос меня смутили еще больше.
Я тренирую линейный SVM поверх набора функций - Свернутые функции нейронной сети, возникающие в результате изображений. Я имею, например, матрицу 3500x4096 X
с примерами по строкам и функциям на столбцах, как обычно.
Мне интересно, как правильно стандартизировать/нормализовать эту матрицу перед подачей SVM. Я вижу два пути (используя sklearn):
-
Стандартизация функций. Это приводит к функциям с 0 средним и унитарным std.
X = sklearn.preprocessing.scale(X)
-
Нормализующие функции. Это приводит к особенностям с унитарной нормой.
X = sklearn.preprocessing.normalize(X, axis=0)
Мои результаты значительно лучше с нормализацией (точность 76%), чем при стандартизации (точность 68%).
Является ли это полностью зависимым от набора данных выбором? Или как выбрать один из двух методов?