K-Means Clustering

Bei K-Means handelt es sich um einen einfachen Clustering-Algorithmus, der durch die Betrachtung von Objekten in einem n-dimensionalen Koordinatensystem zusammengehörige Objekte finden kann. Ein großer Vorteil dieses Algorithmus besteht darin, dass keine zuvor annotierten Klassen benötigt werden, wodurch die Aufbereitung der Daten deutlich schneller und einfacher durchzuführen ist. Da es sich hierbei jedoch um einen Clustering- und keinen Klassifizierungsalgorithmus handelt, ist dieser, ohne weiterführende Schritte, nicht in der Lage einzelne Zeichen zu klassifizieren. Durch die trotzdem vorhandenen Klassen der Zeichen im Datensatz, kann ein Cluster jedoch als Klassifizierung für unbekannte Daten genutzt werden, um anhand dessen die Bewertungsmetriken zu erheben. Die näherungsweise Optimierung erfolgte durch die Bestimmung des Wertes k, welcher angibt, wie viele Cluster für die Suche verwendet werden sollen. In dieser Arbeit wurde dies durch die Ellbogenmethode bestimmt.

KNN

KNN ist ein Klassifizierungsalgorithmus, welcher ebenfalls Objekte innerhalb eines Koordinatensystems betrachtet, diese allerdings nicht durch die Nähe zu einem Clusterzentrum klassifiziert, sondern durch die nächsten Objekte in seinem Umfeld. Dieser hat den Vorteil, dass die Implementierung verhätnißnmäßig unkompliziert ist, da es keine klassische Trainingsphase benötigt. Ein Modell muss nur anhand bestimmter Parameter erstellt werden und kann damit bereits für die Klassifizierung unbekannter Objekte genutzt werden. Die Bestimmung der Parameter erfolgte durch die GirdSearchCV Funktion aus der Pythonbibliothek Scikit-Learn. Dieser Funktion werden eine Reihe an unterschiedlichen Parametern gegeben, wodurch anschließend alle Kombinationsmöglichkeiten getestet werden, um das beste Modell daraus zu erstellen. Die wichtigsten Parameter sind hierbei die Anzahl der Nachbarn, die für die Klassifizierung betrachtet werden sollen und ob diese gewichtet, also abhängig von ihrer Distanz zu dem zu klassifizierenden Objekt bewertet werden.

Random Forest

Bei Random-Forest handelt es sich erneut um einen Klassifizierungsalgorithmus, der anhand verschiedener Entscheidungsbäume ein Objekt klassifiziert. Dabei wird eine bestimmte Anzahl von Entscheidungsbäumen erstellt, welche unterschiedliche Eigenschaften der Objekte nutzen. Dadurch kann vermieden werden, dass eine Eigenschaft besonders großen Einfluss auf die Klassifizierung hat, da die Bäume am Ende über die Klassifizierung “abstimmen”. Da es, im Gegensatz zu KNN, hierbei deutlich mehr einstellbare Parameter gibt, wurden diese anhand der RandomSearchCV Funktion aus der SciKit Learn Bibliothek näherungsweise optimiert. Dafür wurden 50 unterschiedliche, zufällig gewählte Kombinationsmöglichkeiten getestet, um aus diesen das beste Modell zu erstellen.

CNN

Beim letzten Algorithmus handelt es sich um ein gefaltetes, neuronales Netzwerk, welches speziell für die Klassifizierung anhand Bildern entwickelt wurde. Dabei werden durch Faltung bestimmte Bildeigenschaften und Merkmale aus den Bildern herausgearbeitet, um diese anschließend mit einem voll verbundenen Netz zu klassifizieren. Die voll verbundenen Schichten bestehen aus künstlichen Neuronen, welche Berechnungen durchführen, um eine Wahrscheinlichkeit der Klassenzugehörigkeit auszugeben. Die Berechnungen innerhalb der Neuronen werden anschließend durch Backpropagation während des Trainings kontinuierlich angepasst, damit die Ausgaben, so gut es geht, zu den Trainingsdaten passen. Dieses entstandene Netzwerk wird dann für die Klassifizierung unbekannter Objekte genutzt. Der Aufbau des hier verwendeten Netzes orientiert sich an der LeNet5 Architektur (Lecun, Y. u. a. 1998)., welche hier zu sehen ist:

LeNet5-Architektur

LeNet5 - 5 Architektur eines gefalteten, neuronalen Netztes

Die Idee besteht darin, zunächst Faltungsschichten mit sogenannten Pooling Schichten zu verbinden und im Wechsel anzuwenden, bevor die daraus resultierenden Ergebnisse durch voll verbundene Schichten klassifiziert werden.