Wir haben 3 Feature -Auswahltechniken verwendet: Dieser hat am besten funktioniertWir haben 3 Feature -Auswahltechniken verwendet: Dieser hat am besten funktioniert
Bild von Editor

# Einführung

In jedem Projekt für maschinelles Lernen kann die Function -Auswahl Ihr Modell erstellen oder brechen. Die Auswahl der optimalen Untergruppe von Merkmalen reduziert das Rauschen, verhindert die Überanpassung, verbessert die Interpretierbarkeit und verbessert häufig die Genauigkeit. Bei zu vielen irrelevanten oder redundanten Variablen werden Modelle aufgebläht und schwieriger zu trainieren. Mit zu wenig riskieren sie kritische Signale.

Um diese Herausforderung anzugehen, haben wir mit drei beliebten Function -Auswahltechniken in einem echten Datensatz experimentiert. Ziel conflict es zu bestimmen, welcher Ansatz das beste Gleichgewicht zwischen Leistung, Interpretierbarkeit und Effizienz bieten würde. In diesem Artikel teilen wir unsere Erfahrungen mit drei Function -Auswahltechniken und zeigen, welche für unseren Datensatz am besten geeignet ist.

# Warum Function -Auswahl anwesend ist

Beim Erstellen von Modellen für maschinelles Lernen, insbesondere bei hochdimensionalen Datensätzen, tragen nicht alle Funktionen gleichermaßen bei. Ein schlankerer, informativerer Eingabetaste bietet mehrere Vorteile:

  • Reduzierte Überanpassung – Die Beseitigung irrelevanter Variablen hilft Modellen, die Verallgemeinerungen besser auf unsichtbare Daten zu verallgemeinern.
  • Schnelleres Coaching – Weniger Funktionen bedeuten schnelleres Coaching und niedrigere Rechenkosten.
  • Bessere Interpretierbarkeit – Mit einem kompakten Satz von Prädiktoren ist es einfacher zu erklären, welche Modellentscheidungen vorantreiben.

# Der Datensatz

Für dieses Experiment haben wir den Diabetes-Datensatz aus Scikit-Study verwendet. Es enthält 442 Patientenaufzeichnungen mit 10 Basismerkmalen wie Physique Mass Index (BMI), Blutdruck, mehreren Serummessungen und Alter. Die Zielvariable ist ein quantitatives Maß für das Fortschreiten der Krankheit ein Jahr nach dem Ausgangswert.

Laden wir den Datensatz und bereiten Sie ihn vor:

import pandas as pd
from sklearn.datasets import load_diabetes

# Load dataset
information = load_diabetes(as_frame=True)
df = information.body

X = df.drop(columns=('goal'))
y = df('goal')

print(df.head())

Hier, X enthält die Merkmale und y Enthält das Ziel. Wir haben jetzt alles bereit, verschiedene Function -Auswahlmethoden anzuwenden.

# Filtermethode

Filtermethoden Rang oder beseitigt Merkmale, die auf statistischen Eigenschaften basieren, anstatt ein Modell zu trainieren. Sie sind einfach, schnell und geben einen schnellen Weg, um offensichtliche Entlassungen zu entfernen.

Für diesen Datensatz haben wir nach stark korrelierten Merkmalen geprüft und eine überschrittene Korrelationsschwelle von 0,85 überschritten.

import numpy as np

corr = X.corr()
threshold = 0.85
higher = corr.abs().the place(np.triu(np.ones(corr.form), ok=1).astype(bool))
to_drop = (col for col in higher.columns if any(higher(col) > threshold))
X_filter = X.drop(columns=to_drop)
print("Remaining options after filter:", X_filter.columns.tolist())

Ausgabe:

Remaining options after filter: ('age', 'intercourse', 'bmi', 'bp', 's1', 's3', 's4', 's5', 's6')

Es wurden nur eine redundante Funktion entfernt, sodass der Datensatz 9 der 10 Prädiktoren behielt. Dies zeigt, dass der Diabetes -Datensatz hinsichtlich der Korrelation relativ sauber ist.

# Wrapper -Methode

Wrapper -Methoden Bewerten Sie Untergruppen von Funktionen, indem Sie tatsächlich Schulungsmodelle trainieren und die Leistung überprüfen. Eine beliebte Technik ist Rekursive Merkmalsiminierung (RFE).

RFE beginnt mit allen Funktionen, passt zu einem Modell, richtet sie nach Bedeutung und beseitigt rekursiv die am wenigsten nützlichen, bis die gewünschte Anzahl von Funktionen verbleibt.

from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import RFE

lr = LinearRegression()
rfe = RFE(lr, n_features_to_select=5)
rfe.match(X, y)

selected_rfe = X.columns(rfe.support_)
print("Chosen by RFE:", selected_rfe.tolist())

Chosen by RFE: ('bmi', 'bp', 's1', 's2', 's5')

RFE ausgewählte 5 von 10 Funktionen ausgewählte Funktionen. Der Kompromiss ist, dass dieser Ansatz rechenintensiver ist, da mehrere Runden der Modellanpassung erforderlich sind.

# Embedded -Methode

Eingebettete Methoden Integrieren Sie die Function -Auswahl in den Modelltrainingsprozess. Lasso Regression (L1 -Regularisierung) ist ein klassisches Beispiel. Es bestraft Function -Gewichte und schrumpft weniger wichtige auf Null.

from sklearn.linear_model import LassoCV

lasso = LassoCV(cv=5, random_state=42).match(X, y)

coef = pd.Sequence(lasso.coef_, index=X.columns)
selected_lasso = coef(coef != 0).index
print("Chosen by Lasso:", selected_lasso.tolist())

Chosen by Lasso: ('age', 'intercourse', 'bmi', 'bp', 's1', 's2', 's4', 's5', 's6')

Lasso behielt 9 Funktionen und beseitigte eine, die wenig Vorhersagekraft beischloss. Im Gegensatz zu Filtermethoden basierte diese Entscheidung jedoch auf der Modellleistung und nicht nur auf der Korrelation.

# Ergebnisse Vergleich

Um jeden Ansatz zu bewerten, haben wir ein lineares Regressionsmodell in den ausgewählten Function -Units trainiert. Wir verwendeten eine 5-fache Kreuzvalidierung und die gemessene Leistung unter Verwendung von R²-Rating und mittlerem Quadratfehler (MSE).

from sklearn.model_selection import cross_val_score, KFold
from sklearn.linear_model import LinearRegression

# Helper analysis perform
def evaluate_model(X, y, mannequin):
    cv = KFold(n_splits=5, shuffle=True, random_state=42)
    r2_scores = cross_val_score(mannequin, X, y, cv=cv, scoring="r2")
    mse_scores = cross_val_score(mannequin, X, y, cv=cv, scoring="neg_mean_squared_error")
    return r2_scores.imply(), -mse_scores.imply()

# 1. Filter Methodology outcomes
lr = LinearRegression()
r2_filter, mse_filter = evaluate_model(X_filter, y, lr)

# 2. Wrapper (RFE) outcomes
X_rfe = X(selected_rfe)
r2_rfe, mse_rfe = evaluate_model(X_rfe, y, lr)

# 3. Embedded (Lasso) outcomes
X_lasso = X(selected_lasso)
r2_lasso, mse_lasso = evaluate_model(X_lasso, y, lr)

# Print outcomes
print("=== Outcomes Comparability ===")
print(f"Filter Methodology   -> R2: {r2_filter:.4f}, MSE: {mse_filter:.2f}, Options: {X_filter.form(1)}")
print(f"Wrapper (RFE)   -> R2: {r2_rfe:.4f}, MSE: {mse_rfe:.2f}, Options: {X_rfe.form(1)}")
print(f"Embedded (Lasso)-> R2: {r2_lasso:.4f}, MSE: {mse_lasso:.2f}, Options: {X_lasso.form(1)}")
=== Outcomes Comparability ===
Filter Methodology   -> R2: 0.4776, MSE: 3021.77, Options: 9
Wrapper (RFE)   -> R2: 0.4657, MSE: 3087.79, Options: 5
Embedded (Lasso)-> R2: 0.4818, MSE: 2996.21, Options: 9

Die Filtermethode hat nur ein redundantes Merkmal entfernt und eine gute Basisleistung erbracht. Der Wrapper (RFE) hat den Merkmal in zwei Hälften geschnitten, aber die Genauigkeit leicht reduziert. Das eingebettete (lasso) behielt 9 Funktionen und lieferte die beste R² und die niedrigste MSE. Insgesamt bot Lasso das beste Gleichgewicht zwischen Genauigkeit, Effizienz und Interpretierbarkeit.

# Abschluss

Die Auswahl der Merkmale ist nicht nur ein Vorverarbeitungsschritt, sondern eine strategische Entscheidung, die den Gesamterfolg einer Pipeline für maschinelles Lernen prägt. Unser Experiment verstärkte, dass einfache Filter und erschöpfende Verpacker zwar ihren Platz haben, eingebettete Methoden wie Lasso oft den Candy Spot liefern.

Auf dem Diabetes -Datensatz wurde die Lasso -Regularisierung zum klaren Gewinner. Es hat uns geholfen, ein schnelleres, genaueres und interpretierbareres Modell zu erstellen, ohne die starken Berechnung von Wrapper -Methoden oder die Übereinführung von Filtern.

Für die Praktizierenden lautet der Imbiss: Verlassen Sie sich nicht blind auf eine einzige Methode. Beginnen Sie mit schnellen Filtern, um offensichtliche Entlassungen zu beschneiden, versuchen Sie Wrapper, wenn Sie eine umfassende Erkundung benötigen, aber in Betracht ziehen immer eingebettete Methoden wie Lasso für ein praktisches Gleichgewicht.

Jayita Gulati ist ein Fanatic und technische Schriftsteller für maschinelles Lernen, der von ihrer Leidenschaft für den Aufbau maschineller Lernmodelle angetrieben wird. Sie hat einen Grasp -Abschluss in Informatik an der Universität von Liverpool.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert