In diesem Kurs über Ensemble-Lerntechniken haben wir zwei Artikel durchgelesen. Wo drin Artikel 1sprachen wir über die Grundidee hinter allen einfachen und fortgeschrittenen Techniken des Ensemble-Lernens und in Artikel 2, diskutierten wir die Idee, wie wir einfache Ensemble-Lerntechniken implementieren können. Abschließend können wir beider Artikel sagen, dass Ensemble-Lernen maschinelles Lernen ist, eine Technik, die Entscheidungen auf der Grundlage der Entscheidungen mehrerer Modelle generiert. Wenn wir über einfache Ensemble-Lerntechniken sprechen, können wir sagen, dass die Ensemble-Ergebnisse dieser Methoden ein Ergebnis einfacher Mathematik sind. In diesem Artikel besprechen wir die fortgeschrittenen Techniken zur Durchführung des Ensemble-Lernens. Während des Kurses werden wir uns an das folgende Inhaltsverzeichnis halten.
- Erläuterung
- Implementierung
- Erläuterung
- Implementierung
- Erläuterung
- Implementierung
Wie in Artikel 1 besprochen, handelt es sich beim Stapeln um eine fortgeschrittene Ensemble-Lernmethode, bei der wir mehrere Modelle nacheinander anhängen, oder wir können hier sagen, wir fügen Modelle nacheinander hinzu. Vereinfacht lässt sich sagen, dass die Idee hinter der Stapelung darin besteht, dass die gestapelten Modelle aus den Vorhersagen der Basismodelle lernen. Auf diese Weise lernt das Stapelmethodenmodell die komplexe Beziehung zwischen der Vorhersage der Basismodelle und den Zielvariablen.
Stapeln kann eine optimale Wahl sein, wenn die Basismodi vielfältig sind und sich in ihren Vorhersagen ergänzen. Bemerkenswert hierbei ist, dass die Stapelung bei unsachgemäßer Umsetzung leicht zu einer Überanpassung führen kann. Werfen wir einen Blick darauf, wie wir es umsetzen können.
Um das Stacking-Ensemble-Lernen umzusetzen, verwenden wir das beliebte Brustkrebs-Klassifizierungsproblem, das die Möglichkeit von Brustkrebs anhand verschiedener Symptome und Werte beschreibt. Beginnen wir mit der Implementierung, indem wir die Daten und die erforderliche Bibliothek importieren.
Bibliotheken importieren
aus sklearn.datasets import load_breast_cancer
aus sklearn.model_selection import train_test_split
aus sklearn.linear_model LogisticRegression importieren
aus sklearn.ensemble RandomForestClassifier importieren
aus sklearn.svm SVC importieren
aus sklearn.metrics import precision_score
Daten importieren
knowledge = load_breast_cancer()
X, y = knowledge.knowledge, knowledge.goal
drucken(X)
drucken(y)
Ausgang:
Hier können wir die Ziel- und unabhängigen Variablen in den Daten sehen. Lassen Sie uns die anderen Particulars der Daten überprüfen.
print(“Function-Namen: n”, knowledge.feature_names)
print(“Zielnamen: n”, knowledge.target_names)
print(“Information Form: n”, knowledge.knowledge.form)
Ausgang:
Datenvorverarbeitung
Teilen wir das Modell auf.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(„Zugsetform:“, X_train.form, y_train.form)
print(„Testsatzform:“, X_test.form, y_test.form)
Ausgang:
Definieren wir drei Modelle, die wir beim Stack-Ensemble-Lernen verwenden werden.
model1 = LogisticRegression(random_state=42)
model2 = RandomForestClassifier(n_estimators=100, random_state=42)
model3 = SVC(Wahrscheinlichkeit=Wahr)
Lassen Sie uns die Basismodelle anhand der Trainingsdaten trainieren.
model1.match(X_train, y_train)
model2.match(X_train, y_train)
model3.match(X_train, y_train)
Jetzt müssen wir die Vorhersage mithilfe des Testsatzes und der trainierten Modelle treffen
pred1 = model1.predict(X_test)
pred2 = model2.predict(X_test)
pred3 = model3.predict(X_test)
Nachdem wir die Vorhersage getroffen haben, können wir die Stapelmodelle mithilfe der Vorhersagen der Basismodelle trainieren:
numpy als np importieren
stacking_input = np.column_stack((pred1, pred2, pred3))
stacking_model = LogisticRegression(random_state=42)
stacking_model.match(stacking_input, y_test)
Ausgang:
Lassen Sie uns mithilfe des Stapelmodells Vorhersagen für den Testsatz treffen.
stacking_pred = stacking_model.predict(stacking_input)
Hier erhalten wir unsere endgültigen Vorhersagen. Jetzt können wir die Leistung des Stapelmodells bewerten.
stacking_accuracy = precision_score(y_test, stacking_pred)
print(“Stacking Accuracy:”, stacking_accuracy)
Ausgang:
Lassen Sie uns die Leistung anhand der Verwirrungsmatrix überprüfen:
aus sklearn.metrics import context_matrix
cm = confusion_matrix(y_test, stacking_pred)
print(“Verwirrungsmatrix:”)
Druck (cm)
Ausgang:
Hier erhalten wir die Verwirrungsmatrix, und wenn wir uns das ansehen, können wir sagen, dass die Leistung des Modells intestine ist. Kommen wir nun zur Methode des Ensemble-Lernens.
In Artikel 1 haben wir erfahren, dass wir bei dieser Methode Validierungsdaten verwenden, wodurch sich die Mischung von der Stapelmethode unterscheidet. Hier verwenden wir Validierungsdaten, um Vorhersagen zu treffen. Die Validierung und die Vorhersage mithilfe des Validierungssatzes werden zur Ausführung des Exams verwendet. Hier machen die letzten beiden Schritte den Unterschied, da der Validierungssatz und die mithilfe des Validierungssatzes getroffenen Vorhersagen dabei helfen, neue Modelle zu trainieren. Schauen wir uns die Umsetzung an.
Jetzt wissen wir, dass wir beim Mischen die Daten nur anders aufteilen müssen, und hier in dieser Implementierung werden wir den Prozess nur von dort aus starten, damit wir den Artikel kompakter machen können. Beginnen wir mit dem Prozess:
Datenverarbeitung
Daten in drei Sätze aufteilen.
X_train, X_validation, y_train, y_validation = train_test_split(X, y, test_size=0.2, random_state=42)
X_validation, X_test, y_validation, y_test = train_test_split(X_validation, y_validation, test_size=0.5, random_state=42)
print(„Zugsetform:“, X_train.form, y_train.form)
print(„Validierungssatzform“, X_validation.form, y_validation.form)
print(„Testsatzform:“, X_test.form, y_test.form)
Ausgang:
Hier in den obigen Codes haben wir die Daten in Trainings- und Validierungssätze aufgeteilt. Und danach teilen wir den Validierungssatz in Testsätze auf.
Vorhersage machen
Vorhersagen mithilfe des Validierungssatzes treffen.
pred1_validation = model1.predict(X_validation)
pred2_validation = model2.predict(X_validation)
pred3_validation = model3.predict(X_validation)
Kombinieren wir die Vorhersagen der Basismodelle im Validierungssatz.
blending_input = [pred1_validation, pred2_validation, pred3_validation]
blending_input = np.transpose(blending_input)
Nachdem wir die Vorhersagen basierend auf der Validierung kombiniert haben, können wir das gemischte Modell anhand der gemischten Eingabe trainieren.
blending_model = LogisticRegression(random_state=42)
blending_model.match(blending_input, y_validation)
Ausgang:
Lassen Sie uns die endgültige Vorhersage mithilfe des gemischten Modells und des Testsatzes treffen.
blending_pred = blending_model.predict(blending_input)
Jetzt sind wir bereit, das Modell zu bewerten. Lassen Sie uns die Genauigkeit des Modells überprüfen.
blending_accuracy = precision_score(y_test, blending_pred)
print(“Mixing Accuracy:”, blending_accuracy)
Ausgang:
Hier können wir sehen, dass sich die Genauigkeit des Modellierungsverfahrens verbessert hat. Lassen Sie uns nun die Leistung anhand der Verwirrungsmatrix überprüfen.
cm = confusion_matrix(y_test, blending_pred)
print(“Verwirrungsmatrix:”)
Druck (cm)
Ausgang:
Hier sehen wir die verbesserten Ergebnisse in der Verwirrungsmatrix. Schauen wir uns nun an, wie wir die Bagging-Methode des Ensemble-Lernens durchführen können.
Bagging ist eine weitere fortgeschrittene Technik des Ensemble-Lernens, bei der mehrere Datenmodelle Muster der verschiedenen Unterteile der Daten lernen. Nachdem die Modelle auf die Unterteile der Daten trainiert wurden, kombinieren wir die Ergebnisse des Modells, um die endgültigen Vorhersagen zu erhalten.
Auch hier sind die Prozesse zum Importieren von Daten und Modellfunktionen dieselben wie im vorherigen Teil des Artikels. Hier benötigen wir ein Bagging-Klassifizierungsmodul von sklearn. Ensemble-Lernen kann auch mit einem oder mehreren Modellen durchgeführt werden. Hier verwenden wir drei Modelle, um die Bagging-Methode des maschinellen Ensemble-Lernens durchzuführen.
Definieren wir die Modelle:
aus sklearn.ensemble BaggingClassifier importieren
model1 = DecisionTreeClassifier(random_state=42)
model2 = LogisticRegression(random_state=42)
model3 = SVC(likelihood=True, random_state=42)
Jetzt können wir diese Modelle in mehrere Schätzer aufteilen:
bagging_model1 = BaggingClassifier(base_estimator=model1, n_estimators=10, random_state=42)
bagging_model2 = BaggingClassifier(base_estimator=model2, n_estimators=10, random_state=42)
bagging_model3 = BaggingClassifier(base_estimator=model3, n_estimators=10, random_state=42)
Lassen Sie uns diese Modelle mithilfe der in der ersten Methode definierten Trainings- und Testdaten trainieren.
bagging_model1.match(X_train, y_train)
bagging_model2.match(X_train, y_train)
bagging_model3.match(X_train, y_train)
Nach dem Coaching sind wir bereit, anhand trainierter Absackmodelle Vorhersagen zu treffen. Lassen Sie uns die Vorhersagen mithilfe des Testsatzes treffen.
Vorhersagen1 = bagging_model1.predict(X_test)
Vorhersagen2 = bagging_model2.predict(X_test)
Vorhersagen3 = bagging_model3.predict(X_test)
Kombinieren der Vorhersagen der Bagging-Ensemble-Modelle
ensemble_predictions = (Vorhersagen1 + Vorhersagen2 + Vorhersagen3) // 3
Lassen Sie uns die Ergebnisse der Bagging-Ensemble-Modellierung auswerten.
Genauigkeit = Accuracy_score(y_test, ensemble_predictions)
print(„Ensemble Accuracy:“, Genauigkeit)
Ausgang:
Hier können wir nun die Genauigkeit des Verfahrens erkennen. Lassen Sie uns die Genauigkeit des Verfahrens anhand der Verwirrungsmatrix bewerten.
cm = confusion_matrix(y_test, ensemble_predictions)
print(“Verwirrungsmatrix:”)
Druck (cm)
Ausgang:
Hier sehen wir, dass die Ergebnisse dieser Methode besser sind als die der ersten Methode, und auf diese Weise tragen die Ensemble-Lernmethoden dazu bei, die Genauigkeit der Modellierungsverfahren zu verbessern.
Nach diesen fortgeschrittenen Ensemble-Techniken sollten wir die Boosting-Technik kennen. Wenn wir über Boosting-Techniken sprechen, können wir sie uns als Methoden des sequentiellen Lernens vorstellen, bei denen ein Modell nach dem anderen versucht, das Lernen des vorherigen Modells zu korrigieren. Mit einfachen Worten können wir sagen, dass bei der Steigerung des Ensemble-Lernens das Ergebnis des Modus vom Lernen des Modells abhängt, das die Muster bereits gelernt hat.
Wenn wir tiefer auf das Thema Boosting eingehen, finden wir weitere unterschiedliche Methoden, die unter das Thema Boosting-Techniken fallen. Hier sind einige wichtige Arten von Boosting-Techniken:
- AdaBoost (Adaptives Boosting)
- Steigungsverstärkung
- XGBoost (Excessive Gradient Boosting)
- LightGBM (Mild Gradient Boosting Machine)
- CatBoost (kategoriales Boosten)
- Stochastische Gradientenverstärkung
In den obigen Abschnitten haben wir etwas über fortgeschrittene Ensemble-Lernmethoden gelernt. Um natürlich eine klare Linie zu ziehen und die Länge des Artikels zu berücksichtigen, werden wir in den nächsten Artikeln die Boosting-Techniken und verschiedene Arten von Boosting-Techniken besprechen.
In diesem Artikel haben wir die fortgeschrittenen Ensemble-Lernmethoden besprochen. Im letzten Artikel haben wir mit denselben Daten eine Genauigkeit von ca. 94 % erreicht. Hier haben wir dank fortschrittlicher Methoden gesehen, wie wir die Genauigkeit erhöhen können. Im nächsten Artikel besprechen wir die Boosting-Methode, wobei wir die Grundlagen der Boosting-Methode und die Funktionsweise verschiedener Boosting-Methoden besprechen.
Information Science Wizards (DSW) ist ein Begin-up für künstliche Intelligenz und Datenwissenschaft, das vor allem Plattformen, Lösungen und Dienste für die Nutzung von Daten als Strategie durch KI- und Datenanalyselösungen sowie Beratungsdienste anbietet, um Unternehmen bei datengesteuerten Entscheidungen zu unterstützen .
DSWs Flaggschiff-Plattform UnifyAI ist eine Finish-to-Finish-KI-fähige Plattform für Unternehmenskunden zum Erstellen, Bereitstellen, Verwalten und Veröffentlichen ihrer KI-Modelle. UnifyAI hilft Ihnen beim Aufbau Ihres Geschäftsanwendungsfalls, indem es KI-Funktionen nutzt und die Analyseergebnisse verbessert.
Kontaktieren Sie uns unter contact@datasciencewizards.ai und besuchen Sie uns unter www.datasciencewizards.aich