Vergleich verschiedener kategorischer Encoder

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Leistung verschiedener kategorialer Encoder auf einem Weintest-Datensatz vergleichen. Wir werden die Zielspalte 'points' als Zielvariable zum Vorhersagen verwenden. Wir werden die folgenden Encoder vergleichen: TargetEncoder, OneHotEncoder, OrdinalEncoder und das Entfernen der Kategorie. Wir werden auch sehen, wie die native Unterstützung von kategorischen Merkmalen in HistGradientBoostingRegressor verwendet wird.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49316{{"Vergleich verschiedener kategorischer Encoder"}} end

Laden von Daten aus OpenML

Zunächst laden wir den Weintest-Datensatz mit der Funktion fetch_openml aus dem Modul scikit-learn.datasets. Wir werden nur einen Teil der numerischen und kategorischen Merkmale im Datensatz verwenden. Wir werden die folgenden Teilmengen von numerischen und kategorischen Merkmalen im Datensatz verwenden: numerische_Merkmale = ["price"] und kategorische_Merkmale = ["country", "province", "region_1", "region_2", "variety", "winery"].

Training und Evaluierung von Pipelines mit verschiedenen Encodern

In diesem Abschnitt werden wir Pipelines mit HistGradientBoostingRegressor mit verschiedenen Codierungsstrategien evaluieren. Wir werden die Modelle mithilfe von Kreuzvalidierung evaluieren und die Ergebnisse aufzeichnen.

Native Unterstützung von kategorischen Merkmalen

In diesem Abschnitt bauen und evaluieren wir eine Pipeline, die die native Unterstützung von kategorischen Merkmalen in HistGradientBoostingRegressor verwendet, das nur bis zu 255 eindeutige Kategorien unterstützt. Wir gruppieren die kategorischen Merkmale in Merkmale mit geringer Kardinalität und Merkmale mit hoher Kardinalität. Die Merkmale mit hoher Kardinalität werden Zielkodiert, und die Merkmale mit geringer Kardinalität werden die native kategorische Funktion in Gradient Boosting verwenden.

Darstellung der Ergebnisse

In diesem Abschnitt stellen wir die Ergebnisse durch das Plotten der Test- und Trainingsergebnisse dar.

Zusammenfassung

In diesem Lab haben wir die Leistung verschiedener kategorischer Encoder auf einem Weintest-Datensatz verglichen. Wir haben auch untersucht, wie die native Unterstützung von kategorischen Merkmalen in HistGradientBoostingRegressor genutzt werden kann. Wir haben festgestellt, dass das Entfernen der Kategorien die schlechtesten Ergebnisse liefert und die Zielencoder die besten. Die ordinale Codierung legt eine willkürliche Ordnung für die Merkmale fest, die dann von HistGradientBoostingRegressor als numerische Werte behandelt werden. Das One-Hot-Codierungsschema hätte wahrscheinlich dazu geführt, dass die Pipeline überanpasst, da die Anzahl der Merkmale explodiert, wenn seltene Kategorien zufällig mit der Zielvariable korrelieren. Wenn der Zielencoder verwendet wird, passiert die gleiche Gruppierung, aber da die codierten Werte statistisch nach marginaler Assoziation mit der Zielvariable geordnet sind, ergibt die Gruppierung, die von HistGradientBoostingRegressor verwendet wird, Sinn und führt zu guten Ergebnissen.