Machine Learning Classifier in MATLABs Classfication Learner
E-Mail: friedrich.dang@mail.de LinkedIn: https://www.linkedin.com/in/friedrich-dang-0758971b2
Zur Lösung von Klassifizierungsproblemen stellt MATLAB die App Classfication Learner zur Verfügung. [1] Diese App bietet einen schnellen, lösungsorientierten Einstieg durch die unkomplizierte Benutzeroberfläche. Somit können die verschiedensten Methoden des Machine Learnings ohne tieferes, technisches Verständnis verwendet werden, um Daten anahand ihrer Features zu klassifizieren.
In diesem Blogpost werden alle aktuell verfügbaren Klassifizierungsmethoden grundlegend erläutert, um eine Vorstellung zur prinzipiellen Funktionsweise zu vermitteln. Ein erster Vergleich aller Methoden lässt sich in der folgenden Tabelle wiederfinden:
Die von MathWorks angegebene Flexibilität (Gering, Medium, Hoch) steht für das Maß der Anpassungsmöglichkeit, die in der App an den Modellen möglich ist. Bei einem geringen Maß können wenige bis keine Anpassungen vorgenommen werden. Jeodch kann der Code eines Models exportiert und die Architektur dann ggf. optimiert werden. Die Einstufung der Interpretierbarkeit spiegelt das Maß für die Nachvollziehbarkeit der Entscheidung der Klassifizierungen wider.
Decision Trees (Entscheidungsbäume)
Das Ziel bei der Erstellung eines Descision Tree ist es, für jeden Knoten, angefangen mit dem Wurzelknoten, die Bedingungen zu finden, die die höchste Klassifizierungsgüte besitzen. Somit kann die Gesamtdatenmenge optimal in Teilmengen aufgeteilt bzw. klassifiziert werden
Kriterien für eine hohe Klassifizierungsgüte können je nach Algorithmus zur Erstellung des Decision Tree unterschiedlich festgelegt werden. Im beschriebenen Fall des ID3-Algorithmuses (Iterative Dichotomiser 3) ist dies die Minimierung der Entropie (Maß der Unsicherheit). Hierbei handelt es sich um einen Greedy-Algorithmus. Dieser entscheidet sich immer für die aktuell beste Bedingung. Die Entropie wird für jeden Knoten wie folgt berechnet:
(1-2)
Logistic Regression
Die Logistic Regression nutzt die Eigenschaften der Sigmoidfunktion, um ein binäres Klassifizierungsproblem zu lösen. Diese kann dem Input einem Wert im Bereich von 0 bis 1 zu ordnen.
Naive Bayes Classifiers
Discriminant Analysis
In MATLABs Classfication Learner finden sich die Klassifizierungstypen Linear und Quadratic Discriminant. Diese leiten sich aus der Verteilungsfunktion der Gaußschen Normalverteilung und dem Bayes‘ Theorem her. Die Linear Discriminant Analysis (LDA) einer Klasse k lässt sich für den Input x wie folgt berechnen:
Bei der Quadratic Discriminant Analysis wird anstatt der Standardabweichung für alle Klassen, die Varianz für jede Klasse k verwendet. Dies bietet eine Alternative zur LDA, da nicht angenommen wird, dass die Varianz für alle Klassen gleich ist. Die Einschränkung der Annahme, dass die Features normalverteilt sind, bleibt jedoch bestehen. [7]
Nearest Neighbor Classifier
Um eine höchstmögliche Genauigkeit zu erreichen, müssen per Trainings- und Optimierungsverfahren der beste K-Wert und p Abstandsordnungswert bestimmt werden. Ein zu hoher Wert von K führt zu einer Unteranpassung bzw. ein zu geringer Wert zu einer Überanpassung des Models. [8]
Support Vector Machines
Eine Support Vector Machine separiert und klassifiziert Datenpunkte mittels erstellter Hyperebenen. Diese lassen sich mit der folgenden Formel beschreiben:
Die Vektoren für die Datenpunkte, die den maximalen Abstand zur Hyperebene bestimmen, werden Support Vektoren genannt. Der zur Veranschaulichung in Abbildung 4 dargestellte Ansatz lässt sich jedoch in Realität nicht immer so linear trennen – siehe Abbildung 5. Für solche Fälle bietet MATLAB eine quadratische und kubische SVM-Variante an. [10]
Führen diese ebenfalls nicht zu einem guten Ergebnis besteht die Alternative, für die SVM sogenannte Kernel-Funktionen zu verwenden, wie z.B. die Gaussian-Kernel-Funktion. Diese können genutzt werden, um zu den Vektoren einen Wert für eine höhere Dimension hinzuzufügen, um somit eine Hyperebene für die Separation in einer höheren Dimension zu finden. Bezogen auf den Rechenaufwand gibt es den Vorteil, dass Berechnungen in der niedrigeren Dimension der Supportvektoren möglich sind. Die Bestimmung der optimalen Hyperebene für alle Daten ist Ziel des ML-Trainingsverfahrens. [11]
Kernel Approximation Classifiers
MATLABs Classfication Learner bietet zwei weitere Kernel Modelle für die Klassifizierung an: SVM Kernel und Logistic Regression Kernel. Diese sollen insbesondere für nicht-lineare Klassifizierungsprobleme geeignet sein. Im Vergleich zu den Kernel SVMs unter der Support Vektor Machines soll ein schnelleres Training und Testen möglich sein. Darüber hinaus sind fortgeschrittene Einstellungsmöglichkeiten für die Kernel Funktionen verfügbar. [2]
Für den Typ Logistic Regression ergeben sich mit dieser Variante überhaupt erst Einstellungsmöglichkeiten. Denn die Logistic Regression Kernel bindet im Vergleich zur einfachen Logistic Regression die Inputvektoren in eine Kernel-Funktion ein. Dabei hat die Logistic Regression im Vergleich zur SVM immer noch den Vorteil, dass sie die Klassifizierung in Form von Wahrscheinlichkeiten statt einer klaren Separation ausführt. Dafür wird jedoch deutlich mehr Rechenaufwand benötigt, da SVMs statt aller Vektoren nur die Support Vektoren betrachten. [2]
Ensemble Classifiers
Mit der steigenden Verfügbarkeit von höheren Rechenkapazitäten steigt die Verfügbarkeit anspruchsvollerer und komplexerer Modelle. Der Ansatz der Ensemble Classifiers ist es, traditionelle ML-Methoden zu kombinieren oder zu erweitern, um deren Schwächen auszubessern und ihre Genauigkeit zu erhöhen. In Classfication Learner werden die zwei Ansätze der Randomisierung mittels Random Subspace und Optimierung mittels Gradient Boosting mit den Methoden Decision Tree, Nearest Neighbour und Discriminant Analysis kombiniert. Somit sollte die Robustheit des Models erhöht sein bzw. es ein stabileres Ergebnis für Inputs hoher Varianz ausgeben. Die beiden Ansätze werden in Folge an der Methode Decision Tree erläutert, da diese im Classfication Learner für beide Ansätze vertreten ist. [2]
Neural Network Classifiers
Ein neuronales Netz besteht aus einer Vielzahl von Schichten, die wiederum aus einer Vielzahl von sogenannten Neuronen bestehen. Bis auf die erste Schicht nehmen alle Schichten den Output der Neuronen der vorherigen Schicht als Input entgegen. Die erste Schicht ist die sogenannte Inputschicht, welche den generellen Dateninput entgegennimmt. Die letzte Schicht spiegelt das Outputlayer und Klassifizierungsergebnis wider.
Neuronen können außerdem als Aktivierungsfunktionen (z.B. Sigmoidfunktion) betrachtet werden, die die gewichtete Summe des Inputs und einen Schwellenwert (Bias) beinhaltet. Mit Hilfe des Schwellenwerts kann der Output reguliert bzw. die Aktivierungsstärke des Neurons festgelegt werden. Während des Trainings werden anhand einer Kostenfunktion (z.B. dem Maß der Entropie) die Gewichte und Schwellenwerte der Neuronen optimiert. Somit können schlussendlich Muster im Input erkannt und zu einem gewissen Wahrscheinlichkeitsgrad korrekt klassifiziert werden. [15]
Quellen
[1] MathWorks: Classification Learner App. URL https://www.mathworks.com/help/stats/classificationlearner-app.html
[2] MathWorks: Choose Classifier Options. URL https://www.mathworks.com/help/stats/choose-a-classifier.html#mw_02826ac1-62eb-4937-b8bd-6c7cdbbd89a4
[3] KDnuggets: Decision Tree Algorithm, Explained. URL https://www.kdnuggets.com/2020/01/decision-tree-algorithm-explained.html
[4] Knuth, Tobias: Lernende Entscheidungsbäume. In: Informatik Spektrum 44 (2021), Nr. 5, S. 364–369. URL https://link.springer.com/article/10.1007/s00287-021-01398-0#ref-CR16
[5] KDnuggets: Logistic Regression for Classification. URL https://www.kdnuggets.com/2022/04/logistic-regression-classification.html
[6] Scikit-Learn: Naiver Bayes-Klassifikator. URL https://ichi.pro/de/naiver-bayes-klassifikator-erklart-89032293183981
[7] Brownlee, Jason: Linear Discriminant Analysis for Machine Learning. URL https://machinelearningmastery.com/linear-discriminant-analysis-for-machine-learning
[8] Yadnesh: k-Nearest Neighbors in Machine Learning (k-NN). URL https://medium.com/analytics-vidhya/k-nearest-neighbors-in-machine-learning-k-nn-e84a70b79b3c
[9] Han, Jiawei: Support Vector Machines. In: Han, Jiawei (Hrsg.): Data mining : Concepts and techniques. 3rd ed. Amsterdam, Boston : Elsevier/Morgan Kaufmann, 2012 (The Morgan Kaufmann series in data management systems), S. 408–413
[10] Ray, Sunil: Understanding Support Vector Machine(SVM) algorithm from examples (along with code). URL https://www.analyticsvidhya.com/blog/2017/09/understaing-support-vector-machine-example-code
[11] Ng, Annalyn ; Soo, Kenneth: Support-Vektor-Maschine. In: Ng, Annalyn; Soo, Kenneth (Hrsg.): Data Science – was ist das eigentlich?! : Algorithmen des maschinellen Lernens verständlich erklärt. 1. Aufl. 2018. Berlin, Heidelberg : Springer Berlin Heidelberg, 2018, S. 97–105
[12] TIBCO Software: What is a Random Forest? URL https://www.tibco.com/reference-center/what-is-a-random-forest
[13] Pal, Aratrika: Gradient Boosting Trees for Classification: A Beginner’s Guide. URL https://medium.com/swlh/gradient-boosting-trees-for-classification-a-beginners-guide-596b594a14ea
[14] Brownlee, Jason: A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning. In: Machine Learning Mastery (2016-08-09)
[15] IBM: Neural Networks. URL https://www.ibm.com/cloud/learn/neural-networks
[16] 3Blue1Brown. URL https://youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi
[17] Ng, Annalyn ; Soo, Kenneth: Neuronale Netze. In: Ng, Annalyn; Soo, Kenneth (Hrsg.): Data Science – was ist das eigentlich?! : Algorithmen des maschinellen Lernens verständlich erklärt. 1. Aufl. 2018. Berlin, Heidelberg : Springer Berlin Heidelberg, 2018, S. 129–144
[18] KDnuggets: A Quick Introduction to Neural Networks. URL https://www.kdnuggets.com/2016/11/quick-introduction-neural-networks.html
Kommentare
Kommentar veröffentlichen