logo

אשכול היררכי בלמידת מכונה

אשכול היררכי הוא אלגוריתם נוסף של למידת מכונה ללא פיקוח, המשמש לקיבוץ מערכי הנתונים הלא מסומנים לאשכול ומכונה גם ניתוח אשכולות היררכי או HCA.

באלגוריתם זה, אנו מפתחים את ההיררכיה של אשכולות בצורה של עץ, ומבנה זה בצורת עץ ידוע בשם דנדרוגרמה .

סורק Java הבא

לפעמים התוצאות של צבירת K-means ושל קיבוץ היררכי עשויות להיראות דומות, אבל שתיהן שונות בהתאם לאופן פעולתן. מכיוון שאין דרישה לקבוע מראש את מספר האשכולות כפי שעשינו באלגוריתם K-Means.

לטכניקת האשכול ההיררכי יש שתי גישות:

    אגלומרטיבי:אגלומרטיב הוא א מלמטה למעלה גישה, שבה האלגוריתם מתחיל בלקיחת כל נקודות הנתונים כאשכולות בודדים ומיזוגן עד שנשאר אשכול אחד.מְפַלֵג:אלגוריתם חלוקתי הוא היפוכו של האלגוריתם האגלומרטיבי כפי שהוא א גישה מלמעלה למטה.

למה מקבץ היררכי?

כמו שכבר יש לנו אחרים מקבץ אלגוריתמים כגון K-Means Clustering , אז למה אנחנו צריכים אשכול היררכי? אז, כפי שראינו ב-K-means clustering שיש כמה אתגרים עם האלגוריתם הזה, שהם מספר קבוע מראש של אשכולות, והוא תמיד מנסה ליצור אשכולות באותו גודל. כדי לפתור את שני האתגרים הללו, אנו יכולים לבחור באלגוריתם האשכולות ההיררכית מכיוון שבאלגוריתם זה אין לנו צורך בידע על מספר האשכולות המוגדר מראש.

בנושא זה, נדון באלגוריתם האשכולות האגלומרטיבית ההיררכית.

אשכול היררכי אגלומרטיבי

אלגוריתם האשכולות ההיררכי האגלומרטיבי הוא דוגמה פופולרית של HCA. כדי לקבץ את מערכי הנתונים לאשכולות, הוא עוקב אחר ה גישה מלמטה למעלה . פירוש הדבר, אלגוריתם זה מחשיב כל מערך נתונים כאשכול בודד בהתחלה, ולאחר מכן מתחיל לשלב את זוג האשכולות הקרוב ביותר יחד. הוא עושה זאת עד שכל האשכולות יתמזגו לאשכול יחיד המכיל את כל מערכי הנתונים.

היררכיה זו של אשכולות מיוצגת בצורה של הדנדרוגרמה.

כיצד פועל האשכול ההיררכי האגרסיבי?

ניתן להסביר את פעולתו של אלגוריתם AHC באמצעות השלבים הבאים:

    שלב 1:צור כל נקודת נתונים כאשכול יחיד. נניח שיש N נקודות נתונים, כך שמספר האשכולות יהיה גם N.
    אשכול היררכי בלמידת מכונה שלב 2:קח שתי נקודות נתונים או אשכולות הקרובים ביותר ומזג אותם ליצירת אשכול אחד. אז, יהיו כעת אשכולות N-1.
    אשכול היררכי בלמידת מכונה שלב 3: שוב, קח את שני האשכולות הקרובים ביותר ומזג אותם יחד ליצירת אשכול אחד. יהיו אשכולות N-2.
    אשכול היררכי בלמידת מכונה שלב 4:חזור על שלב 3 עד שנשאר רק אשכול אחד. אז, נקבל את האשכולות הבאים. שקול את התמונות הבאות:
    אשכול היררכי בלמידת מכונה
    אשכול היררכי בלמידת מכונה
    אשכול היררכי בלמידת מכונה שלב-5:לאחר שכל האשכולות משולבים לאשכול אחד גדול, פתחו את הדנדרוגרמה כדי לחלק את האשכולות בהתאם לבעיה.

הערה: כדי להבין טוב יותר אשכול היררכי, מומלץ לעיין ב-k-means clustering

מדוד את המרחק בין שני אשכולות

כפי שראינו, ה המרחק הקרוב ביותר בין שני האשכולות הוא קריטי לאשכול ההיררכי. ישנן דרכים שונות לחישוב המרחק בין שני אשכולות, ודרכים אלו קובעות את הכלל לאשכולות. אמצעים אלה נקראים שיטות קישור . כמה משיטות הקישור הפופולריות ניתנות להלן:

    קישור יחיד:זהו המרחק הקצר ביותר בין הנקודות הקרובות ביותר של האשכולות. שקול את התמונה הבאה:
    אשכול היררכי בלמידת מכונה קישור שלם:זהו המרחק הרחוק ביותר בין שתי הנקודות של שני אשכולות שונים. זוהי אחת משיטות ההצמדה הפופולריות מכיוון שהיא יוצרת אשכולות הדוקים יותר מאשר הצמדה בודדת.
    אשכול היררכי בלמידת מכונה קישור ממוצע:זוהי שיטת ההצמדה שבה המרחק בין כל זוג מערכי נתונים מסופח ולאחר מכן מחולק במספר הכולל של מערכי נתונים כדי לחשב את המרחק הממוצע בין שני אשכולות. זוהי גם אחת משיטות ההצמדה הפופולריות ביותר.קישור מרכזי:זוהי שיטת ההצמדה שבה מחושב המרחק בין המרכז של האשכולות. שקול את התמונה הבאה:
    אשכול היררכי בלמידת מכונה

מהגישות הנתונות לעיל, אנו יכולים ליישם כל אחת מהן בהתאם לסוג הבעיה או הדרישה העסקית.

התעוררות של דנדרוגרמה באשכולות היררכית

הדנדרוגרמה היא מבנה דמוי עץ המשמש בעיקר לאחסון כל צעד כזיכרון שאלגוריתם HC מבצע. בתרשים הדנדרוגרמה, ציר Y מציג את המרחקים האוקלידיים בין נקודות הנתונים, וציר ה-x מציג את כל נקודות הנתונים של מערך הנתונים הנתון.

ניתן להסביר את פעולת הדנדרוגרמה באמצעות התרשים שלהלן:

אשכול היררכי בלמידת מכונה

בתרשים שלמעלה, החלק השמאלי מראה כיצד נוצרים אשכולות בצביר אגרסיבי, והחלק הימני מציג את הדנדרוגרמה המקבילה.

  • כפי שדיברנו לעיל, ראשית, נקודות הנתונים P2 ו-P3 משתלבות יחד ויוצרות מקבץ, בהתאמה נוצרת דנדרוגרמה, המחברת את P2 ו-P3 עם צורה מלבנית. הגובה נקבע על פי המרחק האוקלידי בין נקודות הנתונים.
  • בשלב הבא, P5 ו-P6 יוצרים אשכול, ונוצר הדנדרוגרמה המתאימה. זה גבוה יותר מהקודם, מכיוון שהמרחק האוקלידי בין P5 ל-P6 הוא קצת יותר גדול מה-P2 ו-P3.
  • שוב נוצרות שתי דנדרוגרמות חדשות המשלבות את P1, P2 ו-P3 בדנדרוגרם אחד, ו-P4, P5 ו-P6 בדנדרוגרם אחר.
  • לבסוף נוצרת הדנדרוגרמה הסופית המשלבת את כל נקודות הנתונים יחד.

אנו יכולים לחתוך את מבנה עץ הדנדרוגרמה בכל רמה לפי הדרישה שלנו.

יישום פייתון של אשכול היררכי אגלומרטיבי

כעת נראה את היישום המעשי של אלגוריתם האשכולות ההיררכי האגלומרטיבי באמצעות Python. כדי ליישם זאת, נשתמש באותה בעיית מערך נתונים שבה השתמשנו בנושא הקודם של K-means clustering כך שנוכל להשוות את שני המושגים בקלות.

מערך הנתונים מכיל מידע על לקוחות שביקרו בקניון לצורך קניות. אז, בעל הקניון רוצה למצוא כמה דפוסים או התנהגות מסוימת של הלקוחות שלו באמצעות מידע הנתונים.

שלבים ליישום AHC באמצעות Python:

השלבים ליישום יהיו זהים ל-k-means clustering, למעט שינויים מסוימים כמו השיטה למציאת מספר האשכולות. להלן השלבים:

    עיבוד נתונים מראש מציאת המספר האופטימלי של אשכולות באמצעות הדנדרוגרמה הכשרת מודל האשכולות ההיררכית הדמיית האשכולות

שלבי עיבוד מוקדם של נתונים:

בשלב זה, נייבא את הספריות ואת מערכי הנתונים עבור המודל שלנו.

    ייבוא ​​הספריות
 # Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 

שורות הקוד שלמעלה משמשות לייבא את הספריות לביצוע משימות ספציפיות, כגון רדום עבור הפעולות המתמטיות, matplotlib לציור הגרפים או עלילת הפיזור, ו פנדות לייבוא ​​מערך הנתונים.

    ייבוא ​​מערך הנתונים
 # Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv') 

כפי שנדון לעיל, ייבאנו את אותו מערך נתונים של Mall_Customers_data.csv, כפי שעשינו ב-k- mean clustering. שקול את הפלט שלהלן:

אשכול היררכי בלמידת מכונה
    חילוץ מטריצת התכונות

כאן נחלץ רק את מטריצת התכונות מכיוון שאין לנו מידע נוסף על המשתנה התלוי. הקוד ניתן להלן:

 x = dataset.iloc[:, [3, 4]].values 

כאן חילצנו רק 3 ו-4 עמודות מכיוון שנשתמש בתרשים דו מימדי כדי לראות את האשכולות. לכן, אנו שוקלים את ציון ההכנסה וההוצאות השנתיות כמטריצת התכונות.

שלב-2: מציאת המספר האופטימלי של אשכולות באמצעות הדנדרוגרמה

כעת נמצא את המספר האופטימלי של אשכולות באמצעות הדנדרוגרמה עבור הדגם שלנו. בשביל זה, אנחנו הולכים להשתמש מצומצם הספרייה שכן היא מספקת פונקציה שתחזיר ישירות את הדנדרוגרמה עבור הקוד שלנו. שקול את שורות הקוד הבאות:

 #Finding the optimal number of clusters using the dendrogram import scipy.cluster.hierarchy as shc dendro = shc.dendrogram(shc.linkage(x, method='ward')) mtp.title('Dendrogrma Plot') mtp.ylabel('Euclidean Distances') mtp.xlabel('Customers') mtp.show() 

בשורות הקוד לעיל, ייבאנו את ה הִיֵרַרכִיָה מודול של ספריית scipy. מודול זה מספק לנו שיטה shc.denrogram(), אשר לוקח את הַצמָדָה() כפרמטר. פונקציית הקישור משמשת להגדרת המרחק בין שני אשכולות, אז כאן העברנו את x(מטריצת התכונות), ואת השיטה ' מַחלָקָה ,' שיטת הקישור הפופולרית באשכולות היררכית.

שורות הקוד הנותרות נועדו לתאר את התוויות עבור עלילת הדנדרוגרמה.

תְפוּקָה:

על ידי ביצוע שורות הקוד לעיל, נקבל את הפלט שלהלן :

אשכול היררכי בלמידת מכונה

באמצעות דנדרוגרמה זו, אנו נקבע כעת את המספר האופטימלי של אשכולות עבור המודל שלנו. לשם כך, נמצא את מרחק אנכי מקסימלי שלא חותך שום פס אופקי. שקול את התרשים שלהלן:

אשכול היררכי בלמידת מכונה

בתרשים לעיל, הצגנו את המרחקים האנכיים שאינם חותכים את הפסים האופקיים שלהם. כפי שאנו יכולים לדמיין, ה-4ה'המרחק הוא המקסימום, אז לפי זה, מספר האשכולות יהיה 5 (הקווים האנכיים בטווח זה). אנחנו יכולים גם לקחת את ה-2נדמספר כפי שהוא שווה בערך ל-4ה'מרחק, אבל נשקול את 5 האשכולות כי אותו הדבר חישבנו באלגוריתם K-means.

אז, המספר האופטימלי של אשכולות יהיה 5 , ואנו נאמן את המודל בשלב הבא, תוך שימוש באותו.

שלב-3: הכשרת מודל האשכולות ההיררכית

מכיוון שאנו יודעים את המספר האופטימלי הנדרש של אשכולות, אנו יכולים כעת לאמן את המודל שלנו. הקוד ניתן להלן:

 #training the hierarchical model on dataset from sklearn.cluster import AgglomerativeClustering hc= AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward') y_pred= hc.fit_predict(x) 

בקוד לעיל, ייבאנו את צבירה אשכול כיתה של מודול אשכול של ספריית לימוד sikit.

לאחר מכן יצרנו את האובייקט של המחלקה הזו בשם as hc. המחלקה AgglomerativeClustering לוקחת את הפרמטרים הבאים:

    n_clusters=5: זה מגדיר את מספר האשכולות, ולקחנו כאן 5 כי זה המספר האופטימלי של אשכולות.זיקה='אוקלידית': זהו מדד המשמש לחישוב ההצמדה.linkage='ward': זה מגדיר את קריטריוני ההצמדה, כאן השתמשנו בהצמדה 'מחלקה'. שיטה זו היא שיטת ההצמדה הפופולרית בה כבר השתמשנו ליצירת הדנדרוגרמה. זה מפחית את השונות בכל אשכול.

בשורה האחרונה, יצרנו את המשתנה התלוי y_pred כדי להתאים או לאמן את המודל. הוא אכן מאמן לא רק את המודל אלא גם מחזיר את האשכולות שאליהם שייכת כל נקודת נתונים.

לאחר ביצוע שורות הקוד לעיל, אם נעבור על אפשרות סייר המשתנה ב-Sypder IDE שלנו, נוכל לבדוק את המשתנה y_pred. אנו יכולים להשוות את מערך הנתונים המקורי עם המשתנה y_pred. שקול את התמונה הבאה:

הערך של מחרוזת java
אשכול היררכי בלמידת מכונה

כפי שאנו יכולים לראות בתמונה לעיל, ה y_pred מציג את ערך האשכולות, כלומר מזהה הלקוח 1 שייך ל-5ה'אשכול (מכיוון שהאינדקס מתחיל מ-0, אז 4 פירושו 5ה'אשכול), מזהה הלקוח 2 שייך ל-4ה'אשכול וכן הלאה.

שלב 4: הדמיית האשכולות

מכיוון שאימנו את המודל שלנו בהצלחה, כעת אנו יכולים לדמיין את האשכולות התואמים למערך הנתונים.

כאן נשתמש באותן שורות קוד כמו שעשינו ב-k-means clustering, למעט שינוי אחד. כאן לא נשרטט את המרכז שעשינו ב-k-אמצעים, כי כאן השתמשנו בדנדרוגרמה כדי לקבוע את המספר האופטימלי של אשכולות. הקוד ניתן להלן:

 #visulaizing the clusters mtp.scatter(x[y_pred == 0, 0], x[y_pred == 0, 1], s = 100, c = 'blue', label = 'Cluster 1') mtp.scatter(x[y_pred == 1, 0], x[y_pred == 1, 1], s = 100, c = 'green', label = 'Cluster 2') mtp.scatter(x[y_pred== 2, 0], x[y_pred == 2, 1], s = 100, c = 'red', label = 'Cluster 3') mtp.scatter(x[y_pred == 3, 0], x[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4') mtp.scatter(x[y_pred == 4, 0], x[y_pred == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5') mtp.title('Clusters of customers') mtp.xlabel('Annual Income (k$)') mtp.ylabel('Spending Score (1-100)') mtp.legend() mtp.show() 

פלט: על ידי ביצוע שורות הקוד לעיל, נקבל את הפלט שלהלן:

אשכול היררכי בלמידת מכונה