{"id":168400,"date":"2023-04-29T22:55:57","date_gmt":"2023-04-29T21:55:57","guid":{"rendered":"https:\/\/liora.io\/de\/?p=168400"},"modified":"2026-08-03T12:05:20","modified_gmt":"2026-08-03T10:05:20","slug":"machine-learning-clustering","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/machine-learning-clustering","title":{"rendered":"Machine Learning &amp; Clustering: Fokus auf den DBSCAN Algorithmus"},"content":{"rendered":"\n<p><strong>Clustering ist eine besondere Disziplin des Machine Learning, mit dem Ziel deine Daten in homogene Gruppen mit gemeinsamen Merkmalen aufzuteilen. Ein im Marketing sehr gesch\u00e4tztes Anwendungsgebiet, zum Beispiel dort, wo oft  Kundenst\u00e4mme zu segmentieren, um bestimmte Verhaltensweisen zu erkennen.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/machine-learning-engineer\">Entdecken Sie die Liora-Schulungen<\/a><\/div><\/div>\n\n\n\n<p>In den vorherigen Artikeln haben wir dir zwei Clustering Algorithmen erkl\u00e4rt: clustering : <a href=\"https:\/\/liora.io\/de\/was-ist-k-means\">K-means<\/a> und <a href=\"https:\/\/liora.io\/de\/machine-learning-clustering-fokus-auf-den-cah-algorithmus\">CAH Algorithmus- hieraschische aufsteigende Klassifizierung<\/a>.<\/p>\n\n\n\n<p>Deshalb erscheint es uns als wichtig, diesen Lernprozess mit dem DBSCAN fortzusetzen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dbscan-algorithmus\">DBSCAN Algorithmus<\/h2>\n\n\n\n<p>DBSCAN ist ein sehr bekannter un\u00fcberwachter Algorithmus f\u00fcr Clustering. Er wurde 1996 von Martin Ester, Hans-Peter Kriegel, J\u00f6rg Sander und Xiawei Xu vorgeschlagen.<\/p>\n\n\n\n<p>In diesem Artikel erkl\u00e4ren wir dir, wie er funktioniert und wie es in Python mit Hilfe von Bibliotheken wie <a href=\"https:\/\/scikit-learn.org\/stable\/\">Scikit-Learn<\/a> implementiert werden kann. Die Anwendungsbereiche sind vielf\u00e4ltig: Kartenanalyse, Datenanalyse, Segmentierung eines Bildes&#8230;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"das-prinzip\">Das Prinzip<\/h3>\n\n\n\n<p>Wenn Punkte und eine ganze Zahl k gegeben sind, zielt der Algorithmus darauf ab, die Punkte in k homogene und kompakte Gruppen, sogenannte Cluster, zu unterteilen. Schauen wir uns das folgende Beispiel an:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eDas Prinzip\u201c\" decoding=\"async\" height=\"339\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/DBSCAN1-1.webp\" style=\"width:100%;height:auto\" width=\"768\"\/><\/figure>\n\n\n\n<p>DBSCAN ist ein einfacher Algorithmus, der Cluster definiert, indem er die Sch\u00e4tzung der lokalen Dichte verwendet. Er kann in vier Schritte unterteilt werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcr jede Beobachtung schaust du dir die Anzahl der Punkte an, die h\u00f6chstens einen \u03b5-Abstand von ihr entfernt sind. Diesen Bereich nennt man die \u03b5-Nachbarschaft der Beobachtung.<\/li>\n<li>Wenn eine Beobachtung mindestens eine bestimmte Anzahl von Nachbarn hat, einschlie\u00dflich sich selbst, wird sie als Kernbeobachtung betrachtet. In diesem Fall wurde eine Beobachtung mit hoher Dichte entdeckt.<\/li>\n<li>Alle Beobachtungen in der N\u00e4he einer Core-Beobachtung geh\u00f6ren zu demselben Cluster. Es k\u00f6nnen auch Herzbeobachtungen in unmittelbarer N\u00e4he zueinander sein. Das bedeutet, dass es eine lange Folge von Herzbeobachtungen gibt, die einen einzigen Cluster bilden.<\/li>\n<li>Jede Beobachtung, die keine Kernbeobachtung ist und keine Kernbeobachtung in ihrer Nachbarschaft hat, wird als Anomalie betrachtet.<\/li>\n<\/ul>\n\n\n\n<p>Du musst also zwei Informationen festlegen, bevor du den DBSCAN benutzen kannst:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" style=\"margin-top:32px;margin-bottom:32px\">Wie gro\u00df ist die Entfernung \u03b5, um f\u00fcr jede Beobachtung die \u03b5-Nachbarschaft zu bestimmen? Welche minimale Anzahl von Nachbarn ist notwendig, um eine Beobachtung als Kernbeobachtung zu betrachten?<\/blockquote>\n\n\n\n<p>Diese beiden Informationen werden vom Nutzer frei eingegeben. Im Gegensatz zum k-Mittelwert-Algorithmus oder der hierarchischen aufsteigenden Klassifizierung muss die Anzahl der Cluster nicht vorab festgelegt werden, was den Algorithmus weniger starr macht.<\/p>\n\n\n\n<p>Ein weiterer Vorteil von DBSCAN ist, dass es auch mit Ausrei\u00dfern oder Anomalien umgehen kann. In der obigen Abbildung siehst du, dass der Algorithmus drei Hauptcluster ermittelt hat: blau, gr\u00fcn und gelb. Die violett gef\u00e4rbten Punkte sind Anomalien, die vom DBSCAN erkannt wurden. Nat\u00fcrlich kann die Partitionierung je nach dem Wert von \u03b5 und der Anzahl der minimalen Nachbarn variieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"begriff-der-entfernung-und-wahl-des\">Begriff der Entfernung und Wahl des \u03b5<\/h3>\n\n\n\n<p>In diesem Algorithmus sind zwei Punkte entscheidend:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" style=\"margin-top:32px;margin-bottom:32px\">Welche Metrik wird verwendet, um die Entfernung zwischen einer Beobachtung und ihren Nachbarn zu bewerten? was ist das ideale \u03b5?<\/blockquote>\n\n\n\n<p>In DBSCAN wird normalerweise die euklidische Distanz verwendet, d.h. p = (p1,&#8230;.,pn) und q = (q1,&#8230;.,qn):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eBegriff der Entfernung und Wahl des \u03b5\u201c\" decoding=\"async\" height=\"76\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/dbscan2-1.webp\" style=\"width:100%;height:auto\" width=\"768\"\/><\/figure>\n\n\n\n<p>Bei jeder Beobachtung wird, um die Anzahl der Nachbarn in h\u00f6chstens einer Entfernung \u03b5 zu z\u00e4hlen, die euklidische Entfernung zwischen dem Nachbarn und der Beobachtung berechnet und \u00fcberpr\u00fcft, ob diese kleiner als \u03b5 ist.<\/p>\n\n\n\n<p>Bleibt nun noch die Frage, wie man das richtige Epsilon ausw\u00e4hlt. Angenommen, wir entscheiden uns in unserem Beispiel daf\u00fcr, den Algorithmus mit verschiedenen Werten von \u03b5 zu testen. Hier ist das Ergebnis :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eBegriff der Entfernung und Wahl des \u03b5\u201c\" decoding=\"async\" height=\"276\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/dbscan3-1.webp\" style=\"width:100%;height:auto\" width=\"768\"\/><\/figure>\n\n\n\n<p>In allen drei Beispielen ist die minimale Anzahl an Nachbarn immer auf 5 festgelegt.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" style=\"margin-top:32px;margin-bottom:32px\">Wenn \u03b5 zu klein ist, ist die \u03b5-Nachbarschaft zu gering und alle Beobachtungen im Datensatz werden als Anomalien betrachtet.<\/blockquote>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/machine-learning-engineer\">Machine Learning Engineer Weiterbildung entdecken<\/a><\/div><\/div>\n\n\n\n<p>Dies ist der Fall in der linken Abbildung eps = 0,05.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" style=\"margin-top:32px;margin-bottom:32px\">Im Gegensatz dazu enth\u00e4lt jede Beobachtung, wenn epsilon zu gro\u00df ist, in ihrer \u03b5-Nachbarschaft alle anderen Beobachtungen des Datensatzes. Folglich erhalten wir nur einen einzigen Cluster. Es ist daher sehr wichtig, das \u03b5 gut zu kalibrieren, um eine qualitativ hochwertige Partitionierung zu erhalten.<\/blockquote>\n\n\n\n<p>Eine einfache Methode, um \u03b5 zu optimieren, besteht darin, f\u00fcr jede Beobachtung zu schauen, wie weit ihr n\u00e4chster Nachbar entfernt ist. Dann kannst du einfach ein \u03b5 so festlegen, dass ein &#8222;ausreichend gro\u00dfer&#8220; Anteil der Beobachtungen einen Abstand zum n\u00e4chsten Nachbarn hat, der kleiner als \u03b5 ist. Mit &#8222;ausreichend gro\u00df&#8220; sind 90-95% der Beobachtungen gemeint, die mindestens einen Nachbarn in ihrer \u03b5-Nachbarschaft haben m\u00fcssen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"wie-implementiert-man-dbscan-mit-python\">Wie implementiert man DBSCAN mit Python?<\/h2>\n\n\n\n<p>Das Training von DBSCAN wird durch die Scikit-Learn-Bibliothek erleichtert. Unser Datensatz, der als Beispiel diente, l\u00e4sst sich leicht mit der Funktion make_blobs von Scikit-Learn erstellen. Hier ist, wie sie in Code implementiert wird :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\" style=\"margin-top:32px;margin-bottom:32px\">Da wir nun unseren Datensatz haben, werden wir versuchen, das optimale \u03b5 zu bestimmen, um eine bessere Partitionierung unseres Datensatzes zu erreichen.<\/blockquote>\n\n\n\n<p>Scikit-Learn stellt eine <a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.neighbors.NearestNeighbors.html\"> Klasse NearestNeighbors<\/a> zur Verf\u00fcgung, mit der die n\u00e4chsten Nachbarn jeder Beobachtung sowie die Entfernungen ermittelt werden k\u00f6nnen. Hier ist, wie man sie in Code implementiert:<\/p>\n\n\n\n<p>Hier ist das Ergebnis:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:460px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eWie implementiert man DBSCAN mit Python?\u201c\" decoding=\"async\" height=\"309\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/nearestneighbors-1.webp\" style=\"width:460px;max-width:100%;height:auto\" width=\"460\"\/><\/figure>\n\n\n\n<p>Wie wir zuvor gesehen haben, werden wir ein \u03b5 so w\u00e4hlen, dass 90% der Beobachtungen einen Abstand zum n\u00e4chsten Nachbarn haben, der kleiner als \u03b5 ist. In unserem Beispiel scheint 0,2 geeignet zu sein.<\/p>\n\n\n\n<p>Nun, da wir unser \u03b5 optimiert haben, k\u00f6nnen wir unsere Partitionierung mithilfe von DBSCAN durchf\u00fchren, das bereits in Scikit-Learn implementiert ist.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/machine-learning-engineer\">Machine Learning Engineer Weiterbildung entdecken<\/a><\/div><\/div>\n\n\n\n<p>Hier ist das Ergebnis:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:453px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eWie implementiert man DBSCAN mit Python?\u201c\" decoding=\"async\" height=\"315\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/DBSCAN4-3.webp\" style=\"width:453px;max-width:100%;height:auto\" width=\"453\"\/><\/figure>\n\n\n\n<p>Mit den Argumenten eps und min_samples k\u00f6nnen die Parameter des Algorithmus festgelegt werden, n\u00e4mlich der Abstand \u03b5 und die minimale Anzahl von Nachbarn, um als Kernbeobachtung zu gelten.<\/p>\n\n\n\n<p>Der Algorithmus hat also 3 Hauptcluster und einige Anomalien entdeckt. Jede der Beobachtungen wird mit dem Label des entsprechenden Clusters beschriftet (z. B. 0,1,2). Die Anomalien werden mit -1 beschriftet und bilden somit eine eigene Klasse zus\u00e4tzlich zu den 3 entdeckten Clustern.<\/p>\n\n\n\n<p>Die Verwendung eines Clustering-Algorithmus wie DBSCAN ist nicht einfach, je nachdem, welche Daten du hast. Die Daten m\u00fcssen oftmals nachbearbeitet werden.<\/p>\n\n\n\n<p>Hat dir diese Serie \u00fcber Clustering gefallen? In den <strong>Liora-Schulungen<\/strong> lernst du, alle wichtigen Clustering-Algorithmen zu beherrschen und sie in Datens\u00e4tzen zu interpretieren.<\/p>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Clustering ist eine besondere Disziplin des Machine Learning, mit dem Ziel deine Daten in homogene Gruppen mit gemeinsamen Merkmalen aufzuteilen. Ein im Marketing sehr gesch\u00e4tztes Anwendungsgebiet, zum Beispiel dort, wo oft Kundenst\u00e4mme zu segmentieren, um bestimmte Verhaltensweisen zu erkennen. In den vorherigen Artikeln haben wir dir zwei Clustering Algorithmen erkl\u00e4rt: clustering : K-means und CAH [&hellip;]<\/p>\n","protected":false},"author":47,"featured_media":219715,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-168400","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/168400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=168400"}],"version-history":[{"count":4,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/168400\/revisions"}],"predecessor-version":[{"id":223357,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/168400\/revisions\/223357"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/219715"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=168400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=168400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}