Warum funktioniert Feature Engineering?

20

Kürzlich habe ich erfahren, dass eine Möglichkeit, bessere Lösungen für ML-Probleme zu finden, in der Erstellung von Features besteht. Man kann das zum Beispiel durch Summieren von zwei Merkmalen tun.

Zum Beispiel besitzen wir zwei Funktionen "Angriff" und "Verteidigung" einer Art Held. Wir erstellen dann ein zusätzliches Feature namens "total", das eine Summe aus "Angriff" und "Verteidigung" ist. Was mir jetzt seltsam erscheint, ist, dass selbst harte "Angriffe" und "Verteidigungen" fast perfekt mit "Gesamt" korrelieren und wir trotzdem nützliche Informationen erhalten.

Was ist die Mathematik dahinter? Oder argumentiere ich falsch?

Ist das kein Problem für Klassifikatoren wie kNN, dass "total" immer größer ist als "attack" oder "defense"? Daher werden wir auch nach der Standardisierung Features haben, die Werte aus verschiedenen Bereichen enthalten.

MrKadek750
quelle
Die Praxis des Summierens von zwei Merkmalen repräsentiert sicherlich nicht das "Merkmal-Engineering" im Allgemeinen.
Xji

Antworten:

21

Du fragst den Titel und der Inhalt scheint mir nicht zu passen. Wenn Sie ein lineares Modell verwenden, fügen Sie zusätzlich zu Angriff und Verteidigung eine Gesamtfunktion hinzu, die die Situation verschlimmert.

Zuerst würde ich beantworten, warum Feature-Engineering im Allgemeinen funktioniert.

Ein Bild sagt mehr als tausend Worte. Diese Abbildung gibt Ihnen möglicherweise einige Einblicke in das Feature-Engineering und warum es funktioniert ( Bildquelle ):

Bildbeschreibung hier eingeben

  • Die Daten in kartesischen Koordinaten sind komplizierter und es ist relativ schwierig, eine Regel zu schreiben / ein Modell zu erstellen, um zwei Typen zu klassifizieren.

  • Die Daten in Polarkoordinaten sind sehr einfach: Wir können eine einfache Regel für schreiben , um zwei Typen zu klassifizieren.r

Dies sagt uns, dass die Darstellung der Daten sehr wichtig ist. In bestimmten Räumen ist es viel einfacher, bestimmte Aufgaben zu erledigen als in anderen Räumen.

Hier beantworte ich die in Ihrem Beispiel erwähnte Frage (insgesamt bei Angriff und Verteidigung)

Tatsächlich funktioniert das in diesem Beispiel aus Angriff und Verteidigung erwähnte Feature-Engineering bei vielen Modellen wie dem linearen Modell nicht gut und verursacht einige Probleme. Siehe Multikollinearität . Auf der anderen Seite kann ein solches Feature-Engineering für andere Modelle wie Entscheidungsbaum / zufällige Gesamtstruktur verwendet werden. Weitere Informationen finden Sie in der Antwort von @ Imran.

Die Antwort lautet also, dass je nach verwendetem Modell einige Funktionen für einige Modelle hilfreich sind, nicht jedoch für andere Modelle.

Haitao Du
quelle
Die Summe muss nicht mit den Addenden kollinear sein. Siehe zum Beispiel meine Antwort.
Kodiologist
15

Der von uns verwendete Modelltyp ist möglicherweise nicht sehr effizient beim Erlernen bestimmter Kombinationen vorhandener Features.

ad0ein+d<01ein+d0

Da Entscheidungsbäume nur entlang einzelner Feature-Achsen aufgeteilt werden können, wird unser Modell versuchen, eine Treppe zu erstellen, die zu einer Linie passt, die ungefähr so ​​aussieht:

Bildbeschreibung hier eingeben

Wie Sie sehen, lässt sich dies nicht perfekt auf neue Daten übertragen. Wir können Kreise über der wahren Entscheidungslinie haben, die sich unter unserer Entscheidungsgrenze befinden, und umgekehrt für Kreuze.

Wenn wir jedoch a+dein Feature hinzufügen, wird das Problem für einen Entscheidungsbaum trivial. Es kann das Individuum aund die dMerkmale ignorieren und das Problem mit einem einzigen a+d<0Entscheidungsstumpf lösen .

Bildbeschreibung hier eingeben

ein+d

Zusammenfassend kann gesagt werden, dass je nach verwendetem Modelltyp bestimmte zusätzliche Funktionen hilfreich sein können. Achten Sie beim Entwickeln von Funktionen darauf, sowohl die Daten als auch das Modell zu berücksichtigen.

Imran
quelle
1
Genau das ist der Punkt. Auswahl der Merkmale und Auswahl des Modells müssen zusammen berücksichtigt werden. Es ist eine häufige Gefahr, über die Auswahl von Features nachzudenken, ohne den verwendeten Modelltyp zu berücksichtigen.
Imran
1
Wenn Sie zum Beispiel dasselbe mit linearer Regression versucht haben aund ddies ausreichen würde und das Hinzufügen a+dals Feature keinen Unterschied machen würde.
Imran
Ich habe meine Antwort aktualisiert, um dies deutlicher zu machen.
Imran
1
Darüber hinaus erfordert das Teilen über die diagonale Linie eine Teilung. Die Treppe, die Sie gezeichnet haben, "verbraucht" sieben Spalten.
Akkumulation
3

totaltotalattackdefenseattackdefensetotalattacktotaldefense17

Ist das kein Problem für Klassifikatoren wie kNN, dass "total" immer größer ist als "attack" oder "defense"? Daher werden wir auch nach der Standardisierung Features haben, die Werte aus verschiedenen Bereichen enthalten.

Wenn Sie Ihre Prädiktoren standardisieren möchten, sollten Sie dies tun, nachdem alle erstellt wurden.

Kodiologist
quelle
1
ist das wirklich wahr In einem einfachen linearen Modell ist dies sicherlich nicht der Fall: Die Matrix [attack, defense, total]hat natürlich Rang 2. Ich könnte mir vorstellen, dass es in so etwas wie einem bestraften linearen Modell einen Unterschied machen könnte, aber das basiert eher auf der Intuition als darauf, es vollständig durchzuarbeiten. Können Sie erklären, warum wenn attackund defensenicht stark korreliert sind total(was passiert, wenn attackund defensesind stark negativ korreliert), warum totalkann hilfreich sein?
Cliff AB
1
@CliffAB Im Nachhinein war ich hier ein bisschen glib. Ich habe zu Recht gesagt, dass ein konstruiertes Feature nützlich sein kann, wenn es nicht stark mit anderen Prädiktoren korreliert ist und totalnicht stark mit attackoder korreliert sein muss defense, aber Sie würden aufgrund der Linearität niemals zwei Prädiktoren und deren Summe im selben Modell verwenden Abhängigkeit, mit impliziert eine starke Korrelation zwischen einigen zwei der drei.
Kodiologist
1

Um eine allgemeine Antwort zu geben, geht es beim Feature-Engineering in den meisten Fällen darum, aussagekräftige Features aus Ihren Daten zu extrahieren. Wenn Sie also Ihrem Modell mehr Informationen geben, sollte es sich offensichtlich besser verhalten. Angenommen, Ihre Daten bestehen aus E-Mail-Adressen im Format '[email protected]'. Wenn Sie sie unverändert in Ihrem Modell verwenden, wird jede Person durch eine eindeutige E-Mail-Adresse gekennzeichnet, sodass dies nicht viel aussagt. Es würde uns nur sagen, dass eine E-Mail möglicherweise zu einer anderen Person gehört als zu einer anderen. Mit Feature Engineering können Sie aus solchen Adressen Informationen über das mögliche Geschlecht (Name), den familiären Hintergrund und die ethnische Zugehörigkeit (Nachname), die Nationalität (Domäne) und vieles mehr extrahieren - es gibt Ihnen ziemlich viele Informationen, nicht wahr?

Tim
quelle
1

Was versuchst du mit deiner "Feature" Summe zu erreichen ? Wenn Sie nur Helden vergleichen, greifen Sie an und verteidigen Sie sich möglicherweise nützlicher. Wenn Sie die Art des Builds (wie offensiv oder defensiv) als nützlich erachten würden, wäre Angriff / Verteidigung vielleicht nützlicher. Oder vielleicht ist MyAttack - YourDefense nützlicher.

Es hängt wirklich von Ihrem Ziel ab und es läuft darauf hinaus, dass Sie zusätzliches Wissen in das Problem einbringen, damit Sie bessere Antworten erhalten. Sie haben vielleicht gehört, wie Leute herumgeschleudert haben und squared und ratio befasst haben, und alle Arten von Möglichkeiten, wie Sie Features erstellen können, aber das Fazit ist, dass "nützlich" von der jeweiligen Aufgabe abhängt und die Umwandlung Ihrer Daten in eine Domäne umfasst, in der Entscheidungen getroffen werden einfacher.

Wayne
quelle