Feature-Konstruktion und Normalisierung beim maschinellen Lernen


13

Nehmen wir an, ich möchte einen logistischen Klassifikator für einen Film M erstellen. Meine Merkmale wären etwa das Alter der Person, das Geschlecht, der Beruf oder der Ort. Das Trainingsset würde also ungefähr so ​​aussehen:

  • Alter Geschlecht Beruf Standort Gefällt mir (1) / Gefällt mir nicht (0)
  • 23 M Software US 1
  • 24 F Doctor UK 0

und so weiter .... Nun ist meine Frage, wie ich meine Funktionen skalieren und darstellen soll. Ein Weg, den ich dachte: Teilen Sie das Alter in Altersgruppen ein, also 18-25, 25-35, 35-über, Geschlecht als M, F, Ort als US, UK, Andere. Erstellen Sie nun für alle diese Werte ein Binär-Feature. Daher verfügt age über 3 Binär-Features, die jeweils einer Altersgruppe entsprechen, und so weiter. Ein 28-jähriger Mann aus den USA würde also als 010 10 100 (010-> Altersgruppe 25-35, 10 -> Mann, 100 -> USA) dargestellt.

Was könnte der beste Weg sein, um Features hier darzustellen? Auch ist mir in einigen e.gs aufgefallen. B. Geschlecht wird durch zwei Werte dargestellt, 0,0045 und -0,0045 für männlich und weiblich. Ich habe keine Ahnung, wie man so eine Skalierung / Normalisierung durchführt.


Es ist mir nicht klar, warum Sie Ihre Funktionen skalieren möchten? Oft werden Features so normalisiert, dass sie 0 Mean Unity Standard Dev haben. Möglicherweise müssen Sie das Problem in Bezug auf die zu klassifizierenden Klassen definieren. Eine logistische Regression ist für die binäre Klassifizierung hilfreich.
BGreene

Sie wollen das Alter sicher nicht einordnen. Wie wird die "Bewertung des Films" gemessen? Ist es eine Skala von 1 bis 10, ein "Like / Dislike" oder was?
Peter Flom - Reinstate Monica

Nehmen wir der Einfachheit halber an, dass es nur zwei Klassen gibt, Like und Dislike. Als 1 und als 0 nicht. Habe die Problemstellung geändert, um dies widerzuspiegeln.
snow_leopard

Antworten:


15

Binärer Fall

Wenn Sie möchten, dass Ihre Features binär sind, sind die guten Darstellungen für kategoriale (bzw. reale ) Werte die One-Hot- (bzw. Thermometer- ) Codierung. Sie müssen sie nicht normalisieren.

Für die One-Hot- Codierung eines Kategoriefeatures reservieren Sie einfach ein Bit für jede Klasse. Die Länge dieser Codierung entspricht daher der Anzahl der Klassen Ihres Features. Nehmen wir Ihr Beispiel für Land,

  • 00001 für US
  • 00010 für Großbritannien
  • 00100 für Asien
  • 01000 für Europa
  • 10000 für andere

Für die Thermometercodierung eines Real / Integer- Merkmals müssen Sie eine Länge und die Schwellenwerte auswählen. Für Ihr Altersbeispiel haben Sie sich dafür entschieden, das Alter gemäß den Schwellenwerten 18,25 und 35 aufzuteilen. Die Codierung lautet

  • 000 für 0-17
  • 001 für 18-25
  • 011 für 25-34
  • 111 für 35 oben

00010UK01130yÖ

Fortlaufender Fall

00010UK3030yÖ

Wie BGreene sagte, sollten Sie diesen Wert dann normalisieren, um einen Mittelwert von 0 und eine Standardabweichung von 1 beizubehalten, was die Stabilität vieler Regressionsmodelle sicherstellt. Dazu subtrahieren Sie einfach den empirischen Mittelwert und dividieren durch die empirische Standardabweichung.

Y_normalized = ( Y - mean(Y) ) / std(Y)

(30-25)/10=0,5

00010UK0,530yÖ

Cool ... Nehmen wir an, wir haben eine Beispielperson wie folgt: Land: UK, Altersgruppe: 25-34. Dies führt zu Werten wie Country: 2 , Agegroup: 4, wenn wir eine Hot- Codierung verwenden. Jetzt sollten wir beim Erstellen eines Merkmalsvektors diese normalisieren. Nehmen wir also an, sie kommen als 0,4 und 0,6, dann wird unser zu modellierender Eingabe-Merkmalsvektor im Wesentlichen [0,4, 0,6], richtig?
snow_leopard

hmm .. wenn ich "one hot" -Codierung verwende, sollte ich den Codierungswert als Feature in seine Integer-Darstellung konvertieren, z. B. 0010 wird 2. ODER sollte ich dies als einen Satz von 4 Features behandeln, von denen nur eines aktiviert ist? Führt der erste Fall nicht die Vorstellung ein, dass 1000 weiter ist als 0001 und dann 0100, was möglicherweise nicht die Absicht ist, da wir nicht möchten, dass der US-Merkmalswert näher an dem UK-Merkmalswert als an dem Asien-Wert oder etwas anderem liegt?
snow_leopard

Ich habe meine Antwort bearbeitet, um diese Punkte zu verdeutlichen. Sie müssen keine binären Features normalisieren und müssen sie als Vektor behandeln. Konvertieren Sie sie nicht in eine Ganzzahl.
Emile

Wirklich hilfreiche und glasklare Erklärung. Vielen Dank!
George Liu
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.