Scikit-Learn-Permutations-Bedeutung

Scikit-Learn-Permutations-Bedeutung

  • Künstliche Intelligenz
6 Minuten Lesezeit Aktualisiert Oct 3, 2018

Auf einen Blick: Die Permutations-Wichtigkeitsmethode von scikit-learn bewertet die Bedeutung von Eingabevariablen für Modellergebnisse, indem Daten gemischt und Leistungsänderungen gemessen werden. Diese Technik verbessert die Modellgenauigkeit und identifiziert unnötige Variablen für die Eliminierung.

  • Die Permutationsprämietigkeit bewertet die variable Relevanz durch Änderung der Eingabedaten.
  • Die Methode verbessert die Modellgenauigkeit, indem unnötige Variablen identifiziert werden.

In diesem Beitrag werde ich zeigen, warum Menschen bei der letzten US-Wahl für Trump gestimmt haben, was dasselbe ist, als würde man gegen Clinton sagen, weil die Randkandidaten kaum Stimmen erhalten haben, relativ gesehen.

Die Technik behandelt hier eine der schwierigsten Fragen in Black-Box-Klassifikator- und Regressionsmodellen: Welche Variablen sollte man aus einem Regressionsmodell entfernen, um es genauer zu machen?

Wie Permutationsprämienz funktioniert

Im ELI5 scikit-learn-Python-Framework verwenden wir die Permutations-Wichtigkeit-Methode. Permutations-Importance funktioniert für viele Scikit-Learn-Schätzer. Sie mischt die Daten und entfernt verschiedene Eingabevariablen, um relative Veränderungen bei der Berechnung des Trainingsmodells zu erkennen. Sie misst auch, wie stark das Ergebnis bei der Eingabevariable steigt oder fällt, und berechnet so deren Einfluss auf die Ergebnisse.

Mit anderen Worten: Für die lineare Regression berechnet sie zunächst zum Beispiel die Koeffizienten α, β, γ, ...

    y = αa + βb + γc + … + ωz + B

Und dann wird das Modell mit Kreuzentropie oder einer anderen Technik getestet, dann wird der r2-Wert, F1 und die Genauigkeit berechnet. Schließlich lässt das Modell eine von a, b, c, ... und führt sie erneut aus.

Diese Methode hat zwei Nachteile:

  1. Andere ML-Frameworks unterstützen dies nicht.
  2. Die Ausgabe ist ein HTML-Objekt, das nur mit iPython (auch Jupyter genannt) angezeigt werden kann.

Running Jupyter

Nichts ist einfacher als Jupyter auszuführen – es ist einfacher, das Zeppelin einzurichten, das selbst kaum Einrichtung erfordert. Installiere einfach Anaconda und gib dann auf dem Mac Jupyter Notebook ein. Diese URL öffnet sich im Browser http://localhost:8889/tree.

Clinton gegen Trump

Zuerst finden Sie hier Ihre US-Wahldaten. Diese Zusammenfassungen gelten für jeden Landkreis in jedem Bundesstaat der USA.  Der Code, den wir schreiben, wird hier gespeichert.

Wir verwenden die read_csv Pandas-Methode , um die Wahldaten auszulesen und nehmen nur wenige Spalten. Sie könnten weitere Spalten hinzufügen, um herauszufinden, welche anderen Variablen mit der Wahl des Wählers korrelieren.

Unten befindet sich der vollständige Code. Hier erklären wir verschiedene Abschnitte. Aber zuerst hier sind die Ergebnisse sowohl im HTML- als auch im Textformat.

Sie können also die Spalten im Datenrahmen anhand ihres Index sehen, hier sind sie:

    Index(['Trump', 'age65plus', 'SEX255214', 'White', 'Black', 'Hispanic',
       'Edu_highschool'],
      dtype='object')

Hier sind die relativen Gewichte.

Spaltenname Gewicht Ausstattung
age65plus 0,5458 ± 0,0367 x0
Hispanisch 0,3746 ± 0,0348 x4
Weiß 0,2959 ± 0,0159 x2
SEX255214 0,0323 ± 0,0064 x1
Edu_highschool 0,0272 ± 0,0038 x5
Schwarz 0,0207 ± 0,0023 x3

Die Grafik ist im iPython-Notizbuch wie folgt dargestellt:

Wie Sie sehen können, hängt die Entscheidung, ob man für Trump stimmt, hauptsächlich vom Alter ab, wobei Wähler ab 65 Jahren am engsten mit dem Ergebnis korrelieren. Überraschenderweise spielt das Geschlecht kaum eine Rolle.

Der Code erklärte es

In einem anderen Blog erklären wir, wie man eine lineare Regression durchführt. Die Technik ist hier dieselbe, nur dass wir mehr als eine unabhängige Variable verwenden, also x.

Wir nehmen als unabhängige Variablen xx alles außer Trump, das die abhängige Variable ist, yy. Eine Stimme für Trump ist eine Stimme nicht für Hillary. Die Ausgabe für die yy-Variable sollte also gleich oder ähnlich sein, aber sie wird nicht exakt identisch mit yy <> 1 - xx in den Daten sein.

Wir verwenden die Werteeigenschaften des Dataframes, um das in ein NumPy-Array umzuwandeln, da es das ist, was die Fit-Methode von LR erfordert.

    xx = train[['White','Black','Hispanic','age65plus','Edu_highschool','SEX255214']].values
yy = train[['Trump']].values

Wir müssen die Arrays nicht umformen, da die Abmessungen die Anforderung erfüllen, dass sie gepaart werden können. XX hat 3112 Zeilen und 6 Spalten. YY entspricht 3112 x 1.

    xx.shape is (3112, 6)
yy.shape is (3112, 1)

Als Nächstes führen wir die Anpassungsmethode von linear_model durch. Dann drucken wir die Koeffizienten aus:

    Coefficients: 
 [[ 0.51503519 -0.13783668 -0.44485146  0.00352575 -0.00985589 -0.00801731]]

Dann folgt das große Finale – die Passungsmethode PermutationImportance wird durchgeführt, gefolgt vom Zeichnen des Graphen. Diese mischt die Eingabevariablen und führt eine lineare Regression mehrfach aus und berechnet dann, welche unabhängigen Variablen den größten Einfluss auf die Berechnung der Koeffizienten haben und somit y,

    perm = PermutationImportance(reg, random_state=1).fit(xx, yy)
eli5.show_weights(perm)

Hier ist der vollständige Code.

    import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score
import pandas as pd
import eli5
from eli5.sklearn import PermutationImportance

train = pd.read_csv('/Users/walkerrowe/Documents/keras/votes.csv',usecols=['Trump','White','Black','Hispanic','age65plus','Edu_highschool','SEX255214'])
 
xx = train[['White','Black','Hispanic','age65plus','Edu_highschool','SEX255214']].values
yy = train[['Trump']].values
reg = linear_model.LinearRegression()
model=reg.fit(xx,yy)
print('Coefficients: \n', reg.coef_)
perm = PermutationImportance(reg, random_state=1).fit(xx, yy)
eli5.show_weights(perm)

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Künstliche Intelligenz

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.