I\'ve been playing with some SVM implementations and I am wondering - what is the best way to normalize feature values to fit into one range? (from 0 to 1)
Let\'s su
You normalise a vector by converting it to a unit vector. This trains the SVM on the relative values of the features, not the magnitudes. The normalisation algorithm will work on vectors with any values.
To convert to a unit vector, divide each value by the length of the vector. For example, a vector of [4 0.02 12]
has a length of 12.6491. The normalised vector is then [4/12.6491 0.02/12.6491 12/12.6491]
= [0.316 0.0016 0.949]
.
If "in the wild" we encounter a vector of [400 2 1200]
it will normalise to the same unit vector as above. The magnitudes of the features is "cancelled out" by the normalisation and we are left with relative values between 0 and 1.