by Anonymous » 29 Dec 2024, 05:45
Ich arbeite an einem Projekt mit einem Datensatz, in dem ziemlich viele Werte fehlen – wirklich viele.
Hier ist die Ausgabe von colSums(is.na(dati_train)) , zeigt die Anzahl der fehlenden Werte pro Spalte an:
Code: Select all
> colSums(is.na(dati_train)) # Number of NAs per column
PAID POINT_OF_SALE EVENT_ID YEAR
0 0 0 0
MONTH N_SUBSCRIPTIONS PRICE PHONE_NUMBER
0 0 0 0
PROP_CONBINI PAYMENT_TYPE FAV_GENRE AGE
0 0 967 1723
DAYS_FROM_PROMO BOOKS_PAID N_TRANSACTIONS N_ITEMS
0 5574 5574 0
DATE_LAST_PURCHASE CUSTOMER_SINCE MAIL SUBSCR_CANC
5574 5574 0 0
MARGIN
5574
>
Der Datensatz enthält rund 17.000 Beobachtungen, daher ist das Löschen von Zeilen mit fehlenden Werten keine Option. Hier ist mein aktueller Ansatz zum Umgang mit den fehlenden Werten, und ich würde mich über Ihr Feedback freuen:
- Für „FAV_GENRE“ und „AGE“ : Da die Anzahl der fehlenden Werte relativ gering ist, denke ich darüber nach, sie durch Mehrfachimputation zu ergänzen.
- < stark>Für die anderen Variablen: Die fehlenden Werte werden systematisch auf sie verteilt, so dachte ich von:
- Erstellen einer neuen binären Flag-Variablen, um anzuzeigen, ob der Wert fehlt oder nicht.
- Logistische Regression trainieren und LDA-Modelle, einschließlich dieser Flags als Features. Ich habe gelesen, dass dies eine gängige Praxis ist, aber ich habe es noch nie zuvor gemacht.
- Verwendung baumbasierter Modelle wie Random Forest und XGBoost: Ich weiß, dass diese Modelle mit fehlenden Werten umgehen können, aber ich habe in diesen Algorithmen noch nie mit fehlenden Daten gearbeitet. Gibt es Best Practices, die ich befolgen sollte?
Da ich auch Vorhersagen für einen anderen Datensatz mit einem ähnlichen fehlenden Wert treffen muss Bei Mustern ist das einfache Entfernen fehlender Werte keine Option. Ist mein Ansatz sinnvoll? Gibt es in solchen Fällen bessere Alternativen?
Lassen Sie mich wissen, was Sie denken – vielen Dank im Voraus!
Ich arbeite an einem Projekt mit einem Datensatz, in dem ziemlich viele Werte fehlen – wirklich viele.
Hier ist die Ausgabe von colSums(is.na(dati_train)) , zeigt die Anzahl der fehlenden Werte pro Spalte an:
[code]> colSums(is.na(dati_train)) # Number of NAs per column
PAID POINT_OF_SALE EVENT_ID YEAR
0 0 0 0
MONTH N_SUBSCRIPTIONS PRICE PHONE_NUMBER
0 0 0 0
PROP_CONBINI PAYMENT_TYPE FAV_GENRE AGE
0 0 967 1723
DAYS_FROM_PROMO BOOKS_PAID N_TRANSACTIONS N_ITEMS
0 5574 5574 0
DATE_LAST_PURCHASE CUSTOMER_SINCE MAIL SUBSCR_CANC
5574 5574 0 0
MARGIN
5574
>
[/code]
Der Datensatz enthält rund 17.000 Beobachtungen, daher ist das Löschen von Zeilen mit fehlenden Werten keine Option. Hier ist mein aktueller Ansatz zum Umgang mit den fehlenden Werten, und ich würde mich über Ihr Feedback freuen:
[list]
[*][b]Für „FAV_GENRE“ und „AGE“ [/b]: Da die Anzahl der fehlenden Werte relativ gering ist, denke ich darüber nach, sie durch Mehrfachimputation zu ergänzen.
[*]< stark>Für die anderen Variablen: Die fehlenden Werte werden systematisch auf sie verteilt, so dachte ich von:
[list]
Erstellen einer neuen binären Flag-Variablen, um anzuzeigen, ob der Wert fehlt oder nicht.
[*]Logistische Regression trainieren und LDA-Modelle, einschließlich dieser Flags als Features. Ich habe gelesen, dass dies eine gängige Praxis ist, aber ich habe es noch nie zuvor gemacht.
[/list]
[*] [b]Verwendung baumbasierter Modelle wie Random Forest und XGBoost[/b]: Ich weiß, dass diese Modelle mit fehlenden Werten umgehen können, aber ich habe in diesen Algorithmen noch nie mit fehlenden Daten gearbeitet. Gibt es Best Practices, die ich befolgen sollte?
[/list]
Da ich auch Vorhersagen für einen anderen Datensatz mit einem ähnlichen fehlenden Wert treffen muss Bei Mustern ist das einfache Entfernen fehlender Werte keine Option. Ist mein Ansatz sinnvoll? Gibt es in solchen Fällen bessere Alternativen?
Lassen Sie mich wissen, was Sie denken – vielen Dank im Voraus!