Wenn ich eine Bibliothek wie scikit-learn verwende, wie weise ich bestimmten Klassifizierern wie SVM bestimmte Funktionen in der Eingabe zu? Machen diese Leute etwas anderes oder gibt es eine andere Lösung für mein Problem?Wie können bestimmte Funktionen im maschinellen Lernen stärker gewichtet werden?
Antwort
Zuerst - sollten Sie es wahrscheinlich nicht tun. Das gesamte Konzept des maschinellen Lernens besteht darin, die statistische Analyse zu verwenden, um optimale Gewichte zuzuweisen. Sie stören hier mit dem ganzen Konzept, also brauchen Sie wirklich starken Beweis, dass das zu dem Prozess kritisch ist, den Sie versuchen zu modellieren, und aus irgendeinem Grund Ihr Modell es zurzeit vermisst.
Das gesagt - es gibt keine allgemeine Antwort. Dies ist rein modellspezifisch, einige davon erlauben es Ihnen, Features zu gewichten - in zufälliger Gesamtstruktur könnten Sie die Verteilung beeinflussen, aus der Sie die zu analysierenden Features zu denen filtern, an denen Sie interessiert sind. in SVM sollte es ausreichen, das gegebene Feature einfach mit einer Konstante zu multiplizieren - erinnern Sie sich daran, als Sie aufgefordert wurden, Ihre Features in SVM zu normalisieren? Aus diesem Grund können Sie den Klassifizierer mithilfe der Skalierung der Funktionen auf bestimmte Funktionen ausrichten. Diejenigen mit hohen Werten werden bevorzugt. Dies funktioniert tatsächlich bei jedem normalisierten Modell (regulierte logistische Regression, Ridge-Regression, Lasso etc.).
Danke für die Antwort, ich habe in scikit-learn festgestellt, dass der SVC-Klassifikator einen "sample_weight" -Eintrag hat, mit dem Sie bestimmten Klassen mehr Bedeutung verleihen können. Können Sie ein Beispiel geben, wo diese Funktion verwendet wird? – 28r
sample_weight soll spezifische ** samples ** (Instanzen, Punkte, Objekte), nicht ganze Klassen gewichten (obwohl es für diesen Zweck verwendet werden kann). Dies wird zum Beispiel verwendet, um Verstärkungsverfahren zu implementieren, die Proben, die zuvor falsch klassifiziert wurden, iterativ übergewichten. Es wird auch verwendet, um Minderheitenklassen in der unausgewogenen Einstufung zu übergewichten. Dies ist jedoch wiederum eine andere Gewichtung als die in der Frage – lejlot
Warum würden Sie das tun? Gute Algorithmen machen das schon automatisch und situativ. – MSalters
Sehen Sie sich TF-IDF an - es tut Gewichtung – Paparazzi
@Paparazzi tfidf geht es nicht darum, Features zu gewichten, es geht eher darum, zu schnell wachsende zu "quetschen", damit Sie vernünftige Maßstäbe bekommen. Es führt nicht dazu, dass ein bestimmtes Merkmal "wichtiger" ist, es sei denn, Sie verwenden sehr spezifische Klassifizierer (zum Beispiel für Entscheidungsbäume, tfidf geht es überhaupt nicht um "Wichtigkeit") – lejlot