2. Machine Learning Algorithmen

2.1. Einleitung & Motivation

Machine Learning ist heute eine etablierte Methode, um aus Daten hilfreiche Erkenntnisse zu gewinnen und Vorhersagen zu treffen. Gerade für uns als Studierende ist es interessant, dieses aktuelle Thema einmal selbst auszuprobieren und ein Gefühl dafür zu bekommen, wie die Algorithmen funktionieren und eingesetzt werden können.

Unser Ziel war es, innerhalb kurzer Zeit einfache Modelle auszuprobieren, sie zu vergleichen und herauszufinden, welche Vorgehensweisen sinnvoll sind. Dafür haben wir uns für Python entschieden, da es unkompliziert ist und viele nützliche Werkzeuge bietet. Außerdem haben wir bewusst einen praxisnahen Datensatz ausgewählt, mit dem man gut nachvollziehen kann, was Machine Learning leisten kann – und was nicht.

2.2. Demo

Jupyter Output

2.3. Grundlagen

2.3.1. Python

Python ist eine Programmiersprache, die Open Source, und universell ist. Entsprechend findet sie in vielen Bereichen Anwendung. Die Benutzerfreundlichkeit und Übersichtlichkeit der High-Level-Programmiersprache, sowie die einfache Syntax und Grammatik ermöglichen eine benutzerfreundliche Programmierung. Außerdem unterstützt Python mehrere Programmierparadigmen, darunter objektorientierte, aspektorientierte und funktionale Programmierung [Compamind]. Der große Vorteil und einer der Hauptgründe, weshalb wir uns für dieses Projekt für Python entschieden haben, ist die große Menge an Packages und Libraries, die einfach über, z. B. den Python Package Installer (PIP) installiert und verwaltet werden können. Da wir uns in diesem Projekt mit Machine-Learning-Algorithmen, und entsprechender Datenanalyse beschäftigen, bietet sich diese Programmiersprache hervorragend dafür an. Zwei entsprechend wichtige Libraries, „Pandas“ und „scikit-learn“, nutzen wir, um die Algorithmen anzuwenden.

2.3.2. Pandas

Pandas ist ein schnelles und leistungsstarkes Open-Source-Werkzeug, welches gängig zur Datenanalyse und -manipulation verwendet wird und auf der Programmiersprache Python aufbaut [Pandas].

2.3.3. NumPy

NumPy ist eine Open-Source-Bibliothek für Python, die auf numerische Hochleistungsberechnungen spezialisiert ist und durch NumPy-Arrays eine effiziente Verarbeitung und Analyse verschiedener Datensätze ermöglicht [NumPy].

2.3.4. scikit-learn

Scikit-learn bietet einfach anzuwendende und effiziente Tools rund um prädiktive Datenanalyse [scikit-learn]. Es ist Open-Source und unter anderem auf Numpy aufgebaut. Dies stellt ein wichtiges Tool für unser Machine Learning-Experiment dar, da es eine Vielzahl verschiedener Algorithmen implementiert, welche wir nutzen, um die Datensätze vorzubereiten und verschiedene Machine-Learning-Modelle zu implementieren und auszuwerten.

2.3.5. Jupyter

Das Projekt Jupyter ist ein Open-Source-Projekt und gemeinnützig. Es ist ein ideales Tool für interaktive Datenwissenschaft und wissenschaftliche Berechnungen und kann in allen Programmiersprachen genutzt werden. Wir nutzen es in diesem Projekt, da es besonders hilfreich ist, die einzelnen Arbeitsschritte im Machine-Learning-Prozess aufzuzeigen. Es nutzt Markup- und Code-Blocks. In den Markup-Blocks können verschiedene textuelle Blöcke wie Überschriften, Definitionen oder Erklärungen eingefügt und mit der Markup-Sprache formatiert werden. In den Code-Blocks kann Code geschrieben werden und dieser kann danach ausgeführt werden. Somit sieht man das Ergebnis direkt nach dem Codeblock. Durch Erweiterungen können außerdem auch z. B. interaktive Grafiken erstellt werden und sind daher optimal, um wissenschaftliche Methoden und Algorithmen greifbarer und verständlicher zu machen [Jupyter]. Mit diesen Tools haben wir ein Fundament geschaffen, um uns Wissen und Erfahrungen im Bereich Künstliche Intelligenz, einen zukunftsträchtigen Technologie-Bereich, anzueignen und auszubauen.

2.4. Vorgehensweise

2.4.1. Datensatz & Data Preprocessing

Zuerst wurde ein Klassifikations-Trainings-Datensatz auf Kaggle gesucht und mit Pandas ins Projekt importiert [kaggle]. Wichtig ist, dass er eine ausreichende Menge an Datensätzen enthält und für eine Klassifikation geeignet ist (Target-Variable). Anschließend wurde mit der Vorverarbeitung der Daten begonnen. Dies dient dazu, das Machine-Learning-Modell zu unterstützen, richtige Vorhersagen bzw. Klassifizierungen zu tätigen, indem Duplikate und Ausreißer entfernt, Werte normalisiert und Noise bzw. überschüssige Features entfernt werden. Zunächst wird überprüft, ob fehlende Werte oder Duplikate vorhanden sind – beides trifft nicht zu. Anschließend werden Ausreißer mithilfe des Interquartilsabstands (IQR) identifiziert und entfernt, um verzerrte Modellvorhersagen zu vermeiden. Auch Ausreißer sind im Datensatz nicht vorhanden. Danach wird die Zielvariable HeartDisease vom restlichen Feature-Set getrennt. Da einige Merkmale unterschiedliche Skalen aufweisen (z. B. Alter, Cholesterin), werden diese im Anschluss per MinMax-Skalierung auf einen Bereich von 0 bis 1 normiert. Dies ist essenziell, da später ein distanzbasiertes Klassifikationsmodell verwendet wird, das empfindlich auf unterschiedlich skalierte Daten reagiert. Schließlich wird die Datenbasis in Trainings- und Testdaten aufgeteilt, um eine valide Modellbewertung zu ermöglichen. Zuletzt wird eine Korrelationsanalyse durchgeführt, um zu prüfen, ob es Merkmale (Features) gibt, welche stark miteinander korrelieren und somit zwar mehr Berechnungszeit, aber keine bessere Vorhersagequalität bieten, da sich die Datenpunkte stark überschneiden. Diese Korrelationsanalyse zeigt, dass es keine stark miteinander korrelierenden Merkmale gibt und somit keine weitere Feature-Reduktion notwendig ist.

2.4.2. Klassifizierung

2.4.2.1. Erste Implementierung

Zu Beginn wurde eine Vielzahl einfacher Klassifikationsmodelle aus der Bibliothek „sklearn“ ausgewählt und mit den vorhandenen Trainingsdaten trainiert. Anschließend wurden diese Modelle anhand ihrer Vorhersagequalität auf den Testdaten bewertet. Hierfür kamen Performance-Metriken wie Accuracy, Precision, Recall sowie der F1-Score zum Einsatz. Die Modelle wurden danach anhand des F1-Scores sortiert, um die Vorhersagequalität besser vergleichen zu können. Da die Bibliothek „sklearn“ einen einfachen Zugang zu komplexen Klassifikationsverfahren bietet, kam es in dieser Phase teilweise zu Überschneidungen mit den Aufgaben anderer Teammitglieder, was zu Überschneidungen und Vorgriffen innerhalb des Teams führte.

2.4.2.2. Zweite Implementierung

In der überarbeiteten Version der Implementierung konzentrierte sich die Analyse gezielt auf ausgewählte Klassifikationsmodelle: Logistic Regression, Support Vector Machine (SVM), Random Forest, K-Nearest Neighbors (KNN) und Gaussian Naive Bayes. Diese Modelle wurden intensiver untersucht und mit verschiedenen Parametern konfiguriert, um ihre Leistung gezielt zu optimieren. Ein Schwerpunkt der Analyse lag auf der Verwendung und dem Vergleich unterschiedlicher Distanzmetriken. Insbesondere beim K-Nearest Neighbors-Verfahren wurden verschiedene Distanzmetriken untersucht, darunter Manhattan, euklidische sowie Minkowski-Distanzen mit unterschiedlichen Parametern. Außerdem wurde eine eigene Implementierung des euklidischen Abstands (custom_euclidean) entwickelt und getestet. Diese angepasste Metrik kam ebenfalls bei der Support Vector Machine zum Einsatz und wurde hinsichtlich ihres Einflusses auf die Modellperformance untersucht. Die so optimierten Modelle wurden anschließend erneut auf die Testdaten angewendet. Für eine umfassendere Bewertung wurden zusätzlich zum Accuracy, Precision, Recall und dem F1-Score auch der Matthews Correlation Coefficient (MCC) berücksichtigt. Zum Abschluss wurden alle getesteten Modelle einschließlich der verwendeten Parameter (z.B. Distanzmetriken) sowie der zugehörigen Performance-Metriken übersichtlich in einer strukturierten Liste zusammengefasst und für die weitere Analyse bereitgestellt.

2.4.3. Leistungsbewertung

Es wurden verschiedene Classifier zum Einsatz gebracht, jedoch braucht man noch eine Möglichkeit, die Ergebnisse zu bewerten, um am Ende die optimale, auf das eigene Ziel zugeschnittene Lösung zu finden. Dabei reicht es nicht, wie man vielleicht auf den ersten Blick denken würde, zu schauen, welcher Classifier am Ende am meisten richtige Treffer, also in unserem Beispiel, Herzkrankheiten erkannt hat. Denn dann würde ja ein Classifier, der einfach in jedem Fall eine Herzkrankheit vorhersagt, immer der Beste sein. Dabei können aber natürlich auch ganz viele falsche Treffer dabei sein. Es ist also etwas komplexer.

Wir haben uns verschiedene Metriken und Visualisierungen zur Leistungsbewertung genauer angeschaut und damit die Ergebnisse der verschiedenen Classifier bewertet. Dabei wurden Werte ausgegeben, verglichen und Grafiken erstellt:

  • Konfusionsmatrix: Eine einfache Visualisierung der Performanz. Sie zeigt, wie oft ein Modell richtige und falsche Vorhersagen trifft, getrennt nach tatsächlicher und vorhergesagter Klasse. Sie bildet die Grundlage für viele Leistungsmetriken [Google-ConfusionMatrix].

  • Genauigkeit (Accuracy): Accuracy beschreibt den Anteil aller richtig klassifizierten Fälle, egal ob positiv oder negativ. Bei unausgeglichenen Datensätzen kann sie aber täuschen, da auch ein schlechtes Modell scheinbar gute Werte liefern kann [Google-Accuracy].

  • Präzision (Precision): Beschreibt, wie verlässlich die positiven Vorhersagen eines Modells sind. Ein hoher Wert zeigt, dass nur wenige der als positiv klassifizierten Fälle tatsächlich falsch sind [Ultralytics].

  • Sensitivität (Recall): Gibt an, wie gut ein Modell darin ist, alle tatsächlich positiven Fälle zu erkennen. Je höher dieser Wert ist, desto seltener übersieht das Modell echte positive Fälle [Ultralytics].

  • F1-Score: Der F1-Score kombiniert Präzision und Recall zu einem Wert, wobei auch das Gleichgewicht zwischen beiden wichtig ist. Da er das harmonische Mittel nutzt, wird einseitige Leistung stärker bestraft, es gibt also nur einen hohen Wert, wenn beide gut sind [Ultralytics].

  • ROC-Kurve: Sie ist eine grafische Visualisierung und zeigt, wie gut ein Modell bei verschiedenen Schwellwerten zwischen den Klassen unterscheidet. Sie stellt dar, wie sich die wahre positive Rate im Verhältnis zur falschen positiven Rate verändert. Das hilft zu erkennen, wie zuverlässig ein Modell über alle möglichen Schwellen hinweg arbeitet [Google-ROC_AUC].

  • AUC: Dies ist die „Area under the Curve“, also die Fläche unter der ROC-Kurve. Sie fasst die Leistung der ROC-Kurve in einer Zahl zusammen. Ein Wert von 1.0 steht für die perfekte Unterscheidung zwischen den Klassen, 0.5 entspricht dem Zufall. Je größer die Fläche unter der ROC-Kurve ist, desto besser ist das Modell darin, positive Fälle von negativen zu unterscheiden, unabhängig vom Schwellwert [Google-ROC_AUC].

Zusätzlich haben wir uns eine etwas speziellere Metrik angeschaut, den Matthews Correlation Coefficient (MCC). Dieser ist eine komplexere, umfassende Metrik, da er alle vier Werte der Konfusionsmatrix berücksichtigt. Im Gegensatz zum F1-Score bezieht der MCC auch die korrekt erkannten negativen Fälle mit ein. Er liefert auch bei unausgeglichenen Datensätzen eine gute Einschätzung. Der Wert liegt zwischen -1 und 1: 1 steht für perfekte Vorhersagen, 0 entspricht Zufall, -1 bedeutet völlige Fehlklassifikation [ActiveLoop-MCC].

Fazit: Bei der Vorhersage von Herzerkrankungen ist es besonders wichtig, möglichst keine echten Fälle zu übersehen, denn eine nicht erkannte Erkrankung kann schwerwiegende Folgen haben. Deshalb ist Recall (Sensitivität) in unserem Fall vielleicht die wichtigste Metrik. Ein hoher Recall-Wert zeigt, dass das Modell viele tatsächliche Krankheitsfälle erkennt. Ergänzend hilft der F1-Score, da er das Verhältnis zwischen Recall und Präzision in einem Wert zusammenfasst. Und weil der Datensatz nicht komplett ausgewogen ist, sind auch umfassendere Metriken wie der Matthews Correlation Coefficient (MCC) sinnvoll, um die Modellqualität ganzheitlich zu bewerten.

2.5. Fazit & Ausblick

Das zweite Projekt rund um Machine Learning war für uns in vielerlei Hinsicht eine sehr lehrreiche Erfahrung. Wir konnten uns intensiv mit einem hochaktuellen und zugleich komplexen Themenfeld auseinandersetzen, das immer mehr an Bedeutung gewinnt. Die Einarbeitung in unterschiedliche Algorithmen, deren Parametrisierung sowie in zentrale Konzepte wie Feature-Engineering, Datenvorverarbeitung und Leistungsbewertung hat unser Verständnis für das Machine Learning deutlich erweitert.

Besonders herausfordernd, aber gleichzeitig auch eine wichtige Erfahrung war bei diesem Projekt die Arbeit im Team. Da viele der Arbeitsschritte, wie Datenbereinigung, Modelltraining oder Evaluierung, aufeinander aufbauen, kam es teils zu Überschneidungen und Unklarheiten bei der Aufgabenverteilung. Diese Koordinationsprobleme führten gelegentlich zu Doppelarbeit oder unterschiedlichen Bearbeitungsständen. In einem sechsköpfigen Team ist dies jedoch verständlich und lässt sich bei stark vernetzten Aufgabenstellungen nicht vollständig vermeiden. Wichtig ist, dass wir aus diesen Erfahrungen lernen konnten, sowohl technisch als auch in Bezug auf Kommunikation und Teamorganisation.

2.6. Literaturverzeichnis

[Compamind]

Biermann, I. (2023) ‚Python‘, Compamind, 28 April. Verfügbar unter: https://compamind.de/knowhow/python/ (Zugriff: 7 April 2025).​

[Pandas]

The pandas development team (2025) pandas: Python Data Analysis Library. Verfügbar unter: https://pandas.pydata.org (Zugriff: 7 April 2025).

[NumPy]

The NumPy development team (2025) NumPy. Verfügbar unter: https://numpy.org (Zugriff: 7 April 2025).

[scikit-learn]

scikit-learn (2011) scikit-learn: Machine Learning in Python. Verfügbar unter: https://scikit-learn.org/stable/ (Zugriff: 7 April 2025).

[Jupyter]

Project Jupyter (2025) About Project Jupyter. Verfügbar unter: https://jupyter.org/about (Zugriff: 7 April 2025).

[kaggle]

Garg, S. (2025) ‚Heart Prediction Dataset (Quantum)‘. Kaggle. Verfügbar unter: https://www.kaggle.com/datasets/shantanugarg274/heart-prediction-dataset-quantum (Zugriff: 7. April 2025).

[Ultralytics] (1,2,3)

Ultralytics (2025) ‚F1-Punktzahl‘, Ultralytics Glossary. Verfügbar unter: https://www.ultralytics.com/de/glossary/f1-score (Zugriff: 15. April 2025).

[Google-Accuracy]

Google Developers (2025) ‚Classification: Accuracy, recall, precision, and related metrics‘, Machine Learning Crash Course. Verfügbar unter: https://developers.google.com/machine-learning/crash-course/classification/accuracy-precision-recall (Zugriff: 15. April 2025).

[Google-ROC_AUC] (1,2)

Google Developers (2025) ‚Classification: ROC and AUC‘, Machine Learning Crash Course. Verfügbar unter: https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc (Zugriff: 15. April 2025).

[Google-ConfusionMatrix]

Google Developers (2025) ‚Thresholds and the confusion matrix‘, Machine Learning Crash Course. Verfügbar unter: https://developers.google.com/machine-learning/crash-course/classification/thresholding (Zugriff: 15. April 2025).

[ActiveLoop-MCC]

ActiveLoop (2025) ‚Matthews Correlation Coefficient (MCC)‘, ActiveLoop Glossary. Verfügbar unter: https://www.activeloop.ai/resources/glossary/matthews-correlation-coefficient-mcc/ (Zugriff: 15. April 2025).