Ist dies eine gute Praxis des Feature-Engineerings?

10

Ich habe eine praktische Frage zum Feature Engineering ... Ich möchte die Immobilienpreise mithilfe der logistischen Regression vorhersagen und habe eine Reihe von Funktionen einschließlich der Postleitzahl verwendet. Wenn ich dann die Wichtigkeit der Funktionen überprüfe, stelle ich fest, dass Zip eine ziemlich gute Funktion ist. Deshalb habe ich beschlossen, einige weitere Funktionen basierend auf Zip hinzuzufügen. Ich gehe zum Beispiel zum Volkszählungsbüro und erhalte das Durchschnittseinkommen, die Bevölkerung, die Anzahl der Schulen und die Anzahl von Krankenhäusern jeder Postleitzahl. Mit diesen vier neuen Funktionen finde ich die Modellleistungen jetzt besser. Also füge ich noch mehr Zip-bezogene Funktionen hinzu ... Und dieser Zyklus geht weiter und weiter. Irgendwann wird das Modell von diesen Zip-bezogenen Funktionen dominiert, oder?

Meine Fragen:

  1. Ist es überhaupt sinnvoll, dies zu tun?
  2. Wenn ja, woher weiß ich, wann ein guter Zeitpunkt ist, um diesen Zyklus zu stoppen?
  3. Wenn nicht, warum nicht?
user3768495
quelle

Antworten:

6

Wenn Sie weiterhin neue Daten hinzufügen können (basierend auf einem Hauptkonzept wie dem Bereich, z. B. der Postleitzahl) und die Leistung Ihres Modells verbessert wird, ist dies natürlich zulässig ... vorausgesetzt, Sie kümmern sich nur um das Endergebnis.

Es gibt Metriken, die Ihnen dabei helfen sollen , wie das Akaike Information Criterion (AIC) oder das vergleichbare Bayesian Information Criterion (BIC). Diese helfen im Wesentlichen dabei, ein Modell anhand seiner Leistung auszuwählen und werden für alle zusätzlichen Parameter bestraft, die eingeführt werden und die geschätzt werden müssen. Der AIC sieht folgendermaßen aus:

AIC=2k2ln(L^)

kL^k

Mithilfe dieser Kriterien können Sie feststellen, wann Sie aufhören müssen, da Sie Modelle mit immer mehr Parametern ausprobieren und einfach das Modell mit dem besten AIC- oder BIC-Wert verwenden können.

Wenn das Modell noch andere Funktionen enthält, die nicht mit der Postleitzahl zusammenhängen, können diese möglicherweise überfordert sein - dies hängt vom verwendeten Modell ab. Sie können jedoch auch Dinge über den Datensatz erklären, die einfach nicht in den Postleitzahlinformationen enthalten sein können, z. B. die Grundfläche eines Hauses (vorausgesetzt, dies ist relativ unabhängig von der Postleitzahl).

In diesem Fall können Sie diese mit einer Hauptkomponentenanalyse vergleichen, bei der eine Sammlung von Merkmalen eine Verringerung der Varianz im Datensatz erklärt, während andere Merkmale eine andere Dimension erklären. Unabhängig davon, wie viele ZIP-bezogene Funktionen Sie haben, werden Sie möglicherweise nie die Bedeutung der Bodenfläche erklären.

n1k31t4
quelle
7

1) Ja, das macht Sinn. Der Versuch, Features manuell zu erstellen, hilft den Lernenden (dh Modellen), mehr Informationen aus den Rohdaten zu erfassen, da die Rohdaten nicht immer in einer Form vorliegen, die für das Lernen zugänglich ist, Sie jedoch jederzeit Features daraus erstellen können. Die Funktion, die Sie hinzufügen, basiert auf einer Funktion. Das ist üblich. Ihr Lernender, die logistische Regression, reagiert jedoch empfindlich auf Multikollinearität. Sie müssen vorsichtig sein, welche Funktion und wie viele Funktionen hinzugefügt werden sollen. Andernfalls kann Ihr Modell überanpassen.

2) Da Sie eine logistische Regression verwenden, können Sie immer AIC verwenden oder einen statistischen Signifikanztest wie den Chi-Quadrat-Test (Testen der Anpassungsgüte) durchführen, bevor Sie eine neue Struktur hinzufügen, um zu entscheiden, ob die Verteilung der Antwort wirklich unterschiedlich ist mit und ohne diese Struktur. Dies ist besonders nützlich, wenn Ihre Daten knapp sind. Eine andere Möglichkeit besteht darin, Ihrem Modell einen Strafbegriff hinzuzufügen. Zum Beispiel logistische Lasso-Regression.

3) Das Hinzufügen neuer Funktionen ist nicht immer eine gute Idee. Sei vorsichtig mit dem Fluch der Hochdimensionalität. Wenn Sie eine neue Funktion hinzufügen, fügen Sie Ihren Daten tatsächlich eine neue Dimension hinzu. Naiv könnte man denken, dass das Sammeln weiterer Funktionen niemals schadet, da sie im schlimmsten Fall keine neuen Informationen über die Klasse liefern. Tatsächlich können ihre Vorteile jedoch durch den Fluch der Dimensionalität aufgewogen werden. Ich hoffe, dass nützliche Informationen über die maschinelle Lernsitzung6 hilfreich sein können.

Fansly
quelle
Bewertet @ user3768495 die Leistung des Modells außerhalb der Stichprobe, z. B. anhand einer Kreuzvalidierung? In diesem Fall sollte die Multikollinearität kein Problem darstellen und er sollte sich keine Sorgen über eine Überanpassung machen, da er durch die abnehmende Validierungsleistung einen Hinweis auf eine Überanpassung erhält.
Rinspy
@rinspy Überanpassung hat viele Gesichter. Das Einbeziehen eines Validierungssatzes kann helfen, eine Überanpassung zu vermeiden, kann das Problem jedoch nicht lösen. Zum Beispiel die inkonsistente Verteilung zwischen Trainingsdaten (die in Trainingssatz und Validierungssatz unterteilt sind) und der realen Bevölkerung. Selbst wenn das Modell in den Trainingsdaten eine gute Leistung erbringt, kann es möglicherweise nicht auf die reale Situation verallgemeinert werden. Der Verweis aus meiner Antwort sprach auch über Überanpassung.
Fansly
Es stimmt, aber die Vermeidung von Multikollinearität hilft nicht bei der Überanpassung, die sich aus kovariaten Verschiebungen ergibt. Ich sage nur, dass Multikollinearität wahrscheinlich kein Problem ist, wenn er daran interessiert ist, ein Vorhersagemodell (und kein beschreibendes Modell) aufzubauen.
Rinspy
Bei meinem Konzept zur Überanpassung geht es darum, dass ein Modell nicht auf einen neuen Datensatz verallgemeinert werden kann und nicht auf die Trainingsdaten. Bitte sehen Sie dies
Fansly
4

Normalerweise ist es umso besser, je reicher die Funktionen sind.

Beachten Sie jedoch, dass Regressionen im Allgemeinen mit Daten, die stark korreliert sind (Multikollinearität), nicht gut funktionieren. Wenn Sie Ihre Funktionen auf diese Weise erweitern, sollten Sie dies berücksichtigen.

Es gibt viele Informationen zu diesem Thema (und mögliche Möglichkeiten zur Minderung), nur Google-Regression und Multikollinearität.

Zusamenfassend,

  1. Ja. Ganz sicher.
  2. @ n1k31t4 hat einige gute Vorschläge. Sie können jederzeit generieren, welche Funktionen Ihrer Meinung nach Ihr Modell verbessern. Anschließend können Sie Techniken wie PCA und andere Techniken zur Funktionsauswahl verwenden, um sich auf das Wesentliche zu beschränken.
  3. Die andere zu berücksichtigende Sache ist, wie praktisch es ist, wie in Aufwand gegen Ergebnis.
Der Lyrist
quelle
0

Merkmale sind die Informationen Ihres Modells. Je mehr Informationen vorhanden sind, desto besser können sie ausgeführt und vorhergesagt werden. Je geringer der Wert, desto schwieriger ist es, Werte vorherzusagen. Der kurze Naser ist also ja. Es lohnt sich immer, so viele Funktionen wie möglich zu haben. Dies ist jedoch immer begrenzt, da auch eine Informationsüberflutung Ihren Prozessor verbrennen kann. Achten Sie daher darauf, wie viele Funktionen entwickelt werden. Außerdem tragen unnötige Funktionen nur zum Burnout bei. Daher empfiehlt es sich immer, bestimmte Funktionen zu bereinigen. In der gesamten Datenvorverarbeitungsphase geht es darum.

Die erste Antwort enthält einige gute Details. Was das Stoppen eines Zyklus betrifft, müssen Sie verschiedene Maßnahmen und Faktoren berücksichtigen, um zu überprüfen, wo die Leistung Ihres Modells nicht mehr besser ist, und dies sind Maßnahmen wie der RMSE. Ein einfaches Beispiel ist die Verwendung der xgboostRegression für Ihre Daten und die Angabe der Anzahl der Zyklen. Führen Sie das Modell aus, und Sie erhalten den RMSE für jeden Zyklus. Es wird bis zu einem Grenzwert abnehmen, nach dem Sie ableiten können, dass das Modell nach einem bestimmten Zyklus ein Plateau erreicht hat. So funktioniert Modelloptimierung und -optimierung.

Shiv_90
quelle