Generieren Sie die Bedeutung von Funktionen mit Scikit Learn und Random Forest
Lernen Sie ein grundlegendes Konzept für die Anwendung von Random Forest auf Ihre Projekte kennen und vergleichen Sie das Ergebnis mit verschiedenen Methoden
Der Random-Forest-Algorithmus wurde in einer Reihe von Branchen angewendet, um bessere Geschäftsentscheidungen zu treffen. Einige Anwendungsfälle umfassen die Analyse hoher Kreditrisiken und Produktempfehlungen für Cross-Selling-Zwecke.
In diesem Artikel möchte ich Sie kurz durch verschiedene Methoden zur Generierung der Merkmalsbedeutung mithilfe des klassischen Rotweinqualitätsvalidierungsdatensatzes führen. Am Ende dieses Kapitels können Sie über ein grundlegendes Konzept für die Anwendung von Random Forest auf Ihre Projekte verfügen und das Ergebnis mit verschiedenen Methoden vergleichen.
Inhaltsverzeichnis: Generieren Sie die Bedeutung von Objektmerkmalen mithilfe von Scikit Learn und Random Forest beim maschinellen Lernen
- Rotwein-Datensatz und Datentrainingsaufteilung
- Integrierte Funktionsbedeutung mit Scikit-learn
- Integrierte Scikit-Learn-Methode mit einer Zufallsfunktion
- Bedeutung der Permutationsmerkmale
- Bedeutung zufälliger Gesamtstrukturmerkmale mit SNAP
- Bedeutung zufälliger Waldpfadmerkmale
- Vollständiger Generator für Python-Skripte mit Funktionsbedeutung
- Kursempfehlung für Kurse zu Datenwissenschaft und maschinellem Lernen
Rotwein-Datensatz und Datentrainingsaufteilung
Für jedes maschinelle Lernmodell ist es von entscheidender Bedeutung, einen geeigneten Datensatz zu erhalten oder die Daten vorzuverarbeiten. Kaggle ist eine der beliebtesten Plattformen für die Suche nach geeigneten Datensätzen. Hier ist der Link zum Rotwein-Qualitätsprojekt.
https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009
Als Erstes ist die Verarbeitung der Daten mit Pandas und Sklearn train_test_split der erste Schritt.
url = "winequality-red.csv"
wine_data = pd . read_csv ( url , sep = ";" )
x = wine_data . drop ( 'quality' , axis = 1 )
y = wine_data [ 'quality' ]
x_train , x_test , y_train , y_test = train_test_split ( x , y , test_size = 0.5 , random_state = 50 )
Integrierte Funktionsbedeutung mit Scikit-learn
Scikit-learn bietet eine integrierte Feature-Wichtigkeitsmethode für Random Forest-Modelle. Der Dokumentation zufolge basiert diese Methode auf der Verringerung der Knotenverunreinigung.
In einem Random Forest ähneln die Fragen den Features im Modell. Einige Fragen helfen Ihnen, mehr Möglichkeiten auszuschließen als andere. Man geht davon aus, dass Funktionen, die Ihnen helfen, schnell mehr Möglichkeiten auszuschließen, wichtiger sind, weil sie Ihnen dabei helfen, schneller der richtigen Antwort näher zu kommen. Mit Scikit-learn ist es sehr einfach, diese wichtigen Funktionen zu erhalten:
rf = RandomForestRegressor ( n_estimators = 100 , random_state = 50 )
rf . fit ( x_train , y_train )
inbuilt_importances = pd . Series ( rf . feature_importances_ , index = x_train .columns)
inbuilt_importances . sort_values ( ascending = True , inplace = True )
inbuilt_importances . plot . barh ( color = 'black' )
Integrierte Scikit-Learn-Methode mit einer Zufallsfunktion
Der einfachste Weg, diese Methode weiterzuentwickeln, besteht darin, dem Datensatz ein Zufallsmerkmal hinzuzufügen und zu prüfen, ob das Ergebnis möglicherweise stärker abweicht als das erste ohne Zufallsmerkmal.
Wenn ein reales Merkmal eine geringere Bedeutung hat als das zufällige Merkmal, könnte dies darauf hindeuten, dass seine Bedeutung nur dem Zufall geschuldet ist.
def randomMethod ():
X_train_random = x_train .copy()
X_train_random [ "RANDOM" ] = np . random . RandomState ( 42 ). randn ( x_train .shape[ 0 ])
rf_random = RandomForestRegressor ( n_estimators = 100 , random_state = 42 )
rf_random . fit ( X_train_random , y_train )
importances_random = pd . Series ( rf_random . feature_importances_ , index = X_train_random .columns)
importances_random . sort_values ( ascending = True , inplace = True )
importances_random . plot . barh ( color = 'blue' )
plt . xlabel ( "Importance" )
plt . ylabel ( "Feature" )
plt . title ( "Feature Importance - Scikit Learn Built-in with random" )
plt . show ()
return
Bedeutung der Permutationsmerkmale
Permutationsmerkmalsbedeutung ist eine weitere Technik, um die Wichtigkeit jedes Merkmals in einem Random-Forest-Modell abzuschätzen, indem die Änderung der Modellleistung gemessen wird, wenn die Werte des Merkmals zufällig gemischt werden.
Einer der Vorteile dieser Methode besteht darin, dass sie mit jedem Modell verwendet werden kann, nicht nur mit Random Forests, wodurch die Ergebnisse zwischen den Modellen besser vergleichbar sind.
Bedeutung zufälliger Gesamtstrukturmerkmale mit SNAP
SHAP ist eine Methode zur Interpretation der Ergebnisse maschineller Lernmodelle basierend auf der Spieltheorie.
Es bietet ein einheitliches Maß für die Wichtigkeit von Merkmalen, das wie die Permutationswichtigkeit auf jedes Modell angewendet werden kann.
Der Hauptnachteil besteht darin, dass es rechenintensiv sein kann, insbesondere bei großen Datensätzen oder komplexen Modellen.
Bedeutung zufälliger Waldpfadmerkmale
Eine andere Möglichkeit zu verstehen, wie jedes Feature zu den Random Forest-Vorhersagen beiträgt, besteht darin, sich die Entscheidungsbaumpfade anzusehen, die jede Instanz nimmt.
Es berechnet die Differenz zwischen dem Vorhersagewert am Blattknoten und den Vorhersagewerten an den Knoten davor, um den geschätzten Beitrag jedes Features zu erhalten.
Vollständiges Python- Skript für den Feature-Wichtigkeitsgenerator
Wenn Sie sich für Kapitel 76 – Generieren der Bedeutung von Objektmerkmalen mithilfe von Scikit Learn und Random Forest interessieren, Bitte abonnieren Sie unseren Newsletter , indem Sie die Nachricht „Kapitel 75 + Notion API“ hinzufügen. . Wir senden Ihnen das Skript umgehend in Ihr Postfach.
Ich wünsche Ihnen viel Spaß beim Lesen von Kapitel 76 – Generieren der Bedeutung von Objektmerkmalen mithilfe von Scikit Learn und Random Forest. Wenn ja, unterstützen Sie uns bitte, indem Sie eine der unten aufgeführten Maßnahmen ergreifen, da dies unserem Kanal immer weiterhilft.
- Unterstützen Sie unseren Kanal und spenden Sie über PayPal ( paypal.me/Easy2digital )
- Abonnieren Sie meinen Kanal und aktivieren Sie die Benachrichtigungsglocke des Easy2Digital-Youtube-Kanals .
- Folgen und liken Sie meine Easy2Digital-Facebook-Seite
- Teilen Sie den Artikel in Ihrem sozialen Netzwerk mit dem Hashtag #easy2digital
- Sie melden sich für unseren wöchentlichen Newsletter an, um die neuesten Artikel, Videos und Rabattcodes von Easy2Digital zu erhalten
- Abonnieren Sie unsere monatliche Mitgliedschaft über Patreon, um exklusive Vorteile zu genießen ( www.patreon.com/louisludigital )