Heim  >  Artikel  >  Backend-Entwicklung  >  Funktionsauswahl mit dem IAMB-Algorithmus: Ein lockerer Einblick in maschinelles Lernen

Funktionsauswahl mit dem IAMB-Algorithmus: Ein lockerer Einblick in maschinelles Lernen

Patricia Arquette
Patricia ArquetteOriginal
2024-11-16 14:24:03396Durchsuche

Also, hier ist die Geschichte: Ich habe kürzlich an einer Schulaufgabe von Professor Zhuang gearbeitet, bei der es um einen ziemlich coolen Algorithmus namens Inkrementelle Assoziations-Markov-Decke (IAMB) ging. Nun, ich habe keinen Hintergrund in Datenwissenschaft oder Statistik, das ist also Neuland für mich, aber ich liebe es, etwas Neues zu lernen. Das Ziel? Verwenden Sie IAMB, um Funktionen in einem Datensatz auszuwählen und zu sehen, wie sie sich auf die Leistung eines Modells für maschinelles Lernen auswirken.

Wir gehen die Grundlagen des IAMB-Algorithmus durch und wenden ihn auf den Pima Indians Diabetes Dataset aus Jason Brownlees Datensätzen an. Dieser Datensatz erfasst Gesundheitsdaten von Frauen und berücksichtigt, ob sie an Diabetes leiden oder nicht. Wir werden IAMB verwenden, um herauszufinden, welche Merkmale (wie BMI oder Glukosespiegel) für die Vorhersage von Diabetes am wichtigsten sind.

Was ist der IAMB-Algorithmus und warum wird er verwendet?

Der IAMB-Algorithmus ist wie ein Freund, der Ihnen hilft, eine Liste von Verdächtigen in einem Rätsel zu bereinigen – es handelt sich um eine Methode zur Merkmalsauswahl, die darauf ausgelegt ist, nur die Variablen auszuwählen, die für die Vorhersage Ihres Ziels wirklich wichtig sind. In diesem Fall geht es darum, ob jemand Diabetes hat.

  • Vorwärtsphase: Fügen Sie Variablen hinzu, die einen starken Bezug zum Ziel haben.
  • Rückwärtsphase: Entfernen Sie die Variablen, die nicht wirklich helfen, und stellen Sie sicher, dass nur die wichtigsten übrig bleiben.

Einfacher ausgedrückt hilft uns IAMB, Unordnung in unserem Datensatz zu vermeiden, indem es nur die relevantesten Funktionen auswählt. Dies ist besonders praktisch, wenn Sie die Dinge einfach halten, die Modellleistung steigern und die Trainingszeit verkürzen möchten.

Quelle: Algorithmen für die Entdeckung von Markov-Decken im großen Maßstab

Was ist dieses Alpha-Ding und warum ist es wichtig?

Hier kommt Alpha ins Spiel. In der Statistik ist Alpha (α) der Schwellenwert, den wir festlegen, um zu entscheiden, was als „statistisch signifikant“ gilt. Als Teil der Anweisungen des Professors habe ich einen Alpha-Wert von 0,05 verwendet, was bedeutet, dass ich nur Funktionen behalten möchte, bei denen die Wahrscheinlichkeit, dass sie zufällig mit der Zielvariablen verknüpft werden, weniger als 5 % beträgt. Wenn also der p-Wert eines Merkmals weniger als 0,05 beträgt, bedeutet dies, dass eine starke, statistisch signifikante Verbindung mit unserem Ziel besteht.

Durch die Verwendung dieses Alpha-Schwellenwerts konzentrieren wir uns nur auf die aussagekräftigsten Variablen und ignorieren alle Variablen, die unseren „Signifikanz“-Test nicht bestehen. Es ist wie ein Filter, der die relevantesten Funktionen behält und das Rauschen ausblendet.

Praktische Anwendung: Verwendung von IAMB für den Diabetes-Datensatz der Pima-Indianer

Hier ist der Aufbau: Der Diabetes-Datensatz der Pima-Indianer enthält Gesundheitsmerkmale (Blutdruck, Alter, Insulinspiegel usw.) und unser Ziel, Ergebnis (ob jemand Diabetes hat).

Zuerst laden wir die Daten und überprüfen sie:

import pandas as pd
# Load and preview the dataset
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv'
column_names = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome']
data = pd.read_csv(url, names=column_names)
print(data.head())

Implementierung von IAMB mit Alpha = 0,05

Hier ist unsere aktualisierte Version des IAMB-Algorithmus. Wir verwenden p-Werte, um zu entscheiden, welche Funktionen beibehalten werden sollen, daher werden nur diejenigen ausgewählt, deren p-Werte kleiner als unser Alpha (0,05) sind.

import pingouin as pg
def iamb(target, data, alpha=0.05):
    markov_blanket = set()
    # Forward Phase: Add features with a p-value < alpha
    for feature in data.columns:
        if feature != target:
            result = pg.partial_corr(data=data, x=feature, y=target, covar=markov_blanket)
            p_value = result.at[0, 'p-val']
            if p_value < alpha:
                markov_blanket.add(feature)
    # Backward Phase: Remove features with p-value > alpha
    for feature in list(markov_blanket):
        reduced_mb = markov_blanket - {feature}
        result = pg.partial_corr(data=data, x=feature, y=target, covar=reduced_mb)
        p_value = result.at[0, 'p-val']
        if p_value > alpha:
            markov_blanket.remove(feature)
    return list(markov_blanket)

# Apply the updated IAMB function on the Pima dataset
selected_features = iamb('Outcome', data, alpha=0.05)
print("Selected Features:", selected_features)

Als ich dies ausführte, erhielt ich eine verfeinerte Liste von Merkmalen, von denen das IAMB annahm, dass sie am engsten mit den Diabetes-Ergebnissen zusammenhängen. Diese Liste hilft dabei, die Variablen einzugrenzen, die wir zum Erstellen unseres Modells benötigen.

Selected Features: ['BMI', 'DiabetesPedigreeFunction', 'Pregnancies', 'Glucose']

Testen der Auswirkungen von IAMB-ausgewählten Funktionen auf die Modellleistung

Sobald wir unsere ausgewählten Funktionen haben, vergleicht der eigentliche Test die Modellleistung mit allen Funktionen mit vom IMB ausgewählten Funktionen. Hierfür habe ich mich für ein einfaches Gaußsches Naive-Bayes-Modell entschieden, weil es unkompliziert ist und gut mit Wahrscheinlichkeiten zurechtkommt (was zum gesamten Bayes'schen Stil passt).

Hier ist der Code zum Trainieren und Testen des Modells:

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score

# Split data
X = data.drop('Outcome', axis=1)
y = data['Outcome']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Model with All Features
model_all = GaussianNB()
model_all.fit(X_train, y_train)
y_pred_all = model_all.predict(X_test)

# Model with IAMB-Selected Features
X_train_selected = X_train[selected_features]
X_test_selected = X_test[selected_features]

model_iamb = GaussianNB()
model_iamb.fit(X_train_selected, y_train)
y_pred_iamb = model_iamb.predict(X_test_selected)

# Evaluate models
results = {
    'Model': ['All Features', 'IAMB-Selected Features'],
    'Accuracy': [accuracy_score(y_test, y_pred_all), accuracy_score(y_test, y_pred_iamb)],
    'F1 Score': [f1_score(y_test, y_pred_all, average='weighted'), f1_score(y_test, y_pred_iamb, average='weighted')],
    'AUC-ROC': [roc_auc_score(y_test, y_pred_all), roc_auc_score(y_test, y_pred_iamb)]
}

results_df = pd.DataFrame(results)
display(results_df)

Ergebnisse

So sieht der Vergleich aus:

Feature Selection with the IAMB Algorithm: A Casual Dive into Machine Learning

Die Verwendung nur der von IAMB ausgewählten Funktionen führte zu einer leichten Verbesserung der Genauigkeit und anderer Metriken. Es ist kein großer Sprung, aber die Tatsache, dass wir mit weniger Funktionen eine bessere Leistung erzielen, ist vielversprechend. Außerdem bedeutet dies, dass sich unser Modell nicht auf „Rauschen“ oder irrelevante Daten verlässt.

Wichtige Erkenntnisse

  • IAMB eignet sich hervorragend für die Funktionsauswahl: Es hilft, unseren Datensatz zu bereinigen, indem es sich nur auf das konzentriert, was für die Vorhersage unseres Ziels wirklich wichtig ist.
  • Weniger ist oft mehr: Manchmal führen weniger Funktionen zu besseren Ergebnissen, wie wir hier mit einer kleinen Steigerung der Modellgenauigkeit gesehen haben.
  • Lernen und Experimentieren macht Spaß: Auch ohne fundierte Kenntnisse in der Datenwissenschaft eröffnet das Eintauchen in Projekte wie dieses neue Möglichkeiten, Daten und maschinelles Lernen zu verstehen.

Ich hoffe, dies ist eine freundliche Einführung in IAMB! Wenn Sie neugierig sind, probieren Sie es aus – es ist ein praktisches Werkzeug in der Toolbox für maschinelles Lernen, und vielleicht sehen Sie einige coole Verbesserungen in Ihren eigenen Projekten.

Quelle: Algorithmen für die Entdeckung von Markov-Decken im großen Maßstab

Das obige ist der detaillierte Inhalt vonFunktionsauswahl mit dem IAMB-Algorithmus: Ein lockerer Einblick in maschinelles Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn