Ich habe eine Lösung des Wohnungspreiswettbewerbs auf Kaggle ( Human Analogs Kernel on House Prices: Advance Regression Techniques ) durchlaufen und bin auf diesen Teil gestoßen :
# Transform the skewed numeric features by taking log(feature + 1).
# This will make the features more normal.
from scipy.stats import skew
skewed = train_df_munged[numeric_features].apply(lambda x: skew(x.dropna().astype(float)))
skewed = skewed[skewed > 0.75]
skewed = skewed.index
train_df_munged[skewed] = np.log1p(train_df_munged[skewed])
test_df_munged[skewed] = np.log1p(test_df_munged[skewed])
Ich bin nicht sicher, was die Notwendigkeit ist, eine verzerrte Verteilung in eine normale Verteilung umzuwandeln. Kann mir bitte jemand im Detail erklären:
- Warum wird das hier gemacht? oder Wie ist das hilfreich?
- Inwiefern unterscheidet sich das von der Feature-Skalierung?
- Ist dies ein notwendiger Schritt für das Feature-Engineering? Was passiert wahrscheinlich, wenn ich diesen Schritt überspringe?
regression
feature-extraction
feature-engineering
kaggle
feature-scaling
Abhijay Ghildyal
quelle
quelle
Antworten:
Vielleicht möchten Sie Ihre Koeffizienten interpretieren. Das heißt, in der Lage zu sein, Dinge wie "wenn ich meine Variable um 1 erhöhe , dann sollte Y im Durchschnitt und bei allen anderen gleichen Werten um β 1 zunehmen ".X1 Y. β1
Damit Ihre Koeffizienten interpretierbar sind, setzt die lineare Regression eine Reihe von Dingen voraus.
Eines dieser Dinge ist keine Multikollinearität. Das heißt, Ihre Variablen sollten nicht miteinander korreliert werden.X
Ein anderes ist Homoskedastizität . Die Fehler, die Ihr Modell festlegt, sollten die gleiche Varianz haben, dh Sie sollten sicherstellen, dass die lineare Regression keine kleinen Fehler für niedrige Werte von und große Fehler für höhere Werte von X verursacht . Mit anderen Worten, der Unterschied zwischen dem, was man vorhersagen , Y und die wahren Werte Y sollte konstant sein. Sie können dies sicherstellen, indem Sie sicherstellen, dass Y einer Gaußschen Verteilung folgt. (Der Beweis ist sehr mathematisch.)X X Y.^ Y. Y.
Abhängig von Ihren Daten können Sie diese möglicherweise als Gauß-Daten definieren. Typische Transformationen sind Inverse, Logarithmus oder Quadratwurzeln. Natürlich gibt es viele andere, alles hängt von Ihren Daten ab. Sie müssen sich Ihre Daten ansehen und dann ein Histogramm erstellen oder einen Normalitätstest wie den Shapiro-Wilk-Test durchführen.
Dies sind alles Techniken, um einen unvoreingenommenen Schätzer zu erstellen . Ich denke nicht, dass dies etwas mit Konvergenz zu tun hat, wie andere gesagt haben (manchmal möchten Sie vielleicht auch Ihre Daten normalisieren, aber das ist ein anderes Thema).
Das Befolgen der linearen Regressionsannahmen ist wichtig, wenn Sie die Koeffizienten interpretieren oder statistische Tests in Ihrem Modell verwenden möchten. Ansonsten vergiss es.
Die Anwendung des Logarithmus oder Ihre Daten zu normalisieren, ist auch wichtig , weil die lineare Regression Optimierungsalgorithmen typischerweise minimieren∥ y^- y∥2 y
normalize
quelle
Die verzerrten Daten werden hier normalisiert, indem eine Eins hinzugefügt wird (eine wird hinzugefügt, damit die Nullen in eine Eins umgewandelt werden, da kein Protokoll von 0 definiert ist) und ein natürliches Protokoll erstellt wird. Die Daten können mit Transformationstechniken wie Quadratwurzel, Kehrwert oder Logarithmus nahezu normalisiert werden. Nun, warum ist es erforderlich. Tatsächlich gehen viele der Algorithmen in Daten davon aus, dass die Datenwissenschaft normal ist, und berechnen unter dieser Annahme verschiedene Statistiken. Je näher die Daten an der Normalität liegen, desto besser entspricht sie der Annahme.
quelle
Weil Data Science letztendlich nur Statistik ist und eine der Hauptannahmen der Statistik der zentrale Grenzwertsatz ist . Dieser Schritt wird ausgeführt, da einige nachfolgende Schritte statistische Techniken verwenden, die darauf basieren.
quelle