Mit dem neuen Tag kommen neue Kraft und neue Gedanken – Eleanor Roosevelt

Wir sind alle schon einmal mit dem Problem konfrontiert worden, die verwandten Merkmale aus einem Datensatz zu identifizieren und die irrelevanten oder weniger wichtigen Merkmale zu entfernen, die nicht viel zu unserer Zielvariablen beitragen, um eine bessere Genauigkeit für unser Modell zu erreichen.

Die Feature-Auswahl ist eines der zentralen Konzepte beim maschinellen Lernen, das die Leistung Ihres Modells erheblich beeinflusst. Die Datenmerkmale, die Sie zum Trainieren Ihrer Machine-Learning-Modelle verwenden, haben einen großen Einfluss auf die Leistung, die Sie erreichen können.

Unwichtige oder teilweise relevante Merkmale können sich negativ auf die Leistung des Modells auswirken.

Die Auswahl der Merkmale und die Datenbereinigung sollten der erste und wichtigste Schritt bei der Entwicklung Ihres Modells sein.

In diesem Beitrag werden Sie Techniken zur Auswahl von Merkmalen kennenlernen, die Sie beim maschinellen Lernen verwenden können.

Die Feature-Auswahl ist der Prozess, bei dem Sie automatisch oder manuell die Features auswählen, die am meisten zu Ihrer Vorhersagevariable oder dem Output beitragen, an dem Sie interessiert sind.

Das Vorhandensein irrelevanter Features in Ihren Daten kann die Genauigkeit der Modelle verringern und dazu führen, dass Ihr Modell auf der Grundlage irrelevanter Features lernt.

Wie wählt man Features aus und was sind die Vorteile der Feature-Auswahl vor der Modellierung Ihrer Daten?

– Reduziert Overfitting: Weniger redundante Daten bedeuten weniger Möglichkeiten, Entscheidungen aufgrund von Rauschen zu treffen.

– Verbessert die Genauigkeit: Weniger irreführende Daten bedeuten, dass sich die Modellierungsgenauigkeit verbessert.

– Reduziert die Trainingszeit: Weniger Datenpunkte reduzieren die Komplexität des Algorithmus und die Algorithmen trainieren schneller.

Ich möchte meine persönlichen Erfahrungen damit teilen.

Ich habe ein Modell erstellt, indem ich alle Merkmale ausgewählt habe und eine Genauigkeit von ca. 65% erhalten habe, was für ein Vorhersagemodell nicht sehr gut ist. Nachdem ich eine Merkmalsauswahl und ein Feature-Engineering durchgeführt habe, ohne irgendwelche logischen Änderungen an meinem Modellcode vorzunehmen, ist meine Genauigkeit auf 81% gestiegen, was ziemlich beeindruckend ist

Nun wissen Sie, warum ich sage, dass die Merkmalsauswahl der erste und wichtigste Schritt bei der Modellentwicklung sein sollte.

Methoden der Merkmalsauswahl:

Ich werde 3 Techniken der Merkmalsauswahl vorstellen, die einfach zu verwenden sind und gute Ergebnisse liefern.

1. Univariate Auswahl

2. Feature Importance

3.Korrelationsmatrix mit Heatmap

Schauen wir uns diese Techniken nacheinander anhand eines Beispiels an

Sie können den Datensatz hier herunterladen https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv

Beschreibung der Variablen in der obigen Datei

battery_power: Gesamtenergie, die eine Batterie in einer Zeit speichern kann, gemessen in mAh

blue: Hat Bluetooth oder nicht

clock_speed: Geschwindigkeit, mit der der Mikroprozessor Anweisungen ausführt

dual_sim: Hat Dual-Sim-Unterstützung oder nicht

fc: Frontkamera Megapixel

four_g: Hat 4G oder nicht

int_memory: Interner Speicher in Gigabyte

m_dep: Handytiefe in cm

mobile_wt: Gewicht des Mobiltelefons

n_cores: Anzahl der Kerne des Prozessors

pc: Primärkamera in Megapixeln

px_height

Pixelauflösung Höhe

px_width: Pixelauflösung Breite

ram: Random Access Memory in MegaBytes

sc_h: Bildschirmhöhe des Handys in cm

sc_w: Bildschirmbreite des Handys in cm

talk_time: die längste Zeit, die eine einzelne Akkuladung reicht, wenn man

three_g: Hat 3G oder nicht

touch_screen: Hat Touchscreen oder nicht

wifi: Hat wifi oder nicht

price_range: Dies ist die Zielvariable mit einem Wert von 0(geringe Kosten), 1(mittlere Kosten), 2(hohe Kosten) und 3(sehr hohe Kosten).

1. Univariate Auswahl

Statistische Tests können verwendet werden, um diejenigen Merkmale auszuwählen, die die stärkste Beziehung zur Ausgangsvariablen aufweisen.

Die scikit-learn-Bibliothek bietet die Klasse SelectKBest, die mit einer Reihe verschiedener statistischer Tests verwendet werden kann, um eine bestimmte Anzahl von Merkmalen auszuwählen.

Das folgende Beispiel verwendet den statistischen Test chi-Quadrat (chi²) für nicht-negative Merkmale, um 10 der besten Merkmale aus dem Mobile Price Range Prediction Dataset auszuwählen.

import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization
featureScores = pd.concat(,axis=1)
featureScores.columns = #naming the dataframe columns
print(featureScores.nlargest(10,'Score')) #print 10 best features

Top 10 Best Features using SelectKBest class

Feature Importance

Sie können die Feature Wichtigkeit jedes Features Ihres Datensatzes erhalten, indem Sie die Feature Wichtigkeit Eigenschaft des Modells verwenden.

Die Merkmalsbedeutung gibt Ihnen eine Punktzahl für jedes Merkmal Ihrer Daten, je höher die Punktzahl, desto wichtiger oder relevanter ist das Merkmal für Ihre Ausgangsvariable.

Feature importance ist eine eingebaute Klasse, die in baumbasierten Klassifikatoren enthalten ist. Wir werden Extra Tree Classifier verwenden, um die 10 wichtigsten Features für den Datensatz zu extrahieren.

import pandas as pd
import numpy as np
data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()

Top 10 der wichtigsten Merkmale in den Daten

3.Korrelationsmatrix mit Heatmap

Die Korrelation gibt an, wie die Merkmale miteinander oder mit der Zielvariablen in Beziehung stehen.

Die Korrelation kann positiv (Zunahme eines Merkmalswerts erhöht den Wert der Zielvariablen) oder negativ (Zunahme eines Merkmalswerts verringert den Wert der Zielvariablen)

Mit der Heatmap lässt sich leicht feststellen, welche Merkmale am stärksten mit der Zielvariablen verbunden sind. Wir werden die Heatmap der korrelierten Merkmale mit der Seaborn-Bibliothek erstellen.

import pandas as pd
import numpy as np
import seaborn as snsdata = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
#get correlations of each features in dataset
corrmat = data.corr()
top_corr_features = corrmat.index
plt.figure(figsize=(20,20))
#plot heat map
g=sns.heatmap(data.corr(),annot=True,cmap="RdYlGn")

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.