svmlib scaling против нормализации, масштабирования и перевода pyml - PullRequest
1 голос
/ 07 мая 2011

Как правильно нормализовать векторы признаков для использования в SVM с линейным ядром?

Глядя на LIBSVM, похоже, что это делается путем простого масштабирования каждой функции в единый стандартный верхний / нижний диапазон.Однако не похоже, что PyML предоставляет способ масштабирования данных таким способом.Вместо этого есть варианты нормализации векторов по их длине, сдвига каждого значения объекта по его среднему значению при изменении масштаба на стандартное отклонение и т. Д.

Я имею дело со случаем, когда большинство функций являются двоичными, за исключением несколькихкоторые являются числовыми.

1 Ответ

0 голосов
/ 22 августа 2011

Я не эксперт в этом, но я считаю, что центрирование и масштабирование каждого вектора признаков путем вычитания его среднего значения и последующего деления на стандартное отклонение является типичным способом нормализации векторов объектов для использования с SVM.В R это можно сделать с помощью функции масштабирования.

Другим способом является преобразование каждого вектора признаков в диапазон [0,1]:

(x - min(x)) / (max(x) - min(x))

Может быть, некоторые функции могут выиграть отlog-трансформация, если распределение сильно нарушено, но это также изменит форму распределения и не только «переместит» его.

Я не уверен, что вы получите в настройке SVM путем нормализациивекторы по их норме L1 или L2, как это делает PyML со своим методом нормализации.Я думаю, двоичные функции (0 или 1) не должны быть нормализованы.

...