Ziel ist es, Pilze in eine der beiden Kategorien, essbar oder giftig, einzuteilen. Es handelt sich um eine binäre Klassifikation, die Art des Lernens ist überwacht, da Labels zum Trainieren des Models vorhanden sind. In diesem Projekt besteht das Model aus einem strukturierten Datensatz, in einem späteren Projekt soll die Vorhersage anhand von Fotos gemacht werden.
Datensatz
Der Datensatz stammt von der Machine Learning Repository und wurde von kaggle leicht überarbeitet. Der Datensatz besteht aus 8124 Beobachtungen und 22 Attributen. Alle Variablen sind kategorisch.
Visuelle und statistische Erforschung des Datensatzes, um mögliche Fehler zu entdecken und den Datensatz kennen zu lernen. Univariate und bivariate Darstellungen der Variablen in Grafiken.
Modeling
Metrik
Hier wird der F1 Score als Metrik verwendet. Er ist eine Kombination aus Precision und Recall und ideal für Probleme, bei denen der Datensatz unausgeglichen ist.
Bei der Berechnung des Mittelwertes in der Kreuzvalidierung für die Auswahl des Algorithmus wird als average „micro“ oder „weighted“ verwendet, weil hier die Klassen entsprechend gewichtet werden.
Vergleich und Auswahl von Algorithmen
Im Allgemeinen ist es so, dass kein Algorithmus immer der Beste für eine bestimmte Problemart ist (No Free Lunch Theorem). Daher werden mehrere Algorithmen, die zur Problemstellung passen, getestet. Dann wird derjenige Algorithmus, der am besten performt, ausgewählt, um weiter optimiert zu werden.
Folgende Algorithmen werden getestet:
Logistic Regression
Random Forest Classifier (Ensemble Methode)
Gradient Boosting Classifier (Ensemble Methode)
Support Vector Classifier
K-nearest Neighbors Classifier
Auswahl
Der Gradient Boosting Classifier schneidet im Performance Test mit diesem Datensatz am besten ab und wird gewählt, um weiter optimiert zu werden.
Der Gradient Boosting Classifier mit Scikit-Learn
Zusammenfassung
In diesem Projekt konnte gezeigt werden, dass diese Art der Problemstellung ideal für Machine Learning ist. Wo ein Mensch Zeit bräuchte, alle Variablen zu verstehen und sich einen Überblick über diese zu verschaffen, kann die Maschine innerhalb von Minuten mit 100% Sicherheit vorhersagen, ob ein Pilz essbar ist oder giftig.
Folgende Schritte wurden im Projekt unternommen
Bereinigung der Daten und Exploration
Feature Engineering: Train Set mit den 20 besten Features
Vergleich und Auswahl von Algorithmen
Baseline des besten Algorithmus Gradient Boosting
Testen zweier verschiedenen Feature-Sets
Das beste Model auf dem Test-Set evaluieren
Bestes Model
Das beste Modell war die Kombination aus dem Algorithmus Gradient Boosting mit dem kompletten Feature Set.
Weitere Erkenntnisse
Es war sehr einfach für den Algorithmus, aus den gegebenen Daten zu lernen, welche der gesuchten Eigenschaften ein Pilz hat. Allerdings ist das Zusammenstellen der Daten sehr aufwändig. Daher soll in einem kommenden Projekt diese Erkennung von giftigen und ungiftigen Pilzen aus Bildern modelliert werden. Hierfür wird als Algorithmus ein CNN verwendet werden.