De acordo com a documentação do objeto StandardScaler no scikit-learn:
Por exemplo, muitos elementos usados na função objetivo de um algoritmo de aprendizado (como o kernel RBF do Support Vector Machines ou os regularizadores L1 e L2 dos modelos lineares) assumem que todos os recursos estão centralizados em torno de 0 e têm variação na mesma ordem. Se um recurso tem uma variação que é ordens de magnitude maior que os outros, ele pode dominar a função objetivo e tornar o estimador incapaz de aprender com outros recursos corretamente, conforme o esperado.
Eu deveria escalar meus recursos antes da classificação. Existe alguma maneira fácil de mostrar por que devo fazer isso? Referências a artigos científicos seriam ainda melhores. Eu já encontrei um, mas provavelmente existem muitos outros.
fonte
Depende do kernel que você está usando. De longe, o mais comumente usado (além do linear) é o núcleo gaussiano, que tem a forma
Um SVM pega essa função e a usa para comparar a semelhança de um ponto ( ) com qualquer outro ponto no conjunto de treinamento, somando as diferenças como:x1
onde é seu exemplo e os valores de são os pontos de referência.x l
Se o recurso varia de 0 a 50.000 enquanto o recurso varia de 0 a 0,01, é possível ver que dominará essa soma enquanto praticamente não terá impacto. Por esse motivo, é necessário escalar os recursos antes de aplicar o kernal.x1 x2 x1 x2
Se você quiser saber mais, recomendo o módulo 12 (Support Vector Machines) do curso on-line de Stanford em aprendizado de máquina no Coursera (gratuito e disponível a qualquer momento): https://www.coursera.org/course/ml
fonte