2013-03-18 16 views
7

Sagen Sie versuchen, Häuser zu klassifizieren, basierend auf bestimmten Merkmalen:Wie mit Merkmalsvektor variabler Länge umgehen?

  • Gesamtfläche
  • Anzahl der Zimmer
  • Garage Bereich

Aber nicht alle Häuser haben Garagen. Aber wenn sie es tun, ist ihre Gesamtfläche ein sehr diskriminierendes Merkmal. Was ist ein guter Ansatz, um die in dieser Funktion enthaltenen Informationen zu nutzen?

Antwort

5

Sie könnten eine Null/eine Dummy-Variable einbeziehen, die angibt, ob es eine Garage gibt, sowie das Cross-Produkt des Garagenbereichs mit dem Dummy (für Häuser ohne Garage setzen Sie den Bereich auf Null).

+2

Ich sehe nicht, wie die Dummy-Variable nichts ändert, wenn Sie die Garagenbereiche auf Null setzen. Das Problem, das ich bei der Einstellung der nicht vorhandenen Garagenbereiche auf 0 sehe, ist, dass sie ähnlich wie extrem kleine Garagen betrachtet werden, was ungenau ist. – jessems

+0

@ ty4: Hier kommt der Dummy ins Spiel. Wenn Sie zum Beispiel ein lineares Modell einbauen würden, würden Sie dank dem Dummy einen anderen Schnittpunkt für Häuser mit und ohne Garagen bekommen. In zweiter Linie brauchen Sie wahrscheinlich nicht einmal das Cross-Produkt. – NPE

1

Der beste Ansatz besteht darin, Ihr Dataset mit allen Features zu erstellen, und in den meisten Fällen ist es gut, die Spalten, die nicht verfügbar sind, mit Nullen zu füllen.

Ihr Beispiel verwendet, wäre es so etwas wie:

Total area Number of rooms Garage area 
100   2    0 
300   2    5 
125   1    1.5 

Oft wird der Lernalgorithmus, der von Ihnen gewählten mächtig genug wäre, diese Nullen richtig zu nutzen, dass der Eintritt zu klassifizieren. Nach der Abwesenheit des Wertes ist es immer noch die Information für den Algorithmus. Dies kann zu einem Problem werden, wenn Ihre Daten verzerrt sind. In diesem Fall müssen Sie jedoch die Schiefe berücksichtigen.

EDIT:

ich nur erkennen, dass es mit einem Kommentar eine andere Antwort waren Sie Angst, Nullen zu verwenden, angesichts der Tatsache, dass mit kleinen Garagen verwechselt werden könnte. Während ich immer noch kein Problem damit sehe (es sollte genügend Unterschied zwischen einer kleinen Garage und Null geben), können Sie immer noch die gleiche Struktur verwenden, die die Nicht-Existenzzone mit einer negativen Zahl markiert (sagen wir -1).

Die Lösung, die in der anderen Antwort angezeigt wird, ist auch vollkommen plausibel, eine zusätzliche Eigenschaft zu haben, die angibt, ob das Haus Garage hat oder nicht würde gut arbeiten (besonders in Entscheidungsbaum basierten Algorithmen). Ich bevorzuge es, die Dimensionalität der Daten so gering wie möglich zu halten, aber am Ende ist dies mehr eine Vorliebe als eine technische Entscheidung.

0

Sie sollten eine Nullindikatorfunktion integrieren. Das heißt, ein Merkmal, das 1 ist, wenn die Garage-Größe 0 ist, und 0 für jeden anderen Wert.

Ihr Merkmalsvektor ist dann: Bereich | num_rooms | garage_size | garage_exists

Ihr maschineller Lernalgorithmus wird dann in der Lage sein, dieses (nicht lineare) Merkmal der Werkstattgröße zu sehen.

Verwandte Themen