Ein Vorhersagemodell für Armut in Costa Rica

Photo by prohispano on pixabay

Ein Vorhersagemodell für Armut in Costa Rica

Problemstellung und Ziel

Um Armut weltweit besiegen zu können, werden gute Modelle gebraucht, die vorhersagen können, wie sicher Menschen vor Armut sind und an welcher Stelle Hilfe am nötigsten ist.

Um sicherzustellen, dass soziale Wohlfahrtsprogramme an der richtigen Stelle Hilfe leisten können, gibt es den Proxy Means Test, eine Bedürftigkeitsprüfung.
Dies ist eine Feststellung, ob eine Person oder eine Familie Anspruch auf staatliche Unterstützung hat, basierend darauf, ob die Person oder die Familie die Mittel besitzt, auf diese Hilfe zu verzichten. In diesem Fall sind die betrachteten Attribute Eigenschaften des Hauses, in dem eine Familie lebt, zum Beispiel der Zustand und das Material von Wänden und Böden. Die vorliegenden Daten wurden von der interamerikanischen Entwicklungsbank zur Verfügung gestellt, die Ergebnisse sollen dazu dienen, weltweit die Hilfestellung bei bedürftigen Familien zu verbessern.

Entwicklung eines Models, das zur Identifikation von Haushalten und Familien, die ein Recht auf staatliche Unterstützung haben, verwendet werden kann.

Ziel dabei ist die Vorhersage eines Armutslevels, basierend auf Charakteristika eines Haushaltes.

Datensatz

Der Datensatz beinhaltet einen repräsentativen Ausschnitt von Haushalten in Costa Rica. Es gibt Attribute zu den Haushalten im Allgemeinen und zu den einzelnen Personen eines jeden Haushaltes, so wie die Bildungsstufe, das Alter oder das Geschlecht. 

Erklärungen zu den Variablen:

https://www.kaggle.com/c/costa-rican-household-poverty-prediction/data

Zielvariable:

1 = extreme Armut

2 =  Moderate Armut

3 = Gefährdeter Haushalt

4 = Nicht gefährdeter Haushalt

Methode

  • Daten bereinigen und formatieren, eventuell Fehler beheben
  • Explorative Datenanalyse
  • Feature Engineering und Selection
  • Vergleich mehrerer infrage kommender Algorithmen
  • Den besten Algorithmus optimieren
  • Das Model aufbauen
  • Interpretation der Ergebnisse

Tools

Data Cleaning und Exploration

Für das Tidying werden die Datensätze train und test zusammengefügt. In Test werden in der Spalte für die Labels np.nans eingegeben

Feature Engineering

Neue Variable, die schlechte Eigenschaften des Hauses zusammenfasst. ‚housing_bad‘.

  • epared1, =1 if walls are bad
  • etecho1, =1 if roof are bad
  • pisonotiene, =1 if no floor at the household
  • noelec, =1 no electricity in the dwelling
  • sanitario1, =1 no toilet in the dwelling
  • abastaguano, =1 if no water provision
df[‚housing_bad‘] = df.epared1 + df.etecho1 + df.pisonotiene + df.noelec + df.sanitario1 + df.abastaguano

Feature Selection

Code, um aus der Korrelationsmatrix alle Werte, die über 0.95 liegen, zu extrahieren. Jeden Wert nur einmal anzeigen, also nur alle Werte, die über der Diagonalen liegen, extrahieren und vergleichen.

Es werden folgende Variablen entfernt:

df = df.drop([‚area2‘, ‚hogar_total‘, ‚male‘, ‚r4t3‘, ‚tamhog‘], axis = 1)

Vorbereitung der Daten für das Modeling

Da zuerst mehrere Algorithmen getestet werden sollen, ist es sinnvoll, den Datensatz auszugleichen und zu normalisieren, da manche Algorithmen sonst nicht korrekt aus den Daten lernen können. Je nachdem, auf welchen Algorithmus im Anschluss die Wahl fällt, kann dann der Original-Datensatz verwendet werden.

Train- und Testset

Ein Test Set wird zu Anfang erstellt und dann beiseitegelegt. Es wird am Ende, wenn das Model kreiert wurde, verwendet, um die Performance des Models zu evaluieren. Auf keinen Fall sollten die Train Daten zum Testen oder andersherum verwendet werden, da das Model hier nicht lernen würde, zu generalisieren. Die Ergebnisse wäre sehr gut, aber das Model wäre overfitted und würde bei neuen Daten sehr schlechte Ergebnisse zeigen.

Umgang mit Class Imbalance

Wir haben eine Class Imbalance in einem Multi-Class-Problem vorliegen. Daher wird mit SMOTE oversampled, so dass eine Gleichverteilung der Zielvariablen vorliegt. Das Oversampling wird nur für den Trainings-Datensatz durchgeführt.

Feature Transformation

Die Daten werden mit dem StandardScaler aus Scikit-Learn normalisiert.

Damit werden alle Features jeweils so transformiert, dass sie normalverteilt sind, der Mittelweirt bei 0 liegt und die Standardabweichung = 1 ist.

Modeling

Metrik

Hier wird der F1 Score als Metrik verwendet. Er ist eine Kombination aus Precision und Recall und ideal für Probleme, bei denen der Datensatz unausgeglichen ist.

F1 = 2 * (precision * recall) / (precision + recall)

Bei der Berechnung des Mittelwertes in der Kreuzvalidierung für die Auswahl des Algorithmus wird als average „micro“ oder „weighted“ verwendet, weil hier die Klassen entsprechend gewichtet werden, was bei einer Class Imbalance wichtig ist. 

Vergleich und Auswahl von Algorithmen

Getestet werden:

  • Logistic Regression: Kann für multiclass Aufgaben verwendet werden mit Parametern solver=’lbfgs‘, multi_class=’multinomial‘
  • Random Forest Classifier: Ensemble aus Entscheidungsbäumen
  • KNeighbors Classifier
  • Support Vector Classifier
  • Gradient Boosting Classifier

Ergebnisse für den F1-Score und Standardabweichung ohne Oversampling und skalieren

Ergebnisse für den F1-Score und Standardabweichung mit Oversampling und skalieren

Auswahl

Der  Random Forest Algorithmus zeigt die besten Ergebnisse, daher wird dieser nun weiter verwendet und optimiert. 

Optimierung des Models

Testen verschiedener Datensätze

Random Forest mit default Parametern und mit Originaldatensatz

Weighted Random Forest mit Originaldatensatz

Random Forest mit default Parametern und oversampling des Train Datensatzes

Beste Hyperparameter

Mit Grid Search werden die besten Hyperparameter für dieses Model gefunden. Der Train Datensatz ist weiterhin oversampled, jedoch nicht skaliert. Mit diesen Parametern sind die Ergebnisse wie folgt:

Ergebnisse des besten Models

Wichtigste Features

Ergebnisse nach Recursive Feature Elimination

Neuer Datensatz, in dem nur die wichtigsten Features behalten werden, wird mit dem besten Model getestet. Es zeigt sich, dass der F1-Score so weiter verbessert werden konnte. 

Verteilung der Variablen im Datensatz und Verteilung der vorhergesagten Variablen

Confusion Matrix

Folgende Schritte wurden im Projekt unternommen

  1. Bereinigung der Daten und Exploration
  2. Feature Engineering
  3. Vergleich und Auswahl von Algorithmen
  4. Hyperparameter Tuning des besten Algorithmus
  5. Testen verschiedener Feature-Sets
  6. Das beste Model auf dem Test-Set evaluieren

Bestes Model

Random Forest Classifier, Datensatz mit X_train oversampled mit SMOTE und Feature Selection mit Recursive Feature Elimination

Verbesserungsmöglichkeiten

  • Weitere Features konstruieren
  • Mehr unwichtige Features eliminieren
  • Neue Algorithmen testen, wie zum Beispiel XGBoost
  • Automatisiertes Feature Engineering verwenden

Comments are closed.