Frage:
Wann sollte ich die Feature-Skalierung für meine Daten anwenden?
jjepsuomi
2014-10-29 14:00:48 UTC
view on stackexchange narkive permalink

Ich hatte eine Diskussion mit einem Kollegen und wir fragten uns, wann man die Normalisierung / Skalierung von Features auf die Daten anwenden sollte. Angenommen, wir haben eine Reihe von Funktionen, wobei einige der Funktionen einen sehr breiten Wertebereich und einige Funktionen einen nicht so breiten Wertebereich aufweisen.

Wenn ich eine Hauptkomponentenanalyse durchführen würde, müsste ich die Daten normalisieren. Dies ist klar, aber nehmen wir an, wir versuchen, die Daten mithilfe einer einfachen k-nächsten Nachbarn / linearen Regression zu klassifizieren Methode.

Unter welchen Bedingungen sollte oder sollte ich die Daten normalisieren und warum? Ein kurzes und einfaches Beispiel, das den der Antwort hinzugefügten Punkt hervorhebt, wäre perfekt.

Siehe: https://stats.stackexchange.com/questions/29781/when-conducting-multiple-regression-when-should-you-center-your-predictor-varia
Fünf antworten:
#1
+20
Karolis Koncevičius
2014-10-29 15:05:40 UTC
view on stackexchange narkive permalink

Aus meiner Sicht ist die Frage nach dem Skalieren / Nicht-Skalieren der Features beim maschinellen Lernen eine Aussage über die Maßeinheiten Ihrer Features. Und es hängt mit dem Vorwissen zusammen, das Sie über das Problem haben.

Einige der Algorithmen, wie Lineare Diskriminanzanalyse und Naive Bayes , verfügen über eine Skalierung von Funktionen Sie hätten keine Auswirkung darauf, eine manuell durchzuführen. Andere, wie z. B. knn, können davon stark betroffen sein.

Bei einem Klassifizierer vom Typ knn müssen Sie also die Abstände zwischen Stichprobenpaaren messen. Die Abstände werden natürlich von den verwendeten Maßeinheiten beeinflusst. Stellen Sie sich vor, Sie klassifizieren die Bevölkerung in Männer und Frauen und haben eine Reihe von Messungen, einschließlich der Körpergröße. Jetzt wird Ihr Klassifizierungsergebnis durch die Messungen beeinflusst, in denen die Höhe angegeben wurde. Wenn die Höhe in Nanometern gemessen wird, ist es wahrscheinlich, dass k nächste Nachbarn lediglich ähnliche Höhenmaße haben. Sie müssen skalieren.

Stellen Sie sich jedoch als Kontrastbeispiel vor, etwas zu klassifizieren, bei dem gleiche Maßeinheiten mit Rauschen aufgezeichnet wurden. Wie ein Foto oder ein Microarray oder ein Spektrum. In diesem Fall wissen Sie bereits a priori, dass Ihre Funktionen gleiche Einheiten haben. Wenn Sie sie alle skalieren würden, würden Sie den Effekt von Merkmalen verstärken, die über alle Proben hinweg konstant sind, aber mit Rauschen gemessen wurden. (Wie ein Hintergrund des Fotos). Dies hat wiederum einen Einfluss auf knn und kann die Leistung drastisch verringern, wenn Ihre Daten im Vergleich zu denen, die variieren, verrauschte konstante Werte aufweisen. Jetzt wird jede Ähnlichkeit zwischen k nächsten Nachbarn durch Rauschen beeinflusst.

Dies ist also wie bei allem anderen beim maschinellen Lernen - verwenden Sie nach Möglichkeit Vorkenntnisse und bei Black-Box-Funktionen beides und Cross-Cross validieren.

Gute Beispiele ...
Nur eine kurze Folge, warum sollte kNN von der Feature-Skalierung betroffen sein?Die Mahalanobis-Distanz sollte dies meines Wissens bereits berücksichtigen.
@SebastianRaschka Als kNN aus irgendeinem Grund erwähnt wurde, hatte ich nur die euklidische Distanz im Sinn.Dies sollte die Verwirrung erklären.kNN kann natürlich auch mit anderen Entfernungsmesswerten verwendet werden. Vielen Dank, dass Sie dies bemerkt haben.
In Andrew Ngs Kurs über maschinelles Lernen erklärt er, dass die Skalierung von Merkmalen auch wichtig ist, wenn ein Gradientenabstieg durchgeführt wird, um ein lineares Regressionsmodell anzupassen (https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in der Praxis-i-Feature-Skalierung).
#2
+16
Neil G
2014-10-29 14:58:58 UTC
view on stackexchange narkive permalink

Sie sollten normalisieren, wenn die Skalierung eines Features irrelevant oder irreführend ist, und nicht normalisieren, wenn die Skalierung sinnvoll ist.

K-means betrachtet die euklidische Entfernung als sinnvoll. Wenn ein Feature im Vergleich zu einem anderen einen großen Maßstab hat, das erste Feature jedoch eine größere Vielfalt darstellt, sollte das Clustering in dieser Dimension bestraft werden.

Bei der Regression spielt es keine Rolle, solange Sie eine Tendenz haben Wenn Sie normalisieren oder nicht, da Sie eine affine Karte entdecken und die Zusammensetzung einer Skalierungstransformation und einer affinen Karte immer noch affin ist.

Wenn Lernraten beteiligt sind, z Wenn Sie einen Gradientenabstieg durchführen, skaliert die Eingabeskala die Gradienten effektiv, was möglicherweise eine Methode zweiter Ordnung erfordert, um die Lernraten pro Parameter zu stabilisieren. Es ist wahrscheinlich einfacher, die Eingaben zu normalisieren, wenn es nicht anders ist.

#3
+8
show_stopper
2014-10-29 14:49:07 UTC
view on stackexchange narkive permalink

Es gibt verschiedene Normalisierungsmethoden.

In Bezug auf die Regression besteht keine Notwendigkeit, wenn Sie die Funktion um einen einzelnen Faktor normalisieren möchten. Der Grund dafür ist, dass die Normalisierung eines einzelnen Faktors wie das Teilen oder Multiplizieren mit einer Konstanten bereits in den Gewichten angepasst wird (dh das Gewicht eines Merkmals beträgt 3, aber wenn wir alle Werte des Merkmals durch Teilen durch 2 normalisieren, dann das neue Das Gewicht beträgt 6, daher ist der Effekt insgesamt gleich. Wenn Sie dagegen normalisieren möchten, gibt es eine andere Geschichte. Die mittlere Normalisierung ist gut, wenn die Merkmalswerte sehr unterschiedlich sind (1 70 300 4). Auch wenn ein einzelnes Merkmal sowohl einen positiven als auch einen negativen Effekt haben kann, ist es gut, Normalisierung zu bedeuten. Dies liegt daran, dass, wenn Sie meinen, einen bestimmten Satz positiver Werte zu normalisieren, die Werte unter dem Mittelwert negativ werden, während die über dem Mittelwert positiv werden.

In Bezug auf k-nächste Nachbarn sollte die Normalisierung immer durchgeführt werden. Dies liegt daran, dass in KNN der Abstand zwischen Punkten die Clusterbildung verursacht. Wenn Sie also KNN auf ein Problem mit 2 Features anwenden, wobei das erste Feature zwischen 1 und 10 liegt und das andere zwischen 1 und 1000 liegt, werden alle Cluster basierend auf dem zweiten Feature generiert, da der Unterschied zwischen 1 und 10 liegt klein im Vergleich zu 1-1000 und kann daher alle zu einer einzigen Gruppe zusammengefasst werden

"... wenn ein einzelnes Merkmal sowohl einen positiven als auch einen negativen Effekt haben kann, ist es gut, Normalisierung zu bedeuten. Wenn Sie einen bestimmten Satz positiver Werte normalisieren, werden die Werte unter dem Mittelwert negativ, während die über dem Mittelwert positiv werden.""- Wird das Vorhandensein eines Bias-Terms nicht zulassen, dass ein Merkmal trotz eines positiven Wertebereichs einen positiven oder negativen Effekt hat?
#4
+4
cbeleites unhappy with SX
2015-10-04 17:00:37 UTC
view on stackexchange narkive permalink

Hier ist ein weiteres chemometrisches Anwendungsbeispiel, bei dem die Skalierung von Merkmalen katastrophal wäre:

Es gibt viele Klassifizierungsaufgaben (qualitative Analyse) der Form "Test, ob ein Gehalt an Analyten (= Substanz von Interesse) darunter liegt ( oder darüber) einen bestimmten Schwellenwert (z. B. gesetzliche Grenze) ". In diesem Fall würden die Sensoren zur Erzeugung der Eingangsdaten für den Klassifizierer so gewählt, dass sie $$ Signal = f (Analyt ~ Konzentration) $$ haben, vorzugsweise wobei $ f $ eine steile und gleichmäßige lineare Funktion ist.

In dieser Situation würde die Feature-Skalierung im Wesentlichen alle relevanten Informationen aus den Rohdaten löschen.


Im Allgemeinen einige Fragen, die bei der Entscheidung helfen, ob die Skalierung eine gute Idee ist:

  • Was macht die Normalisierung mit Ihren Daten? die anstehende aufgabe lösen? Sollte dies einfacher werden oder riskieren Sie, wichtige Informationen zu löschen?
  • Reagiert Ihr Algorithmus / Klassifikator empfindlich auf die (numerische) Skala der Daten? (Konvergenz)
  • Wird der Algorithmus / Klassifikator stark von verschiedenen Maßstäben verschiedener Merkmale beeinflusst?
  • Wenn ja, haben Ihre Merkmale dieselben (oder vergleichbare) Maßstäbe oder sogar physikalische Einheiten?
  • Führt Ihr Klassifikator / Algorithmus / tatsächliche Implementierung eine eigene Normalisierung durch?
#5
+3
RUser4512
2018-04-19 13:55:32 UTC
view on stackexchange narkive permalink

Dieses Problem scheint in vielen Kursen / Ressourcen für maschinelles Lernen tatsächlich übersehen zu werden. Am Ende schrieb ich einen Artikel über Skalierung in meinem Blog.

Kurz gesagt, es gibt invariante Lernmethoden für die "monotone Transformation" (Entscheidungsbäume und alles, was daraus abgeleitet wird), übersetzungsinvariante Lernmethoden (kNN, SVM mit RBF-Kernel) und andere.

Offensichtlich sind die monotonen transformationsinvarianten Lernmethoden übersetzungsinvariant.

Bei der ersten Klasse müssen Sie keine Zentrierung / Skalierung durchführen. Mit den übersetzungsinvarianten Algorithmen ist die Zentrierung nutzlos. Bei den anderen Methoden kommt es wirklich auf die Daten an. Normalerweise kann es sich lohnen, die Skalierung zu versuchen (insbesondere wenn Variablen unterschiedliche Größenordnungen haben).

Im Allgemeinen würde ich empfehlen, verschiedene Vorverarbeitungen der Daten auszuprobieren: ohne Skalierung, Skalierung durch Division durch die Standardabweichung, Skalierung durch Division durch die Summe der absoluten Werte Ihrer Daten (was dazu führen würde, dass sie auf einem Simplex liegen). Einer von ihnen wird besser abschneiden als die anderen, aber ich kann nicht sagen, welcher, bis ich es versucht habe.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...