[PYTHON] Predictive Power Score für die Funktionsauswahl

Merkmalsauswahl

In diesem Artikel stellen wir den im April dieses Jahres veröffentlichten Predictive Power Score-Index vor, der für die Auswahl der Feature-Menge verwendet werden kann, sowie die Bibliothek ppscore, die ihn implementiert.

Übrigens wird beim Erstellen eines Vorhersagemodells die Auswahl der zu verwendenden Merkmalsmenge und der zu verwendenden erklärenden Variablen als Merkmalsmengenauswahl bezeichnet.

Es wird zum Zweck von gemacht.

Die Methoden zur Auswahl der Merkmalsmenge können grob wie folgt klassifiziert werden. Der Predictive Power Score entspricht der Wrapper-Methode, bietet jedoch aufgrund seiner Implementierung auch die Vorteile der Filter-Methode.

Methode Überblick Charakteristisch
Filter Wählen Sie den Funktionsbetrag aus, indem Sie die Statistik der Daten selbst berechnen, einen Schwellenwert festlegen und abschneiden. Relativ am rechenintensivsten und für große Datenmengen geeignet
Embedded Wählen Sie Features aus und erstellen Sie gleichzeitig ein Modell, z. B. die Regularisierung Hat Zwischeneigenschaften zwischen der Filtermethode und der Wrapper-Methode
Wrapper Wählen Sie Features aus, die für die Vorhersage nützlich sind, indem Sie die Modellkonstruktion und die Feature-Auswahl wiederholen. Da das Modell tatsächlich konstruiert ist, ist es möglich, Merkmale, die für die Vorhersage nützlich sind, genau auszuwählen, aber die Berechnungskosten sind hoch.

Predictive Power Score

Hauptmerkmale

Predictive Power Score (im Folgenden als PPS bezeichnet) ist ein Konzept, das von einem in Deutschland ansässigen Softwareunternehmen namens 8080Labs entwickelt wurde. Es kann in einer ähnlichen Form wie die Analyse unter Verwendung der Korrelationsmatrix des Pearson-Korrelationskoeffizienten verwendet werden, die häufig in EDA usw. verwendet wird, damit es universeller verwendet werden kann. Es scheint, dass es mit der Motivation entwickelt wird, einen guten Index zu erstellen.

PPS verfügt über die folgenden Funktionen.

Wie berechnet man PPS?

  1. Bestimmen Sie die Beziehung zwischen zwei Merkmalsgrößen oder zwischen Merkmalsgrößen und Zielvariablen entweder als Regressionsproblem oder als Klassifizierungsproblem, abhängig von der Art der Daten und der Anzahl der Ebenen (Kardinalität).
  2. Vorverarbeitung, z. B. Ausschluss fehlender Werte, One-Hot-Codierung von Kategoriefeatures und Label-Codierung von Zielen
  3. Berechnen Sie PPS gemäß verschiedenen PPS-Definitionsformeln für jedes Regressionsproblem und Klassifizierungsproblem.

Die in 2. erwähnte Definitionsformel ist in der folgenden Tabelle dargestellt.

Aufgabe PPS-Berechnungsdefinitionsformel
Rückkehr PPS = 1 - (MAE_model / MAE_naive)
Einstufung PPS = (F1_model - F1_naive) / (1 - F1_naive)

MAE_model und MAE_naive sind MAE, wenn y mit x vorhergesagt wird, und MAE, wenn der Medianwert von y vorhergesagt wird. Der Grund für die Berechnung von "_naive" besteht darin, den Standard für die Normalisierung von PPS auf den Bereich 0-1 festzulegen. Im Fall von "F1_naive" wird die gewichtete F1 für die häufigste Klasse berechnet. Sie fragen sich vielleicht hier, aber wie machen Sie "Vorhersage"?

Es entspricht der Wrapper-Methode, hat aber auch die Güte der Filter-Methode aus dem Implementierungsinhalt.

Wie oben erwähnt, kann die Berechnung von PPS im Kontext der Merkmalsauswahl in die Wrapper-Methode eingeteilt werden, aber die Vorhersage erfolgt durch Erstellen eines Entscheidungsbaummodells, und die Bewertung wird durch das Modell vermittelt. (Erstellen eines Modells durch Kreuzvalidierung bei der Berechnung der Punktzahl) Berechnen Sie den PPS jedoch einmal. Sobald Sie dies getan haben, können Sie den eingegrenzten Funktionsumfang in ein komplizierteres Modell umwandeln, um ihn als Filtermethode zu verwenden. Dies liegt daran, dass wir, wie die Entwickler sagen, bei der Berechnung der Punktzahl ein einfaches Entscheidungsbaummodell mit einer Variablen erstellen und der Entscheidungsbaum selbst schneller ist als SVM, GBDT, NN usw. .. Ein weiterer Grund für die Verwendung ist, dass bei einem Entscheidungsbaum eine nichtlineare Beziehung erfasst werden kann und die Vorhersageleistung relativ robust ist.

Verwendung bei der Auswahl der Feature-Menge

Andere Verwendung als Funktionsauswahl

  1. Finden Sie Muster in den Daten

  2. Erkennung von Datenleckage

  3. Da PPS sowohl für kategoriale als auch für numerische Variablen berechnet wird, ist es zweckmäßig, Beziehungen einschließlich der Nichtlinearität zwischen verschiedenen Variablen zu finden.

  4. Wenn der PPS-Wert erheblich höher ist als bei anderen Funktionen, kann vermutet werden, dass die Funktionen zu Leckagen führen können, die viele Informationen enthalten, die zum Zeitpunkt der Vorhersage nicht verwendet werden können.

Vorstellung der Bibliothek

Installation

pip install ppscore

Import und Punkteberechnung

import ppscore as pps
pps.score(df, "feature_column", "target_column")

Ausgabe der PPS-Matrix

pps.matrix(df)

Ich habe es tatsächlich auf die Daten angewendet

Nutzungsdaten und Umgebung

Telco Customer Churn ist ein Datensatz, der sich auf Kundeninformationen und Stornierungsinformationen von Internetdiensten bezieht. Die Umgebung verwendet Kaggles Notizbuch. image.png Auf der Datensatzseite befindet sich eine blaue Schaltfläche mit dem Namen "Neues Notizbuch", mit der das Notizbuch so gestartet wird, dass Sie sofort darauf zugreifen können.

Vorbereitung

Es installieren.

!pip install ppscore

Importieren Sie die Bibliothek und laden Sie die Daten.

import numpy as np 
import pandas as pd 
import ppscore as pps
import seaborn as sns
import matplotlib.pyplot as plt
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))
PATH ='/kaggle/input/telco-customer-churn/WA_Fn-UseC_-Telco-Customer-Churn.csv'
df = pd.read_csv(f'{PATH}')
df.shape

Überprüfen Sie den Spaltennamen.

list(df.columns)

Churn ist das Ziel.

['customerID',
 'gender',
 'SeniorCitizen',
 'Partner',
 'Dependents',
 'tenure',
 'PhoneService',
 'MultipleLines',
 'InternetService',
 'OnlineSecurity',
 'OnlineBackup',
 'DeviceProtection',
 'TechSupport',
 'StreamingTV',
 'StreamingMovies',
 'Contract',
 'PaperlessBilling',
 'PaymentMethod',
 'MonthlyCharges',
 'TotalCharges',
 'Churn']

Überprüfen Sie den Datentyp.

df.dtypes
customerID           object
gender               object
SeniorCitizen         int64
Partner              object
Dependents           object
tenure                int64
PhoneService         object
MultipleLines        object
InternetService      object
OnlineSecurity       object
OnlineBackup         object
DeviceProtection     object
TechSupport          object
StreamingTV          object
StreamingMovies      object
Contract             object
PaperlessBilling     object
PaymentMethod        object
MonthlyCharges      float64
TotalCharges         object
Churn                object
dtype: object

PPS-Berechnung

pps.score(df, 'InternetService', 'Churn')

Die Ergebnisse werden im Wörterbuchformat zurückgegeben.

{'x': 'InternetService',
 'y': 'Churn',
 'task': 'classification',
 'ppscore': 1.625853361551631e-07,
 'metric': 'weighted F1',
 'baseline_score': 0.6235392486748098,
 'model_score': 0.6235393098818076,
 'model': DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                        max_depth=None, max_features=None, max_leaf_nodes=None,
                        min_impurity_decrease=0.0, min_impurity_split=None,
                        min_samples_leaf=1, min_samples_split=2,
                        min_weight_fraction_leaf=0.0, presort='deprecated',
                        random_state=None, splitter='best')}

Visualisierung der PPS-Matrix

In der Matrix in der Zeile "Abwanderung" wird der PPS jeder Merkmalsmenge für das Ziel durch eine Heatmap dargestellt, insbesondere der PPS von "Amtszeit", "Monatsgebühren" und "Gesamtgebühren" ist groß. Die Bedeutung der einzelnen ist die Nutzungsdauer des Dienstes, die monatliche Nutzungsgebühr und die kumulierte Nutzungsgebühr, die charakteristische Mengen sind, die in engem Zusammenhang mit der Stornierung stehen. Wenn Sie sich die Zeile "MonthlyCharges" ansehen, ist der PPS-Kontrast von "Internet Service" zu "StreamTV" hoch. Wie Sie dem obigen Datentyp entnehmen können, handelt es sich bei diesen Funktionen um kategoriale Variablen. Es ist jedoch praktisch, die Beziehung zur numerischen Variablen "Monatliche Gebühren" zusammen zu sehen. Es ist leicht zu interpretieren und Sie können sehen, dass der Optionsabonnementstatus verschiedener Internetdienste stark von der Nutzungsgebühr abhängt. Wenn man sich das PPS zwischen den Merkmalen von "Internet Service" und "StreamTV" ansieht, wird außerdem gefolgert, dass sie einen dunklen Kontrast und ähnliche Informationen zueinander haben, und Dimensionskomprimierung und Dimensionsreduzierung können berücksichtigt werden. Ich werde.

Die Matrixberechnung dauerte im Datenrahmen (7043, 21) 1 Minute 55 Sekunden. Es ist noch nicht zu früh, aber wenn Sie 10.000 Dateneinheiten haben, können Sie eine Weile warten. Wenn die Anzahl der Daten zunimmt, können Sie versuchen, Stichproben zu erstellen, um einen Trend zu erhalten.

df_matrix = pps.matrix(df)
plt.figure(figsize=(18,18))
sns.heatmap(df_matrix, vmin=0, vmax=1, cmap="Blues", linewidths=0.5, annot=True)
plt.show()

image.png

Schließlich

Bisher haben wir den Predictive Power Score (PPS) eingeführt. Da es leicht auf Daten angewendet werden kann und die Beziehungen zwischen Daten leicht visualisiert werden können, wurde festgestellt, dass es sowohl für die Auswahl von EDA- als auch von Merkmalsmengen verwendet werden kann. Bei der Implementierung von ppscore werden MAE und F1 zur Berechnung des PPS verwendet. Sie können jedoch auch andere Indikatoren ausprobieren, während Sie das PPS-Konzept einbeziehen.

Referenzinformationen

Recommended Posts

Predictive Power Score für die Funktionsauswahl
Einheit 5 Feature Engineering für die Auswahl maschineller Lernfunktionen
Feature-Auswahldatensätze
Feature-Vorverarbeitung für die Modellierung
Funktionsauswahl durch sklearn.feature_selection
Merkmalsauswahl durch genetischen Algorithmus
pp4 (Python Power für alles)
Funktionsauswahl durch Null-Wichtigkeiten