SVM масштабирование входных значений
Я использую libSVM. Скажем, мои значения функций находятся в следующем формате:
instance1 : f11, f12, f13, f14
instance2 : f21, f22, f23, f24
instance3 : f31, f32, f33, f34
instance4 : f41, f42, f43, f44
..............................
instanceN : fN1, fN2, fN3, fN4
Я думаю, что есть два масштабирования могут быть применены.
масштабировать каждый экземплярный вектор так, чтобы каждый вектор имел нулевое среднее значение и единичную дисперсию.
( (f11, f12, f13, f14) - mean((f11, f12, f13, f14) ). /std((f11, f12, f13, f14) )
масштабировать каждую колонку вышеупомянутой матрицы до диапазона. например [-1, 1]
Согласно моим экспериментам с ядром RBF (libSVM), я обнаружил, что второе масштабирование (2) улучшает результаты примерно на 10%. Я не понял причину, почему (2) дает мне улучшенные результаты.
Кто-нибудь может объяснить мне, в чем причина применения масштабирования и почему второй вариант дает мне улучшенные результаты?