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 Incremental Association Markov Blanket (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 Features 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 Diabetes-Datensatz der Pima-Indianer aus den Datensätzen von Jason Brownlee 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.
Der IAMB-Algorithmus ist wie ein Freund, der Ihnen hilft, eine Liste der Verdächtigen in einem Rätsel zu bereinigen – es handelt sich um eine Merkmalsauswahlmethode, 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.
Einfacher ausgedrückt hilft uns IAMB dabei, 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 Markov-Decken-Entdeckung im großen Maßstab
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 beibehalten 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 kleiner als 0,05 ist, bedeutet dies, dass eine starke, statistisch signifikante Assoziation 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.
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 prü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())
Hier ist unsere aktualisierte Version des IAMB-Algorithmus. Wir verwenden p-Werte, um zu entscheiden, welche Features beibehalten werden sollen, sodass nur diejenigen ausgewählt werden, 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 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']
Sobald wir unsere ausgewählten Funktionen haben, vergleicht der eigentliche Test die Modellleistung mit allen Funktionen mit IAMB-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 mit der gesamten Bayes'schen Atmosphäre übereinstimmt).
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)
So sieht der Vergleich aus:
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 unser Modell nicht auf „Rauschen“ oder irrelevanten Daten basiert.
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 Markov-Decken-Entdeckung im großen Maßstab
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3