Feature-Importanzen mit Gradient Boosting
Wie bei Random Forests können wir auch bei Gradient-Boosting-Modellen Feature-Importanzen extrahieren, um zu verstehen, welche Features die besten Prädiktoren sind. Oft lohnt es sich, verschiedene baumbasierte Modelle auszuprobieren und ihre Feature-Importanzen zu vergleichen. So lassen sich Besonderheiten einzelner Modelle besser ausmitteln.
Die Feature-Importanzen sind als numpy-Array in der Eigenschaft .feature_importances_ des Gradient-Boosting-Modells gespeichert. Um eine ansprechende Grafik zu erstellen, brauchen wir die sortierten Indizes der Feature-Importanzen über np.argsort(). Wir möchten die Features von groß nach klein anzeigen und verwenden dafür die Python-Indexierung, um die sortierten Importanzen umzukehren, z. B. feat_importances[::-1].
Diese Übung ist Teil des Kurses
<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>Übungsanweisungen
- Kehre die Variable
sorted_indexmithilfe der Python-Indexierung um, sodass sie von der größten zur kleinsten Reihenfolge verläuft. - Erstelle die sortierte Feature-Beschriftungsliste als
labels, indem dufeature_namesin ein numpy-Array umwandelst und mitsorted_indexindexierst. - Erstelle ein Balkendiagramm der xticks sowie von
feature_importances, indexiert mit der Variablesorted_index, und verwendelabelsals xtick-Beschriftungen.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Extract feature importances from the fitted gradient boosting model
feature_importances = gbr.feature_importances_
# Get the indices of the largest to smallest feature importances
sorted_index = np.argsort(feature_importances)[::____]
x = range(features.shape[1])
# Create tick labels
labels = np.array(feature_names)[____]
plt.bar(____, feature_importances[____], tick_label=____)
# Set the tick lables to be the feature names, according to the sorted feature_idx
plt.xticks(rotation=90)
plt.show()