{"id":168669,"date":"2026-01-28T16:52:44","date_gmt":"2026-01-28T15:52:44","guid":{"rendered":"https:\/\/liora.io\/de\/?p=168669"},"modified":"2026-02-06T04:22:27","modified_gmt":"2026-02-06T03:22:27","slug":"machine-learning-clustering-fokus-auf-den-cah-algorithmus","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/machine-learning-clustering-fokus-auf-den-cah-algorithmus","title":{"rendered":"Machine Learning &#038; Clustering: Der CAH-Algorithmus"},"content":{"rendered":"<p><strong>Clustering ist eine spezielle Disziplin des Machine Learning, deren Ziel es ist, Ihre Daten in homogene Gruppen mit gemeinsamen Merkmalen aufzuteilen. Dies ist z. B. ein beliebter Bereich im Marketing, wo oft versucht wird, Kundenst\u00e4mme zu segmentieren, um bestimmte Verhaltensweisen zu erkennen.<\/strong><\/p>\nIn einem <a href=\"https:\/\/liora.io\/de\/was-ist-k-means\">fr\u00fcheren Artikel<\/a> haben wir einen ersten Clustering-Algorithmus vorgestellt: den K-Mittelwert- oder K-Means-Algorithmus.\n\nIn diesem Artikel werden wir die Funktionsweise des CAH-Algorithmus im Detail erl\u00e4utern. Die Hierarchische Aufsteigende Klassifikation : CAH ist ein sehr bekannter un\u00fcberwachter Algorithmus f\u00fcr das Clustering.\n\nDie Anwendungsbereiche sind vielf\u00e4ltig: Kundensegmentierung, Datenanalyse, Segmentierung eines Bildes, semi-\u00fcberwachtes Lernen&#8230;.\n<h2>Das Prinzip<\/h2>\nWenn Punkte und eine ganze Zahl k gegeben sind, zielt der Algorithmus darauf ab, die Punkte in k homogene und kompakte Gruppen, sogenannte <strong>Cluster<\/strong>, zu unterteilen.\n\n<img decoding=\"async\" width=\"383\" height=\"374\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-4-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-4-1.png 383w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-4-1-300x293.png 300w\" sizes=\"(max-width: 383px) 100vw, 383px\">\n<img decoding=\"async\" width=\"379\" height=\"383\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-5-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-5-1.png 379w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-5-1-297x300.png 297w\" sizes=\"(max-width: 379px) 100vw, 379px\">\n\nSehen wir uns das folgende Beispiel an: clusters clusters Auf diesem <strong>2D-Datensatz<\/strong> wird deutlich, dass er in drei Gruppen unterteilt werden kann. Wie geht man konkret vor?\n<ul>\n \t<li>Die Grundidee ist, dass Sie jeden Punkt in Ihrem Datensatz als Zentroid betrachten. Das bedeutet, dass jedem Punkt eine eindeutige Bezeichnung (0,1,2,3, 4&#8230;) zugeordnet ist.<\/li>\n \t<li>Dann gruppieren wir jeden Zentroid mit seinem n\u00e4chsten benachbarten Zentroid. Dieser nimmt das Etikett des Zentroiden an, der ihn &#8222;absorbiert&#8220; hat.<\/li>\n<\/ul>\n<ul>\n \t<li>&nbsp;Dann werden die neuen Zentroiden berechnet, die die Schwerpunkte der neu geschaffenen Cluster sein werden.<\/li>\n \t<li>&nbsp;Dies wird so lange wiederholt, bis ein einzelner Cluster oder eine zuvor festgelegte Anzahl von Clustern vorliegt.<\/li>\n<\/ul>\nIn unserem Beispiel ist die optimale Anzahl von Clustern 3 und das Endergebnis ist in der Abbildung rechts zu sehen.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Unsere Data Science Kurse entdecken<\/a><\/div><\/div>\n\n<img decoding=\"async\" width=\"404\" height=\"336\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/Capture-de\u0301cran-2020-06-12-a\u0300-16.12.42.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/Capture-de\u0301cran-2020-06-12-a\u0300-16.12.42.png 404w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/Capture-de\u0301cran-2020-06-12-a\u0300-16.12.42-300x250.png 300w\" sizes=\"(max-width: 404px) 100vw, 404px\">\n\nUm den Mechanismus besser zu verstehen, kann man ihn mit einem einfachen Schema darstellen: 2D-Datensatz Zu Beginn wird jeder Buchstabe als Cluster betrachtet, dann werden sie nach und nach entsprechend ihrer N\u00e4he gruppiert, um am Ende nur noch eine einzige Gruppe zu bilden: abcdef.\n<h2>Der Begriff der Distanz und des Kriteriums<\/h2>\n&nbsp;Wie Du vielleicht verstanden hast, sind in diesem Algorithmus drei Punkte entscheidend:\n<ul>\n \t<li>&nbsp;Welche Metrik wird verwendet, um den Abstand zwischen Zentroiden zu bewerten? Welche Anzahl von Clustern ist zu w\u00e4hlen?<\/li>\n \t<li>Nach welchem Kriterium wird entschieden, ob die Zentroiden untereinander gruppiert werden?<\/li>\n<\/ul>\nBei der hierarchischen aufsteigenden Klassifikation wird in der Regel die euklidische Distanz verwendet, d. h. p = (p1,&#8230;.,pn) und q = (q1,&#8230;.,qn) als euklidische Distan.\n\n<img decoding=\"async\" width=\"800\" height=\"79\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/distance-euclidienne.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/distance-euclidienne.png 833w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/distance-euclidienne-300x30.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/distance-euclidienne-768x76.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\">\n\nSie erm\u00f6glicht es, die Entfernung zwischen den Zentroiden zu bewerten. Bei jedem Schritt der Gruppierung zwischen zwei Zentroiden erh\u00e4lt man ein neues Cluster und einen neuen Zentroiden, der nichts anderes ist als der Schwerpunkt der <strong>Punktwolke,<\/strong> wie oben erkl\u00e4rt.&nbsp;\n\nHier kommt der Begriff der klasseninternen Tr\u00e4gheit ins Spiel. Sie ist einfach die Summe der euklidischen Distanzen zwischen jedem Punkt, der mit dem <strong>Cluster verbunden<\/strong> ist, und dem neu berechneten Schwerpunkt. Wenn Du Cluster zusammenlegst, erh\u00f6ht sich nat\u00fcrlich auch die Tr\u00e4gheit innerhalb der Klasse. Die Herausforderung besteht darin, diesen Anstieg so gering wie m\u00f6glich zu halten. Wenn Du also die Wahl hast, ein Cluster mit vier oder f\u00fcnf anderen Clustern zu gruppieren, wirst du das Cluster w\u00e4hlen, das den Zuwachs an Tr\u00e4gheit innerhalb der Klasse minimiert. Diese Methode ist das Prinzip des <strong>Ward-Kriteriums,<\/strong> das sehr oft f\u00fcr die hierarchische Klassifikation verwendet wird. Es gibt noch andere Kriterien, aber das Ward-Kriterium ist das standardm\u00e4\u00dfig verwendete Kriterium, wenn man eine <strong>HAC in Python mit Scikit Learn<\/strong> implementiert.\n\nIm vorherigen Beispiel war es einfach, die ideale Anzahl von Clustern zu finden, indem man sie einfach grafisch darstellte. Normalerweise haben Datens\u00e4tze mehr als zwei Dimensionen und es ist daher schwierig, die Punktwolke zu visualisieren und die optimale Anzahl von Clustern schnell zu identifizieren. Man kann die <strong>HAC entscheiden,<\/strong> indem man ihr vorher eine Anzahl von Clustern vorgibt.\n\nNehmen wir im vorherigen Beispiel an, dass wir die Daten vorher nicht visualisiert haben, und entscheiden uns, verschiedene Male mit einer unterschiedlichen Anzahl von <strong>Clustern zu testen<\/strong>. Hier sind die Ergebnisse, die wir erhalten haben:\n\n<img decoding=\"async\" width=\"512\" height=\"140\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-6-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-6-1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-6-1-300x82.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\">\n\nDie Partitionierung ist ungenau, denn die optimale Clusterzahl ist 3.\n\nEine bekannte Methode, um die optimale Clusterzahl zu finden, ist die <strong>Verwendung eines Dendrogramms<\/strong> wie das folgende:\n\n<img decoding=\"async\" width=\"512\" height=\"413\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-7-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-7-1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-7-1-300x242.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\">\n\nEr erm\u00f6glicht es, die aufeinanderfolgenden <strong>Clusterungen<\/strong> zu visualisieren, bis ein einziger Cluster entsteht.\n\nOft ist es sinnvoll, die <strong>Partitionierung<\/strong> zu w\u00e4hlen, die dem gr\u00f6\u00dften Sprung zwischen zwei aufeinanderfolgenden Clustern entspricht.&nbsp;\n\nDie Anzahl der Cluster entspricht dann der Anzahl der vertikalen Linien, durch die der horizontale Schnitt des Dendrogramms verl\u00e4uft.\n\nIn unserem Beispiel oben entspricht der <strong>horizontale Schnitt<\/strong> den beiden roten Linien.\n\nEs gibt drei vertikale Linien, durch die der Schnitt verl\u00e4uft. Daraus folgt, dass die optimale Anzahl von <strong>Clustern<\/strong> 3 ist.\n<h2>Python in der Praxis<\/h2>\nDas Trainieren einer Hierarchischen Aufsteigenden Klassifikation wird mit der <a href=\"https:\/\/scikit-learn.org\/stable\/\">Bibliothek Scikit-Learn<\/a> erleichtert.\n\nEin Datensatz wie der, der als Beispiel diente, kann leicht mit der Funktion make_blobs von <strong>Scikit-Learn<\/strong> erstellt werden.\n\nSobald wir unseren Datensatz erzeugt haben, k\u00f6nnen wir mit der <strong>Implementierung einer HAC<\/strong> fortfahren. Wir werden die Bibliothek Scikit-Learn verwenden.&nbsp;\n\nHier ist, wie sie in Code implementiert wird :\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Python programmieren lernen<\/a><\/div><\/div>\n\n\nMit dem <strong>Attribut n_clusters<\/strong> wird die gew\u00fcnschte Anzahl an Clustern f\u00fcr die Klassifizierung angegeben. Standardm\u00e4\u00dfig wird die <strong>euklidische Distanz<\/strong> verwendet. Auch das &#8222;Clusterkriterium&#8220;, das als Linkage bezeichnet wird, ist standardm\u00e4\u00dfig das <strong>Ward-Kriterium.<\/strong>\n<h2>Die Grenzen der Hierarchischen Aufsteigenden Klassifizierung<\/h2>\nWie wir gesehen haben, muss der Algorithmus zun\u00e4chst die Anzahl der Partitionen festlegen.\n\nDas erfordert eine genaue Vorstellung davon, und auch wenn wir eine Methode gesehen haben, um f\u00fcr bestimmte Datens\u00e4tze zu optimieren, ist sie nicht unfehlbar. Datenmengen mit elliptischen Formen zum Beispiel werden Probleme bereiten.\n\nIm folgenden Beispiel sehen wir deutlich zwei Gruppen, die zwei Ellipsen \u00e4hneln. Die Abbildung rechts zeigt das Ergebnis nach der <strong>Verwendung einer HAK<\/strong>. Es ist klar, dass diese es nicht geschafft hat, unsere beiden Ellipsen zu identifizieren.\n\n<img decoding=\"async\" width=\"512\" height=\"220\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/CAH4.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/CAH4.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/CAH4-300x129.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\">\n\nAuch die hierarchische <strong>Bottom-up-Klassifizierung<\/strong> kann schnell sehr zeit- und ressourcenintensiv werden. Eine M\u00f6glichkeit, dieses Problem zu umgehen, ist das Ausf\u00fcllen einer Konnektivit\u00e4tsmatrix. Die<strong> Konnektivit\u00e4tsmatrix<\/strong> ist eine hohle Matrix, die angibt, welche Beobachtungspaare benachbart sind.\n\nDie Verwendung eines Clustering-Algorithmus wie der Hierarchischen Aufsteigenden Klassifikation ist je nach den dir zur Verf\u00fcgung stehenden Daten nicht einfach. Oftmals musst du deine Daten \u00fcberarbeiten. Bei Liora bringen wir dir bei, die wichtigsten Clustering-Algorithmen zu beherrschen und sie anhand von Datens\u00e4tzen zu interpretieren.\n<h3>Schulung in CAH-Algorithmen<\/h3>\nEntdeck unsere Schulungsangebote zu besuchen, um zu lernen, wie man Clustering-Algorithmen beherrscht, aber auch in vielen anderen Bereichen des Machine Learning.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Datascience Schulung beginnen<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Clustering ist eine spezielle Disziplin des Machine Learning, deren Ziel es ist, Ihre Daten in homogene Gruppen mit gemeinsamen Merkmalen aufzuteilen. Dies ist z. B. ein beliebter Bereich im Marketing, wo oft versucht wird, Kundenst\u00e4mme zu segmentieren, um bestimmte Verhaltensweisen zu erkennen.<\/p>\n","protected":false},"author":47,"featured_media":169477,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-168669","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\/168669","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=168669"}],"version-history":[{"count":3,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/168669\/revisions"}],"predecessor-version":[{"id":216346,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/168669\/revisions\/216346"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/169477"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=168669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=168669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}