Ich benutze libSVM. meine Merkmalswerte Sagen in folgendem Format sind:svm Skalierung Eingabewerte
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
Ich denke, es gibt zwei Skalierung angewendet werden können.
skalieren Sie jeden Instanzvektor so, dass jeder Vektor eine Null-Mittelwert- und Einheitsvarianz hat.
((f11, f12, f13, f14) - mean((f11, f12, f13, f14)). /std((f11, f12, f13, f14))
skalieren Sie jede Spalte der oben genannten Matrix auf einen Bereich. zum Beispiel [-1, 1]
Nach meinen Versuchen mit RBF-Kernel (libSVM) fand ich, dass die zweite Skalierung (2) die Ergebnisse um etwa 10% verbessert. Ich habe den Grund nicht verstanden, warum (2) mir bessere Ergebnisse liefert.
Kann mir jemand erklären, was der Grund für die Anwendung der Skalierung ist und warum die zweite Option bessere Ergebnisse liefert?
Bevor Sie versuchen, dies zu beantworten ... Ist jede Spalte in der gleichen Reihe? zum Beispiel sind fn1 und fnm [0,100]? – Pedrom
nein es könnte irgendeine Reichweite sein. zum Beispiel die erste Spalte stellt das Alter dar, und die zweite stellt das Gehalt usw. dar. – user570593
Gut, abhängig davon, wie Sie den Mittelwert und die Standardabweichung berechnen, könnten sie durch den größten Bereich verzerrt sein. Auf der anderen Seite glaube ich nicht, dass es garantiert ist, dass dieser Maßstab im Bereich [-1,1] liegen würde, was der numerische freundliche Bereich für RBF auf libSVM ist. – Pedrom