One-Hot-Vektoren

Abgeschlossen

Bisher haben wir die Codierung von kontinuierlichen Daten (Gleitkommazahlen), Ordinaldaten (in der Regel ganze Zahlen) und binären kategorischen Daten (überlebt/gestorben, männlich/weiblich) behandelt.

Jetzt erfahren Sie, wie Sie Daten codieren, und wir sehen uns kategorische Datenressourcen mit mehr als zwei Klassen an. Außerdem untersuchen wir die potenziell schädlichen Auswirkungen unserer Entscheidungen zur Modellverbesserung auf die Modellleistung.

Kategorische Daten sind nicht numerisch.

Kategorische Daten funktionieren nicht auf dieselbe Weise mit Zahlen wie andere Datentypen. Bei Ordinal- oder kontinuierlichen (numerischen) Daten implizieren höhere Werte einen Anstieg der Menge. Beispielsweise ist ein Preis von „£30“ für ein Titanic-Ticket mehr Geld als ein Ticketpreis von „£12“.

Im Gegensatz dazu haben kategorische Daten keine logische Reihenfolge. Der Versuch, kategorische Features mit mehr als zwei Klassen als Zahlen zu codieren, führt zu Problemen.

Für den Einschiffungshafen gibt es beispielsweise drei Werte: C (Cherbourg), Q (Queenstown) und S (Southampton). Wir können diese Symbole nicht durch Zahlen ersetzen. Andernfalls würde dies implizieren, dass einer dieser Häfen weniger als die anderen ist, während ein anderer mehr als die anderen ist. Eine solche Ersetzung ergibt also keinen Sinn.

Als Beispiel für dieses Problem werfen wir die Vernunft über Bord und modellieren die Beziehung zwischen Einschiffungshafen und Ticketklasse, wobei wir den Einschiffungshafen als Zahl behandeln. Zuerst legen wir C < S < Q fest:

Bild eines Diagramms, das PClass gegen PortAsNumber darstellt

In diesem Diagramm sagt die Linie eine Klasse von ~3 für Hafen Q voraus.

Wenn wir jetzt S < C < Q festlegen, erhalten wir eine andere Trendlinie und Vorhersage:

Bild eines Diagramms, das PClass gegen PortAsNumber mit flacherer Trendlinie darstellt

Keine dieser Trendlinien ist korrekt. Es ist nicht sinnvoll, Kategorien als fortlaufende Features zu behandeln. Wie arbeiten wir also mit Kategorien?

One-Hot-Codierung

Mit der One-Hot-Codierung können kategorische Daten so codiert werden, dass dieses Problem vermieden wird. Jede verfügbare Kategorie erhält eine eigene einzelne Spalte, und eine bestimmte Zeile enthält nur einen einzelnen Wert 1 in der Kategorie, zu der sie gehört.

Wir können beispielsweise den Hafenwert in drei Spalten codieren: eine für Cherbourg, eine für Queenstown und eine für Southampton (die genaue Reihenfolge spielt hier keine Rolle). Eine Person, die in Cherbourg an Bord geht, würde in der Spalte „Port_Cherbourg“ eine 1 aufweisen:

Port_Cherbourg Port_Queenstown Port_Southampton
1 0 0

Eine Person, die in Queenstown an Bord geht, würde in der zweiten Spalte eine 1 aufweisen:

Port_Cherbourg Port_Queenstown Port_Southampton
0 1 0

Eine Person, die in Southampton an Bord geht, würde in der dritten Spalte eine 1 aufweisen:

Port_Cherbourg Port_Queenstown Port_Southampton
0 0 1

One-Hot-Codierung, Datenreinigung und statistische Leistung

Bevor wir die One-Hot-Codierung verwenden, müssen Sie verstehen, dass diese Verwendung in der realen Welt positive oder negative Auswirkungen auf die Leistung eines Modells haben kann.

Was ist statistische Leistung?

Als statistische Leistung wird die Fähigkeit eines Modells bezeichnet, echte Beziehungen zwischen Features und Bezeichnungen zuverlässig zu identifizieren. Beispielsweise kann ein leistungsfähiges Modell eine Beziehung zwischen Ticketpreis und Überlebensquote mit einem hohen Grad an Sicherheit angeben. Im Gegensatz dazu gibt ein Modell mit geringer statistischer Leistung eine Beziehung möglicherweise mit einem niedrigen Grad an Sicherheit an oder findet sie überhaupt nicht.

Wir sparen uns an dieser Stelle die genauen mathematischen Berechnungen. Denken Sie aber immer daran, dass unsere Entscheidungen sich auf die Leistungsfähigkeit unserer Modelle auswirken können.

Das Entfernen von Daten senkt die statistische Leistung.

Wir haben bereits mehrmals erwähnt, dass das Bereinigen von Daten auch das Entfernen unvollständiger Datenstichproben bedeutet. Leider kann die Datenbereinigung die statistische Leistung verringern. Nehmen wir beispielsweise an, dass wir die Überlebenschance auf der Titanic mit den folgenden Daten vorhersagen möchten:

Ticketpreis Überleben
£4 0
£8 0
£10 1
£25 1

Wir könnten vermuten, dass jemand mit einem Ticket für 15 £ überleben würde, da alle Menschen überlebt haben, deren Tickets mindestens 10 £ kosteten. Wenn wir jedoch weniger Daten hätten, würde diese Vermutung schwieriger werden:

Ticketpreis Überleben
£4 0
£8 0
£25 1

Wertlose Spalten senken die statistische Leistung.

Features mit geringem Nutzen können auch die statistische Leistung beeinträchtigen, insbesondere wenn die Anzahl von Features (oder Spalten) beginnt, sich der Anzahl der Stichproben (oder Zeilen) anzunähern.

Nehmen wir beispielsweise an, dass wir die Überlebenschance mit den folgenden Daten vorhersagen möchten:

Ticketpreis Überleben
£4 0
£4 0
£25 1
£25 1

Damit könnten wir sicher vorhersagen, dass eine Person mit einem Ticket für Kabinentyp A überleben würde, da alle Personen mit Tickets für 25 £ überlebt haben.

Jetzt haben wir jedoch ein weiteres Feature (Kabine):

Ticketpreis Cabin Überleben
£4 Ein 0
£4 Ein 0
£25 B 1
£25 B 1

Die Kabine stellt keine nützlichen Informationen zur Verfügung, da sie einfach dem Ticketpreis entspricht. Es ist nicht klar, on jemand mit einem 25 £ Kabine A-Ticket überleben würde. Vergehen sie, wie andere von Kabine A, oder überleben sie wie diejenigen mit 25 £ Tickets?

One-Hot-Codierung kann die statistische Leistung reduzieren.

Die One-Hot-Codierung reduziert die statistische Leistung mehr als kontinuierliche Daten oder Ordinaldaten, da sie mehrere Spalten erfordert – eine für jeden möglichen kategorischen Wert. Beispielsweise fügt die One-Hot-Codierung des Einschiffungshafens drei Modelleingaben hinzu (C, S und Q).

Eine kategorische Variable wird dann hilfreich, wenn die Anzahl der Kategorien wesentlich kleiner ist als die Anzahl der Stichproben (Datasetzeilen). Eine kategorische Variable wird auch dann hilfreich, wenn sie Informationen bereitstellt, die dem Modell noch nicht durch andere Eingaben zur Verfügung stehen.

Beispielsweise haben wir gesehen, dass die Wahrscheinlichkeit des Überlebens für Personen unterschiedlich ist, die sich an verschiedenen Häfen eingeschifft haben. Diese Abweichung spiegelt wahrscheinlich nur die Tatsache wider, dass die meisten Personen in Queenstown Tickets der dritten Klasse hatten. Daher wird die statistische Leistung durch den Hafen wahrscheinlich leicht verringert, ohne dass unserem Modell relevante Informationen hinzugefügt werden.

Im Gegensatz dazu hat Kabine wahrscheinlich einen starken Einfluss auf das Überleben. Dies liegt daran, dass die unteren Kabinen des Schiffes mit Wasser gefüllt hätten, bevor die Kabinen näher an der oberen Deck des Schiffes mit Wasser gefüllt wären. Das Titanic-Dataset enthält jedoch 147 verschiedene Kabinen. Die statistische Leistung unseres Modells wird reduziert, wenn wir sie einbeziehen. Wir müssen möglicherweise mit dem Ein- oder Ausschließen von Kabinendaten in unserem Modell experimentieren, um herauszufinden, ob sie nützlich sind.

In der nächsten Übung erstellen wir schließlich unser Modell, das die Überlebenschancen auf der Titanic vorhersagt, und üben damit die One-Hot-Codierung.