So normalisieren Sie Daten für das neuronale Netz und den Entscheidungswald


10

Ich habe einen Datensatz mit 20000 Proben, jede hat 12 verschiedene Funktionen. Jede Stichprobe gehört entweder zur Kategorie 0 oder 1. Ich möchte ein neuronales Netzwerk und einen Entscheidungswald trainieren, um die Stichproben zu kategorisieren, damit ich die Ergebnisse und beide Techniken vergleichen kann.

Das erste, worauf ich gestoßen bin, ist die richtige Normalisierung der Daten. Ein Merkmal liegt im Bereich , ein anderes in und es gibt ein Merkmal, das meistens den Wert 8 und manchmal 7 annimmt. ich also in verschiedenen Quellen lese, ist die Eingabe richtig normalisiert Daten sind für neuronale Netze von entscheidender Bedeutung. Wie ich herausgefunden habe, gibt es viele Möglichkeiten, die Daten zu normalisieren, zum Beispiel:[0,106]][30,40]]

  1. Min-Max-Normalisierung : Der Eingabebereich wird linear in das Intervall transformiert (oder alternativ , spielt das eine Rolle?)[0,1]][- -1,1]]
  2. Z-Score-Normalisierung : Die Daten werden so transformiert, dass sie einen Mittelwert von Null und eine Einheitsvarianz aufweisen:
    ynew=yÖld- -bedeutenVar

Welche Normalisierung soll ich wählen? Wird Normalisierung auch für Entscheidungswälder benötigt? Bei der Z-Score-Normalisierung liegen die verschiedenen Merkmale meiner Testdaten nicht im gleichen Bereich. Könnte dies ein Problem sein? Sollte jedes Feature mit demselben Algorithmus normalisiert werden, sodass ich mich entscheide, entweder Min-Max für alle Features oder Z-Score für alle Features zu verwenden?

Gibt es Kombinationen, bei denen die Daten auf abgebildet sind und auch einen Mittelwert von Null haben (was eine nichtlineare Transformation der Daten und damit eine Änderung der Varianz und anderer Merkmale der Eingabedaten implizieren würde).[- -1,1]]

Ich fühle mich etwas verloren, weil ich keine Referenzen finde, die diese Fragen beantworten.

Antworten:


21

Ich bin mit den anderen Kommentaren nicht einverstanden.

(X.xich,X.>xich)

Zufällige Wälder sind nur eine Reihe von Entscheidungsbäumen, daher ändert dies nichts an dieser Begründung.

Neuronale Netze sind eine andere Geschichte. Erstens macht es in Bezug auf die Vorhersage keinen Unterschied. Das neuronale Netzwerk kann Ihrer Normalisierung leicht entgegenwirken, da es nur die Gewichte skaliert und die Vorspannung ändert. Das große Problem liegt im Training.

Wenn Sie einen Algorithmus wie die elastische Backpropagation verwenden , um die Gewichte des neuronalen Netzwerks zu schätzen, spielt dies keine Rolle. Der Grund dafür ist, dass das Vorzeichen des Gradienten und nicht seine Größe verwendet wird, wenn die Gewichte in die Richtung geändert werden, die Ihren Fehler minimiert. Dies ist neuralnetübrigens der Standardalgorithmus für das Paket in R.

Wann macht es einen Unterschied? Wenn Sie die herkömmliche Backpropagation mit Sigmoid-Aktivierungsfunktionen verwenden, kann dies das Sigmoid-Derivat sättigen .

Betrachten Sie die Sigmoidfunktion (grün) und ihre Ableitung (blau):

Sigmoid

s'(9999)=0

X.- -MindestX.maxX.- -MindestX.- -0,5

Die tatsächliche Normalisierung ist nicht sehr wichtig, da sie nur die anfänglichen Iterationen des Optimierungsprozesses beeinflusst. Solange es zentriert ist und die meisten Ihrer Daten unter 1 liegen, müssen Sie möglicherweise etwas weniger oder mehr Iterationen verwenden, um das gleiche Ergebnis zu erzielen. Das Ergebnis ist jedoch dasselbe, solange Sie das von mir erwähnte Sättigungsproblem vermeiden.

Es wird hier etwas nicht besprochen, nämlich die Regularisierung . Wenn Sie in Ihrer Zielfunktion die Regularisierung verwenden, wirkt sich die Art und Weise, wie Sie Ihre Daten normalisieren , auf das resultierende Modell aus. Ich gehe davon aus, dass Sie damit bereits vertraut sind. Wenn Sie wissen, dass eine Variable anfälliger für Überanpassungen ist, sollte Ihre Normalisierung der Daten dies berücksichtigen. Dies ist natürlich völlig unabhängig von den verwendeten neuronalen Netzen.


2
  1. Es gibt keine eindeutige Antwort . Ich würde empfehlen, Ihre Daten mit unterschiedlichen Ansätzen zu skalieren und dann dasselbe Modell zu verwenden, um die Ergebnisse Ihres Holdout-Sets vorherzusagen (RFs würden hier gut funktionieren). Das sollte Ihnen zumindest zeigen, welcher Skalierungsansatz für Ihr Vorhersageproblem am besten geeignet ist.
  2. Sie müssen Ihre Daten nicht für zufällige Wälder skalieren
  3. Die einzelnen Bereiche sollten kein Problem sein, solange sie zunächst konsistent skaliert werden. Dies zeigt nur, dass es Unterschiede zwischen den Variablen gibt, nur in einem kompakteren Maßstab als zuvor.
  4. Ja, alle Ihre Daten sollten mit demselben Ansatz skaliert werden. Andernfalls beziehen sich die Werte in Ihrem transformierten Datensatz möglicherweise nicht auf die Daten selbst, sondern auf das für die Skalierung verwendete Algo.

Hoffentlich hilft das.


1
Tolle Antwort, ich möchte nur hinzufügen, dass es ein bisschen von der speziellen Verteilung der Daten abhängt, mit denen Sie es zu tun haben, und davon, ob Sie Ausreißer entfernen. Normale Daten sehen sehr gut aus, wenn Sie sie standardisieren. Eine gleichmäßige Verteilung könnte jedoch mit einer Min / Max-Normalisierung viel besser aussehen. Außerdem kann eine logarithmische Normalverteilung mit Sigma = 10 einen Großteil des interessanten Verhaltens nahe Null verbergen, wenn Sie es min / max normalisieren.
AN6U5

@ AN6U5 - Sehr guter Punkt. Ich habe ehrlich gesagt nicht zu viel über die Auswirkungen der Skalierung auf verschiedene zugrunde liegende Verteilungen / Ausreißer nachgedacht. Könnte es heute Morgen nachlesen!
plumbus_bouquet
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.