ניתוח אשכולות
האם הנבדקים מתחלקים לקבוצות – טיפוסים, פרופילים, פלחים – שלא הוגדרו מראש? ניתוח אשכולות (Cluster Analysis) מקבץ נבדקים לפי הדמיון ביניהם על כמה משתנים בבת אחת. העמוד מריץ את השיטה הדו-שלבית: אשכול היררכי בשיטת וורד, ואז k-ממוצעים שמתחילים ממרכזי האשכולות של וורד. הפלט: לוח לבחירת מספר האשכולות (מרפק, צללית וסטטיסטי הפער), דנדרוגרמה, גודל ואיכות כל אשכול, פרופיל האשכולות ביחידות המקור ובציוני תקן, פסקת ממצאים בעברית ובאנגלית, וקובץ הנתונים עם עמודת האשכול.
טעינת הנתונים
מדביקים עמודות ישירות מהגיליון (כולל שורת הכותרות) – מסמנים באקסל, מעתיקים, ומדביקים כאן:
בחירת המשתנים והגדרות
מתי משתמשים?
כשהשאלה היא על אנשים ולא על משתנים: האם יש בין המשיבים טיפוסים נבדלים – צרכנים פסיביים לעומת יוצרי תוכן, סטודנטים שזקוקים לתמיכה לעומת כאלה שלא – בלי שקבוצות כאלה הוגדרו מראש. Wendler ו-Gröttrup (2021, עמ' 623) מגדירים ניתוח אשכולות כאוסף של שיטות רב-משתניות ש"משמשות לזיהוי קבוצות של אובייקטים 'דומים'", ומונים בין הדוגמאות פילוח לקוחות בשיווק וזיהוי "תת-קבוצות של סטודנטים עם צרכים מיוחדים" לפי רקע וביצועים (עמ' 624). ההבחנה החשובה ביותר, באיור 7.1 שלהם: ניתוח אשכולות מקבץ את השורות (הנבדקים), וניתוח גורמים מקבץ את העמודות (הפריטים). אם השאלה היא אילו פריטים מודדים אותו דבר – ניתוח גורמים מאשש ועמוד למידה בלתי-מונחית (PCA) ומחשבון ניתוח גורמים מגשש; אם הקבוצות ידועות מראש ושואלים אם הן נבדלות – ניתוח שונות. אין כאן משתנה מנובא ואין "תשובה נכונה": זו למידה בלתי-מונחית, ו"מכיוון שהשייכות לקבוצה אינה ידועה מראש, האלגוריתם אינו יכול ללמוד את מאפייני הקבוצות" (Wendler & Gröttrup, 2021, p. 627).
עמוד למידה בלתי-מונחית סוקר את כל שיטות האשכול (k-ממוצעים, היררכי, תערובות גאוסיות, DBSCAN, TwoStep) ואת השאלה אם יש בכלל אשכולות. העמוד הזה מריץ את הנפוצה שבהן בשאלונים: וורד ואחריו k-ממוצעים, על משתנים כמותיים. משתנים קטגוריאליים (למשל מין, תחום לימודים) אינם נכנסים לחישוב המרחק כאן; הם משמשים אחר כך לתיקוף ולתיאור האשכולות.
ההיגיון: שני שלבים
שלב א – אשכול היררכי מצרף. מתחילים מכל נבדק כאשכול נפרד, ובכל צעד מאחדים את שני האשכולות הקרובים ביותר, עד שכולם באשכול אחד (Hastie et al., 2009, p. 520; Everitt et al., 2011, p. 73). כל שלב הוא חלוקה, והעץ כולו הוא דנדרוגרמה: "גובה כל צומת פרופורציונלי לאי-הדמיון בין שני הבנים שלו", וחיתוך אופקי של העץ נותן חלוקה לאשכולות (Hastie et al., 2009, p. 521). מה זה "הקרובים ביותר" כשמדובר בקבוצות? זה הקישור (Everitt et al., 2011, pp. 76-77, Figure 4.3): יחיד (הזוג הקרוב), שלם (הזוג הרחוק), ממוצע (כל הזוגות) – ווורד, שבו שבו מאחדים את שני האשכולות שבאיחודם "הגידול בסכום הריבועים בתוך האשכולות… על פני כל המשתנים" הוא הקטן ביותר (Ward, 1963, כמצוטט אצל Everitt et al., 2011, עמ' 78, לוח 4.1; וכך גם Wendler & Gröttrup, 2021, עמ' 648, לוח 7.24). וורד הוא הקישור שמתאים למטרה של k-ממוצעים: שניהם ממזערים את אותו דבר – סכום ריבועי המרחקים מהמרכזים בתוך האשכולות. הקישור היחיד נוטה ל"שרשור" של נבדקים לאשכולות ארוכים, והשלם – לאשכולות קומפקטיים שחבריהם קרובים לפעמים יותר לאשכול אחר (Hastie et al., 2009, pp. 524-525).
שלב ב – k-ממוצעים. לאשכול ההיררכי יש חיסרון מובנה: "ההקצאה של אובייקט לאשכול מסוים לעולם אינה יכולה להשתנות" (Wendler & Gröttrup, 2021, p. 628, Table 7.1) – נבדק שאוחד מוקדם עם שכן נשאר שם גם אם בסוף הוא קרוב יותר למרכז של אשכול אחר. k-ממוצעים מתקן זאת: בהינתן מרכזים, מקצים כל נבדק למרכז הקרוב; בהינתן הקצאה, מחשבים כל מרכז כממוצע; וחוזרים עד שאף הקצאה אינה משתנה (Hastie et al., 2009, עמ' 510, אלגוריתם 14.1). כל צעד מקטין את סכום ריבועי המרחקים, ולכן ההתכנסות מובטחת – "אולם התוצאה עשויה להיות מינימום מקומי לא-מיטבי", והיא תלויה בנקודת ההתחלה (שם). כאן שני השלבים נפגשים: Géron (2022, Chapter 9, "Centroid initialization methods") – "אם במקרה אתם יודעים בערך היכן צריכים להיות המרכזים (למשל, אם הרצתם קודם אלגוריתם אשכול אחר), אפשר לקבוע אותם" כנקודת ההתחלה. וכך גם Everitt ועמיתיו (2011, עמ' 122): החלוקה ההתחלתית "עשויה להיות תוצאה של הפעלה קודמת של שיטת אשכול אחרת, אולי אחת השיטות ההיררכיות". ל-Kassambara (2017, עמ' 163) יש לשיטה שם – "hierarchical k-means", שיטה היברידית "לשיפור תוצאות k-ממוצעים", שנולדה מכך ש"הפתרון הסופי של k-ממוצעים רגיש מאוד לבחירה האקראית ההתחלתית של מרכזי האשכולות", ושלושת צעדיה הם בדיוק אלה: אשכול היררכי וחיתוך העץ ל-k אשכולות, מרכז הכובד של כל אחד, ו-k-ממוצעים מהמרכזים האלה – כש"k-ממוצעים ישפר את החלוקה ההתחלתית", ולכן היא "יכולה להיות שונה במעט" מהסופית. העמוד עושה בדיוק זאת: חותך את עץ וורד ל-k אשכולות, מחשב את מרכז הכובד של כל אחד, ומריץ מהם k-ממוצעים. התוצאה דטרמיניסטית – אותם נתונים, אותה תוצאה, בכל הרצה – ואין בה האתחול האקראי ש-Wendler ו-Gröttrup (2021, עמ' 677) מזהירים ממנו ב-K-Means של Modeler, שמתחיל מהרשומה הראשונה ולכן "התוצאה תלויה במידה מסוימת בסדר האובייקטים". מנגד, נקודת התחלה אחת היא גם מגבלה: "התוצאות של שיטת אופטימיזציה יכולות להיות מושפעות באופן קיצוני מבחירת החלוקה ההתחלתית", ו"כדאי להריץ אלגוריתם אופטימיזציה כמה פעמים עם חלוקות התחלתיות שונות"; ואם חלוקות התחלתיות שונות נותנות קיבוצים שונים מאוד, זה בדרך כלל סימן שמספר האשכולות שגוי, או שאין עדות ברורה לאשכולות (Marriott, 1982, as cited in Everitt et al., 2011, p. 122). העמוד מדווח שתי בדיקות קטנות בכיוון הזה – ההשוואה בין שני השלבים ובדיקת ההעברה הבודדת (להלן); הרצה מאתחולים אקראיים רבים – ב-R, עם nstart.
Wendler ו-Gröttrup (2021, עמ' 628, לוח 7.1) מסכמים את היתרונות והחסרונות של שתי המשפחות, והשיטה הדו-שלבית לוקחת מכל אחת את מה שהיא טובה בו: מההיררכית – עץ שמראה את המבנה בכל הרמות ותוצאה "דטרמיניסטית (לא-אקראית)", ומ-k-ממוצעים – הגמישות של "הקצאה מחדש של האובייקטים לאשכולות אחרים". ההשוואה בין שני השלבים היא גם בדיקה קטנה: העמוד מדווח כמה נבדקים עברו אשכול בשלב ב ואת מדד ראנד המתוקן (ARI) בין שתי החלוקות – 1 הוא הסכמה מלאה. זו בדיקה של האלגוריתם על אותם נתונים, לא של יציבות הפתרון במדגם אחר – ועל זה בסעיף הנחות ואזהרות.
תקנון ומרחק
המרחק. שתי השיטות פועלות על המרחק האוקלידי בין נבדקים – השורש של סכום ריבועי ההפרשים בכל המשתנים, "מדד המרחק הנפוץ ביותר" (Everitt et al., 2011, p. 49, Equation 3.4) – ועל ריבועו, שהוא "רגיש יותר לחריגים" (Wendler & Gröttrup, 2021, pp. 630, 637). מכאן נגזרת השאלה החשובה בעמוד: מה נכנס למרחק, ובאיזה משקל. Hastie ועמיתיו (2009, עמ' 506) קובעים ש"ציון מדד אי-דמיון מתאים חשוב הרבה יותר להצלחה באשכול מאשר בחירת אלגוריתם האשכול".
תקנון – כן, בדרך כלל. במרחק אוקלידי, משתנה עם טווח גדול שולט: שעות ביום (0-12) "יכבו" ציון סולם (1-5), והאשכולות יהיו בעצם אשכולות של שעות. לכן, כפי שכותבים Everitt ועמיתיו (2011, עמ' 67), "לא יהיה הגיוני להתייחס, נניח, למשקל בקילוגרמים, לגובה במטרים ולחרדה בסולם של ארבע נקודות כשקולים", ו"הפתרון שמוצע לרוב… הוא פשוט לתקנן כל משתנה לשונות 1 לפני כל ניתוח"; Wendler ו-Gröttrup (2021, עמ' 656-657) – תקנון המשתנים המספריים "חשוב מאוד להליך האשכול… כדי שהערכים יהיו ברי-השוואה, יש לתקנן אותם"; ו-Géron (2022, Chapter 9, "Limits of k-means") – "חשוב לקנה-מדה את מאפייני הקלט לפני שמריצים k-ממוצעים, אחרת האשכולות עלולים להיות מתוחים מאוד". ברירת המחדל בעמוד היא ציוני z (ממוצע 0 וסטיית תקן 1 לכל משתנה), ואז לכל משתנה משקל שווה במרחק.
תקנון – לא תמיד. Hastie ועמיתיו (2009, עמ' 506) מזהירים מהכלל הזה: מתן השפעה שווה לכל המשתנים "אף שעשוי להיראות סביר, ולעיתים קרובות מומלץ, עלול להזיק מאוד". אם משתנה אחד מבחין היטב בין הקבוצות ואחר הוא רעש, התקנון מגדיל את משקל הרעש, ו"ייטה לטשטש את הקבוצות עד כדי כך שאלגוריתם אשכול לא יוכל לחשוף אותן" – באיור 14.5 שלהם שתי קבוצות מופרדות היטב נעלמות אחרי תקנון. Everitt ועמיתיו (2011, עמ' 66-67) מנסחים את אותו דבר: תקנון הוא מקרה פרטי של מתן משקלות, ו"כשמתקננים משתנים לפני הניתוח, החוקר מניח שחשיבותו של משתנה יורדת ככל שהשונות שלו עולה"; משקלות לפי סטיות התקן "נראים לא יעילים"; חלוקה בטווח המשתנה עדיפה על ציוני z ביישומים רבים (Milligan & Cooper, 1988, כמצוטטים שם); ועדיף לתקנן לפי השונות בתוך הקבוצות ולא לפי השונות הכוללת – אבל הקבוצות הן בדיוק מה שמחפשים. וכשכל המשתנים כבר באותו סולם (למשל ארבעה ציוני סולם 1-5), התקנון משנה את המשקלות לפי סטיות התקן במדגם – לא תמיד מה שרוצים. העמוד מציע ציוני z או את יחידות המקור; תקנון לפי הטווח אינו בעמוד. ההכרעה תלויה במשתנים ובשאלה ("אין תחליף למחשבה זהירה בהקשר של כל בעיה", שם); בעמוד מסמנים או מבטלים את "תקנון המשתנים", והפלט מציין מה נבחר. כשהתקנון כבוי וטווחי המשתנים שונים מאוד – העמוד מזהיר.
סולם ליקרט. המרחק מניח שההפרש בין 1 ל-2 שווה להפרש בין 4 ל-5. Wendler ו-Gröttrup (2021, עמ' 635, לוח 7.8) מזכירים שבסולם ליקרט "יש לפרש את המרחקים בזהירות, או בכלל לא", ושהשאלה שנויה במחלוקת בספרות. לפי מוסכמת האתר (עמוד משתנים וסולמות מדידה), ציון סולם רב-פריטי – ממוצע של כמה פריטים – מטופל כמשתנה רווח, ופריט ליקרט בודד – לא. מכאן ההמלצה: לקבץ לפי ציוני סולמות (עמוד אלפא של קרונבך וציון סולם), לא לפי פריטים בודדים.
כמה אשכולות?
זו ההחלטה הקשה בניתוח, ואין לה מבחן מובהקות. Hastie ועמיתיו (2009, עמ' 518) מבחינים בין שני מצבים: בפילוח, "k מוגדר בדרך כלל כחלק מהבעיה" (חברה עם k אנשי מכירות); וכשהאשכול הוא תיאור של "קבוצות טבעיות", k אינו ידוע ויש לאמוד אותו מהנתונים. העמוד מריץ את הפתרון הדו-שלבי לכל k מ-1 ועד המספר המרבי שבחרתם, ומדפיס שלושה קריטריונים זה לצד זה:
המרפק. סכום ריבועי המרחקים מהמרכזים בתוך האשכולות, Wk, יורד תמיד ככל ש-k גדל – בקצה, כל נבדק אשכול לעצמו ו-W = 0 (Hastie et al., 2009, p. 519). אבל אם יש באמת k* קבוצות, הירידה תהיה חדה עד k* ומתונה אחריו, כי מעבר לו כל אשכול נוסף רק חוצה קבוצה טבעית לשתיים; מחפשים "קינק" בעקומה – "וכמו היבטים אחרים של הליכי אשכול, הגישה הזאת היוריסטית במקצת" (Hastie et al., 2009, p. 519); Everitt ועמיתיו (2011, עמ' 126) מוסיפים שהיא "עשויה להיות סובייקטיבית מאוד", ו"גדול" הוא לעיתים קרובות "פונקציה של הציפיות המוקדמות של המשתמש". בלוח היא מוצגת גם כשונות מוסברת, 1 − Wk/W1 – חלק השונות הכוללת שהחלוקה מסבירה (המקבילה של R²; Wendler & Gröttrup, 2021, עמ' 649, לוח 7.25).
הצללית. לכל נבדק: a – המרחק הממוצע לחברי האשכול שלו, b – המרחק הממוצע לחברי האשכול הקרוב הבא, והצללית s = (b − a)/max(a, b), בין 1− ל-1+. Rousseeuw (1987, עמ' 56), שהגדיר את המדד: s קרוב ל-1 – הנבדק "מקובץ היטב"; סביב 0 – "מקרה ביניים", ש"לא ברור כלל" לאיזה משני האשכולות הוא שייך; קרוב ל-1− – כמעט אפשר לקבוע שהוא "סווג לא נכון". לנבדק שהוא לבדו באשכול הצללית היא 0 – בחירה "שרירותית כמובן, אבל ערך אפס נראה הניטרלי ביותר" (שם). המדד מתאים כשהמרחקים בסולם מנה (כמו מרחק אוקלידי) וכש"מחפשים אשכולות קומפקטיים ומופרדים בבירור" (עמ' 55), וממוצע הצללית "יכול לשמש לבחירת מספר אשכולות ‘מתאים’" (עמ' 53). ממוצע הצללית על כל הנבדקים הוא מדד לטיב החלוקה, ו-k עם הממוצע הגבוה ביותר הוא מועמד; לספים שני מקורות שמסכימים בעיקר: Kaufman ו-Rousseeuw רואים "סיווג סביר" בממוצע צללית מעל 0.5 (Kaufman & Rousseeuw, 1990, כמצוטטים אצל Everitt et al., 2011, עמ' 129), ותיעוד SPSS Modeler, כפי שמביאים Wendler ו-Gröttrup (2021, עמ' 649), מדרג עד .25 חלש, בין .25 ל-.50 בינוני, מעל .50 טוב (IBM, 2015, כמצוטט אצלם). הצללית אינה מוגדרת ל-k = 1, ולכן אינה יכולה לומר "אין כאן אשכולות".
סטטיסטי הפער (gap statistic; Tibshirani et al., 2001, כמצוטטים אצל Hastie et al., 2009, עמ' 519) "משווה את העקומה log Wk לעקומה שמתקבלת מנתונים המפוזרים באופן אחיד על מלבן שמכיל את הנתונים", כלומר מנתונים שאין בהם אשכולות. הפער הוא ההפרש בין השתיים; "למעשה זו דרך אוטומטית לאתר את ה'קינק'", והוא "עובד סביר גם כשהנתונים נופלים לאשכול יחיד, ובמקרה כזה ייטה לאמוד את מספר האשכולות האופטימלי כאחד – התרחיש שבו רוב השיטות המתחרות נכשלות" (שם). הכלל (משוואה 14.39 שם): ה-k הקטן ביותר שבו הפער אינו נמוך מהפער ב-k + 1 פחות טעות התקן שלו. העמוד מייצר את הנתונים האחידים במחולל של R (זרע 2026 כברירת מחדל, 100 דגימות), כך שהתוצאה זהה לזו של clusGap בחבילת cluster עם אותו זרע (מדריך R למטה). זה הקריטריון היחיד מהשלושה שיכול לענות "אחד": Everitt ועמיתיו (2011, עמ' 129) מדגישים שהוא "מאפשר להעריך את איכות הפתרון של אשכול יחיד", כלומר לשאול אם יש בכלל עדות לאשכולות נבדלים – ולכן הוא ברירת המחדל לבחירת k בפלט.
ההמלצה הכללית היא "לא להסתמך על כלל אחד לבחירת מספר הקבוצות, אלא לסנתז את התוצאות של כמה טכניקות" (Everitt et al., 2011, p. 130) – ולכן הלוח מציג את שלושתם. כשהקריטריונים חלוקים – וזה קורה – ההחלטה עוברת לחוקר: Géron (2022, פרק 9) מראה דוגמה שבה הצללית מעדיפה במעט k=4, והוא בוחר 5 כי האשכולות בגדלים דומים; ו-Wendler ו-Gröttrup (2021, עמ' 650) מזכירים ש"שיטות האשכול אינן מספקות שום עזרה במציאת תיאור הולם לכל אשכול" – פתרון שאי-אפשר לתאר אותו במילים אינו פתרון טוב, גם אם המדדים שלו גבוהים. כלל האצבע √(n/2) (Mardia et al., 1979, כמצוטטים אצל Wendler & Gröttrup, 2021, עמ' 649) גס מדי לבחירה; הוא מופיע בתיבת הקריאה רק כנקודת ייחוס.
איך קוראים את הפלט?
לוח 1 – בחירת מספר האשכולות. לכל k: Wk, השונות המוסברת, ממוצע הצללית, הפער וטעות התקן שלו. השורה שסטטיסטי הפער בוחר מסומנת, וכך גם k עם הצללית הגבוהה ביותר. תרשים 1 מציג את שלוש העקומות זו לצד זו.
מספר האשכולות לפתרון. מתחת ללוח 1 בוחרים את k. ברירת המחדל היא בחירת סטטיסטי הפער, ואם הוא בחר 1 – ה-k עם הצללית הגבוהה ביותר, עם אזהרה. שינוי הבחירה מחשב מחדש את כל מה שבא אחריה, בלי לחזור על סטטיסטי הפער.
תרשים 2 – הדנדרוגרמה של שלב א, עם קו החיתוך ל-k הנבחר. הציר האנכי הוא גובה האיחוד (במרחקים של וורד): איחודים גבוהים, מעל שורה של איחודים נמוכים, הם מועמדים לאשכולות טבעיים (Hastie et al., 2009, p. 521). SPSS מציג את אותו עץ על סולם מכויל של 0-25 ("Rescaled Distance Cluster Combine"; Wendler & Gröttrup, 2021, p. 645) – הצורה זהה. במדגם של יותר מ-120 נבדקים העלים אינם מצוירים אחד-אחד: העץ מוצג מעל 40 הקבוצות שבתחתיתו, עם מספר הנבדקים בכל קבוצה.
לוח 2 – גודל האשכולות ואיכותם: מספר הנבדקים ואחוזם, ממוצע הצללית בכל אשכול ומספר הנבדקים עם צללית שלילית (שקרובים יותר לאשכול אחר), והגודל באשכול של וורד לפני שלב ב. בהערה: כמה נבדקים עברו אשכול בשלב ב, ומדד ראנד המתוקן בין שני השלבים.
לוח 3 – פרופיל האשכולות: לכל משתנה – הממוצע וסטיית התקן בכל אשכול ובמדגם כולו, ביחידות המקור, ו-η² – חלק השונות של המשתנה שבין האשכולות. תרשים 3 מציג את אותם ממוצעים בציוני תקן, כך שרואים במבט אחד במה כל אשכול גבוה או נמוך מהממוצע. מכאן נגזר השם שתיתנו לכל אשכול, וזו פרשנות שלכם, לא תוצאה של החישוב (Wendler & Gröttrup, 2021, p. 650).
תרשים 4 – הצללית: עמודה לכל נבדק, ממוינת בתוך כל אשכול – "צורת סכין" לכל אשכול. גובה הצורה הוא מספר הנבדקים באשכול ורוחבה הוא הצלליות שלהם; אשכול שרוב חבריו מתחת לממוצע הכללי (הקו המקווקו) הוא אשכול חלש (Géron, 2022, Chapter 9). פסקת הממצאים – בעברית ובאנגלית; תיבת "קריאת התוצאה" – הקריטריונים מסכימים?, איכות האשכולות, מה זז בין השלבים, ומה עושים עכשיו. הורדת הנתונים עם עמודת האשכול – אותו קובץ עם עמודה נוספת, לתיאור ולתיקוף בעמודים האחרים.
יציבות בדגימה חוזרת – בלחיצה. מתחת לתרשים הצללית יש כפתור "חישוב היציבות" (100 זוגות ומדגמים כברירת מחדל, באותו זרע כמו סטטיסטי הפער). לוח 4 נותן לכל k את התפלגות מדד ראנד המתוקן בין הפתרונות של שני מדגמי bootstrap – מינימום, רבעונים, חציון ומקסימום – ותרשים 5 מציג אותה בתרשים קופסה, עם נקודה לכל זוג. לוח 5 עובר מהחלוקה כולה לפתרון הנבחר: לכל אשכול – ממוצע דמיון ז'קאר לאשכול הדומה לו במדגמי ה-bootstrap, כמה פעמים "התפרק" וכמה פעמים "שוחזר", ופרשנות לפי Hennig (2023). שינוי k מחשב מחדש רק את לוח 5. כשהיציבות חושבה, היא נכנסת גם לפסקת הממצאים ולתיבת הקריאה. השיטות – בסעיף הבא.
הנחות ואזהרות
האלגוריתם תמיד מחזיר אשכולות. "שיטות אשכול כאלה תמיד מגיעות עם k קבוצות, יהיו הנתונים אשר יהיו" (Rousseeuw, 1987, p. 55): k-ממוצעים יחזיר שלושה אשכולות גם מנתונים אחידים לגמרי, בלי שום מבנה; ו"שיטות היררכיות כופות מבנה היררכי בין אם מבנה כזה קיים בפועל בנתונים ובין אם לאו" (Hastie et al., 2009, p. 522). לכן סטטיסטי הפער הוא ברירת המחדל לבחירת k, ולכן תיבת הקריאה מזהירה כשהצללית חלשה.
יציבות: האם הפתרון יחזור במדגם אחר? Leisch (2016, עמ' 637), בפרק על בדיקת יציבות בספר-היד של Hennig ועמיתיו, מבחין בין שני מקורות של אקראיות בכל חלוקה: המדגם – תת-קבוצה אקראית מהאוכלוסייה – והאלגוריתם, ש"ידוע שהוא כופה מבנה על נתונים גם כשהם אינם מובנים היטב" (Dolnicar & Leisch, 2010, כמצוטטים שם); ולכן "שימוש בחלוקה יחידה, שנובעת מחישוב יחיד של אלגוריתם מסוים, מעמיד את החוקרים בסכנה של שימוש בפתרון אקראי, ולא בפתרון מהימן". השיטה הדו-שלבית מבטלת את האקראיות של האלגוריתם (אין אתחול אקראי), אבל לא את זו של המדגם. היציבות חשובה במיוחד כשמחליטים על סמך החלוקה – בפילוח שווקים היא אחד משישה קריטריונים להערכת פלחים (Wedel & Kamakura, 1998, כמצוטטים שם, עמ' 639) – ואינה זהה לקיומם של אשכולות מופרדים: באיור 28.1 ארבעה אשכולות של k-ממוצעים על נתונים אחידים בריבוע יציבים מאוד, ועל עיגול – לא יציבים כלל (עמ' 638). הדרך לבדוק היא דגימה חוזרת: מגרילים מהנתונים מדגמי bootstrap, מקבצים כל אחד, ומשווים את החלוקות (עמ' 639-640); הפרק מציג שלוש שיטות – עוצמת ניבוי (Tibshirani & Walther, 2005), יציבות לכל אשכול במדד ז'קאר (Hennig, 2007), ו-ARI בין זוגות מדגמי bootstrap (Dolnicar & Leisch, 2010; כולם כמצוטטים שם, עמ' 641-643) – ומסכם ש"הדגימה החוזרת עושה הבדל גדול, בעוד שהשיטה המדויקת אינה חשובה כל כך" (עמ' 650). אפשר גם לבחור k לפי היציבות, אבל בזהירות: "לעיתים קרובות אי-אפשר לשלול שגם לחלוקה אחרת מהאמיתית יש יציבות גבוהה" (עמ' 639). העמוד מריץ, בלחיצה, את השיטה השלישית ואת השנייה.
יציבות החלוקה כולה (לוח 4 ותרשים 5). בשיטה של Dolnicar ו-Leisch (2010, כמצוטטים אצל Leisch, 2016, סעיף 28.2.3) מגרילים שני מדגמי bootstrap בגודל המדגם, מקבצים כל אחד, משייכים את כל הנבדקים המקוריים למרכז הקרוב בכל אחד מהשניים, ומשווים את שני השיוכים במדד ראנד המתוקן; חוזרים על זה הרבה פעמים, וכל זוג נותן ערך עצמאי. השיטה "באמצע" בין שתי האחרות: היא מודדת את החלוקה כולה, אבל מאפשרת לאשכולות מסוימים, אולי קטנים, להיות לא יציבים (עמ' 642). מסתכלים על ההתפלגות, בתרשים קופסה, ו"ערכים קרובים לאחד מסמנים יציבות גבוהה" (עמ' 643). בדוגמה המלאכותית של Leisch, במספר האשכולות הנכון כל המדדים שווים 1, ובמספר שגוי ההתפלגות זזה שמאלה, ולפעמים היא דו-שיאית (עמ' 645). בעמוד, אותם זוגות משמשים את כל ערכי k, כך שההשוואה בין ערכי k היא על אותם מדגמים.
יציבות כל אשכול (לוח 5). בשיטה של Hennig (2007, as cited in Leisch, 2016, Section 28.2.2) בודקים את החלוקה הנבחרת, לא את k באופן כללי (עמ' 646): בכל מדגם bootstrap לוקחים את הנבדקים שנדגמו, כל אחד פעם אחת, מקבצים אותם, ולכל אשכול מקורי מחפשים את האשכול הדומה לו ביותר במדגם לפי דמיון ז'קאר – מספר הנבדקים המשותפים חלקי מספר הנבדקים בשניהם יחד. ממוצע הדמיון על פני המדגמים הוא מדד היציבות של האשכול. Hennig (2023), בתיעוד של הפונקציה clusterboot שכתב בחבילת fpc, נותן כללי אצבע: אשכול תקף ויציב צריך ממוצע של .75 ומעלה; בין .60 ל-.75 האשכול מצביע על דפוס בנתונים, אבל אילו נבדקים שייכים אליו – מפוקפק מאוד; מתחת ל-.60 – לא לסמוך עליו; ו"יציב מאוד" – .85 ומעלה. ערך של .50 ומטה במדגם בודד נחשב "התפרקות" של האשכול, ולזה יש הצדקה תאורטית (Hennig, 2008, as cited in García-Escudero et al., 2016, p. 668). ובאותו תיעוד: יציבות אינה הקריטריון היחיד לתקפות, וגם שיטה נוקשה מאוד יכולה לתת אשכולות יציבים שאינם תקפים.
בקובץ הדוגמה (100 זוגות, זרע 2026) לוח 4 מראה בדיוק את מה שהפרק מתאר. ל-k = 3 חציון ה-ARI .95 ורבעון תחתון .94 – יציב. ל-k = 2 החציון .87, אבל הרבעון התחתון .33 – ההתפלגות דו-שיאית, כלומר שתי חלוקות שונות לשני אשכולות מתחרות זו בזו. Leisch מתאר התפלגות כזאת כסימן ל"כמה מקסימומים מקומיים": אופטימום מקומי בנתונים המקוריים יכול להיות האופטימום הגלובלי במדגם bootstrap (עמ' 643). מ-k = 4 החציון יורד: .76, .62, ועד .50 ב-k = 8. בלוח 5, לשלושת האשכולות ממוצע ז'קאר .98, .98 ו-.96 – יציבים מאוד, ואף אחד מהם לא התפרק באף מדגם. ועוד אזהרה מהפרק: אפשר לבחור k לפי יציבות, אבל בזהירות – "לעיתים קרובות אי-אפשר לשלול שגם לחלוקה אחרת מהאמיתית יש יציבות גבוהה" (עמ' 639). בסקר תיירות שבפרק, החלוקה ל-5 הייתה היציבה ביותר, אבל לפלחים שלה לא היה פרופיל ברור, ולכן לא נבחרה (עמ' 648); ובחלוקה ל-9 חלק מהאשכולות היו יציבים יותר מאחרים, והיציבים שבהם היו המעניינים (עמ' 649).
צורת האשכולות. k-ממוצעים ווורד מעדיפים אשכולות "כדוריים" בגודל דומה: "k-ממוצעים אינו מתפקד היטב כשלאשכולות גדלים שונים, צפיפויות שונות או צורות לא-כדוריות" (Géron, 2022, Chapter 9, "Limits of k-means"); וורד "נוטה למצוא אשכולות כדוריים בגודל דומה" ו"רגיש לחריגים" (Everitt et al., 2011, p. 78, Table 4.1), "נראה לעיתים קרובות עובד היטב, אבל עלול לכפות מבנה כדורי במקום שאין כזה" (עמ' 84), ובמחקרי סימולציה הצליח כשהאשכולות בגודל דומה ונכשל כשהם בגדלים שונים (עמ' 83); בוורד "גודלי האשכולות דומים בקירוב" (Wendler & Gröttrup, 2021, p. 648), ו-k-ממוצעים "נוטה לייצר אשכולות בגודל דומה" (עמ' 677). קבוצה קטנה ונבדלת באמת עלולה להיבלע; לאשכולות אליפטיים – תערובת גאוסית (עמוד למידה בלתי-מונחית, סעיף 4).
חריגים. נבדק קיצוני אחד מושך מרכז אליו (ממוצע) ומגדיל את סכום הריבועים; בקישור היחיד חריגים נשארים נבדקים בודדים, ובשלם הם נבלעים באשכולות (Wendler & Gröttrup, 2021, p. 648, Table 7.24). אשכול של נבדק אחד או שניים בפתרון הוא כמעט תמיד חריג, לא טיפוס – בודקים בעמוד חריגים והנחות.
מגבלות מעשיות. ערכים חסרים: מחיקה רשימתית על משתני האשכול (העמוד מודיע כמה הושמטו; לחלופות – Hastie et al., 2009, עמ' 507, ועמוד ערכים חסרים). גודל: עד 3,000 נבדקים, כי האשכול ההיררכי שומר את כל המרחקים בין זוגות הנבדקים; סטטיסטי הפער מריץ את הניתוח כולו על כל מערך ייחוס, ולכן ב-3,000 נבדקים ו-100 דגימות הוא נמשך כדקה (אפשר להוריד את מספר הדגימות). התוצאה דטרמיניסטית, אבל כשיש נבדקים זהים או מרחקים שווים בדיוק (נפוץ בפריטי ליקרט), סדר האיחודים שוויי-הגובה נקבע לפי סדר השורות, כמו ב-R. המשתנים צריכים להיות כמותיים: משתנה קטגוריאלי בקידוד מספרי (1 = גבר, 2 = אישה) נכנס כמספר והופך את המרחק לחסר משמעות – העמוד מזהיר.
מה העמוד אינו מחשב. קישורים אחרים (יחיד, שלם, ממוצע), מרחקים אחרים (מנהטן, קוסינוס), משתנים קטגוריאליים ומעורבים (TwoStep עם לוג-נראות), תערובות גאוסיות ו-BIC, DBSCAN, מבחני מובהקות בין אשכולות (ראו בטעויות הנפוצות), יציבות בשיטות דגימה אחרות (עוצמת ניבוי, תת-מדגמים, הוספת רעש), ותיקוף חיצוני אוטומטי – את עמודת האשכול מורידים ובודקים בעמודים חי-בריבוע ו-ניתוח שונות.
ואיך עושים זאת ב-SPSS?
ב-SPSS Statistics שני השלבים הם שתי פרוצדורות נפרדות תחת Analyze › Classify. הנתיבים והאפשרויות שבהמשך הם מידע כללי על התוכנה, כמו בעמוד למידה בלתי-מונחית, סעיף 7; המקורות של העמוד עוסקים ב-SPSS Modeler ולא ב-Statistics. (1) תקנון: Analyze › Descriptive Statistics › Descriptives עם Save standardized values as variables – נוצרים משתנים בשם Z…. (2) וורד: Hierarchical Cluster על משתני ה-Z; בכפתור Method – Ward's method עם Squared Euclidean distance; בכפתור Plots – Dendrogram; בכפתור Save – Single solution עם k. עמודת Coefficients בלוח Agglomeration Schedule של SPSS אינה בסולם של גובה העץ ב-R ובעמוד, אבל סדר האיחודים אמור להיות אותו סדר, פרט לאיחודים שווי-גובה. (3) k-ממוצעים: K-Means Cluster על אותם משתנים, עם מספר האשכולות, ומרכזים התחלתיים מקובץ (Read initial); את המרכזים מחשבים כממוצעי משתני ה-Z לפי אשכול וורד (Data › Aggregate). בלי מרכזים התחלתיים, SPSS בוחר אותם בעצמו מתוך הנתונים, והתוצאה עלולה להיות שונה משל העמוד.
הסינטקס שהעמוד מייצר עושה את שלושת הצעדים: DESCRIPTIVES /SAVE, CLUSTER עם /METHOD WARD /MEASURE SEUCLID ו-/SAVE CLUSTER(k), ו-QUICK CLUSTER עם /INITIAL – מרכזי וורד שהעמוד חישב, משובצים כמספרים – ועם /METHOD KMEANS(NOUPDATE), כלומר עדכון המרכזים רק בסוף כל מעבר על הנתונים, כמו באלגוריתם של העמוד. הסינטקס לא הורץ ב-SPSS. ב-PSPP, תוכנה חופשית שקוראת סינטקס של SPSS, נבדק רק החלק הראשון (התקנון), כי אין בה פקודת CLUSTER ואין בה /INITIAL. את הצללית, את סטטיסטי הפער ואת בדיקות היציבות בדגימה חוזרת SPSS Statistics אינו מחשב – בשבילם R או העמוד.
ואיך עושים זאת ב-R?
בבסיס של R: scale לתקנון, hclust(dist(z), method = "ward.D2") לוורד (ward.D2 הוא וורד על מרחקים אוקלידיים; ward.D הישן מניח שכבר העליתם אותם בריבוע), cutree לחיתוך, ו-kmeans עם centers = מרכזי וורד ו-algorithm = "Lloyd" – האלגוריתם של העמוד (ברירת המחדל של R היא Hartigan-Wong, ש"מבטיח שאין העברה בודדת של תצפית מקבוצה לקבוצה אחרת שתקטין את המטרה"; Hastie et al., 2009, עמ' 510. בקובץ הדוגמה, ל-k = 2 ו-3 שני האלגוריתמים נותנים אותו פתרון; ל-k גדול יותר Hartigan-Wong מוצא לפעמים פתרון עם Wk קטן במעט – והעמוד מדווח בתיבת הקריאה כמה נבדקים הייתה העברתם הבודדת מקטינה את Wk). אותה שיטה כפונקציה מוכנה: hkmeans בחבילת factoextra (Kassambara, 2017, pp. 163-164) – וורד (ward.D2) ואחריו kmeans, אבל בברירות המחדל של R (Hartigan-Wong, ו-iter.max = 10); בקובץ הדוגמה היא זהה לעמוד ל-k = 2 ו-3, ול-k גדול יותר נותנת Wk קטן במעט. חבילת cluster נותנת את silhouette ואת clusGap; עם d.power = 2, spaceH0 = "original" ו-set.seed שווה לזרע של העמוד – אותו פער ואותה טעות תקן כמו בלוח 1. בסוף הסקריפט – שתי בדיקות היציבות של לוחות 4-5: 100 זוגות מדגמי bootstrap עם ARI לכל k, ו-clusterboot מחבילת fpc עם הפתרון הדו-שלבי כשיטת האשכול; באותו זרע הן נותנות בדיוק את הערכים של העמוד. הסקריפט הורץ כלשונו על קובץ הדוגמה (הערכים בהערות). כלל האתר לעברית ב-R: קובץ UTF-8, כל שורת הערה מתחילה במילה עברית, ושמות משתנים באנגלית (הקובץ האנגלי).
# ניתוח אשכולות – פרופסור סטאט. קובץ זה נשמר ב-UTF-8; כל שורת הערה מתחילה במילה עברית
library(readxl) # קריאת אקסל
library(cluster) # צללית וסטטיסטי הפער
library(mclust) # מדד ראנד המתוקן (adjustedRandIndex)
library(fpc) # יציבות כל אשכול (clusterboot)
# טעינה: התבנית התקנית – שורה = נבדק, עמודה = משתנה; הגיליון "Data"
d <- read_excel("C:/Rdata/DATA_cluster_example_eng.xlsx", sheet = "Data")
v <- c("passive_use", "social_comparison", "content_creation", "social_connection", "daily_hours")
x <- as.data.frame(d[complete.cases(d[, v]), v]) # מחיקה רשימתית (148 מתוך 150)
z <- scale(x) # תקנון: ציוני z (מחלק n − 1)
# שלב א: וורד על מרחקים אוקלידיים – העץ, וגובה האיחודים האחרונים
hc <- hclust(dist(z), method = "ward.D2")
rev(tail(hc$height, 5)) # גבהים: 22.80 17.44 7.15 6.99 5.71 – קפיצה אחרי השלישי
# שלב ב: לכל k – חיתוך העץ, מרכזי הכובד כמרכזים התחלתיים, ו-k-ממוצעים (Lloyd)
two_stage <- function(z, k, hc = hclust(dist(z), "ward.D2")) {
w <- cutree(hc, k)
centers <- apply(z, 2, function(col) tapply(col, w, mean))
kmeans(z, centers = centers, iter.max = 100, algorithm = "Lloyd")
}
res <- lapply(2:8, function(k) two_stage(z, k, hc))
W <- c(sum(z^2), sapply(res, function(m) m$tot.withinss)) # W_k, כולל k = 1
sil <- sapply(res, function(m) mean(silhouette(m$cluster, dist(z))[, "sil_width"]))
round(cbind(k = 1:8, W = W, R2 = 1 - W / W[1], silhouette = c(NA, sil)), 3) # טבלה: R² .365/.575/.605; צללית .337/.371/.274 (k = 2/3/4)
# סטטיסטי הפער: אותה פונקציה, 100 דגימות ייחוס אחידות בטווח של כל משתנה; set.seed = הזרע של העמוד
set.seed(2026)
gap <- clusGap(z, FUNcluster = function(x, k) two_stage(x, k), K.max = 8, B = 100,
d.power = 2, spaceH0 = "original")
print(gap, method = "Tibs2001SEmax") # פער: k = 3; פער 0.404/0.607/0.863/0.814, SE ≈ 0.035
# הפתרון הנבחר: גדלים, ופרופיל ביחידות המקור
km <- res[[2]] # k = 3
km$size # גדלים: 59 51 38
round(aggregate(x, by = list(cluster = km$cluster), FUN = mean), 2)
summary(silhouette(km$cluster, dist(z)))$clus.avg.widths # צללית לאשכול: .370 .369 .373
d$cluster <- NA; d$cluster[complete.cases(d[, v])] <- km$cluster # עמודת האשכול לקובץ
# אותו פתרון בפונקציה מוכנה: hkmeans בחבילת factoextra (Kassambara, 2017, פרק 16) – וורד ואז k-ממוצעים, אבל ב-Hartigan-Wong
# ובלי iter.max = 100; בקובץ הדוגמה זהה ל-k = 2-3, ול-k = 4 ומעלה W קטן במעט
# factoextra::hkmeans(z, 3)$size # 59 51 38
# יציבות בדגימה חוזרת (Leisch, 2016, פרק 28) – כמו לוחות 4-5 בעמוד, באותו זרע
# (א) הפתרון כולו (Dolnicar & Leisch, 2010, כמצוטטים שם): שני מדגמי bootstrap, אשכול בכל אחד לכל k, שיוך כל הנבדקים
# המקוריים למרכז הקרוב בכל אחד מהשניים, ו-ARI בין שני השיוכים; 100 זוגות – אותם זוגות לכל k
nearest <- function(z, centers) apply(z, 1, function(r) which.min(colSums((t(centers) - r)^2)))
set.seed(2026)
stab <- t(replicate(100, {
s1 <- z[sample.int(nrow(z), replace = TRUE), ]
s2 <- z[sample.int(nrow(z), replace = TRUE), ]
sapply(2:8, function(k) adjustedRandIndex(nearest(z, two_stage(s1, k)$centers), nearest(z, two_stage(s2, k)$centers)))
}))
colnames(stab) <- paste0("k=", 2:8)
round(apply(stab, 2, quantile, c(.25, .5, .75)), 3) # לוח 4: חציון k=2 .868 (רבעון תחתון .333), k=3 .945 (.939), k=4 .760, k=5 .621 ועד .503 ב-k=8
boxplot(stab, xlab = "k", ylab = "ARI") # תרשים 5 (בלי הנקודות)
# (ב) כל אשכול (Hennig, 2007, כמצוטט שם): clusterboot מחבילת fpc, עם הפתרון הדו-שלבי כפונקציית האשכול
hkm <- function(data, k) {
cl <- two_stage(as.matrix(data), k)$cluster
list(result = cl, nc = k, clusterlist = lapply(1:k, function(i) cl == i), partition = cl, clustermethod = "Ward + k-means")
}
cb <- clusterboot(z, B = 100, bootmethod = "boot", clustermethod = hkm, k = 3, seed = 2026, count = FALSE)
round(cb$bootmean, 3) # לוח 5, ממוצע ז'קאר: .981 .975 .963
cb$bootbrd; cb$bootrecover # התפרק (≤ .50) / שוחזר (> .75), מתוך 100: 0 0 0 / 100 100 100
דיווח התוצאות
בניתוח אשכולות יש הרבה החלטות של החוקר, ולכן הדיווח צריך לאפשר לשחזר אותן: אילו משתנים נכנסו ולמה; אם תוקננו; המרחק והשיטה (וורד, ואחריו k-ממוצעים ממרכזי וורד); איך נבחר מספר האשכולות – הקריטריונים והערכים שלהם, גם כשהם חלוקים; גודל כל אשכול; לוח פרופיל עם הממוצעים וסטיות התקן; ממוצע הצללית; אם נבדקה יציבות – השיטה, מספר המדגמים והתוצאה; ואם נעשה תיקוף – במה האשכולות נבדלים במשתנים שלא השתתפו בבנייתם. APA (2020, סעיף 6.43) מבקש לדווח "די מידע כדי שהקורא יוכל לאשש את הניתוחים". שמות האשכולות ("צרכנים פסיביים") הם פרשנות, ומדווחים אותם עם הממוצעים שעליהם הם מבוססים. כללי הצורה (APA, 2020, Section 6.36): ממוצעים וסטיות תקן עם אפס לפני הנקודה, ממוצע הצללית ו-η² בלי. פסקת הממצאים שבפלט בנויה כך, בעברית ובאנגלית.
טעויות נפוצות
לשכוח לתקנן משתנים ביחידות שונות – ולקבל אשכולות של המשתנה בעל הטווח הגדול. ולתקנן בלי לחשוב – כשמשתנה רועש מקבל משקל של משתנה מבחין (Hastie et al., 2009, p. 506).
לקבץ לפי עשרות פריטי ליקרט בודדים במקום לפי ציוני סולמות – מרחק על פריטים בודדים שנוי במחלוקת (Wendler & Gröttrup, 2021, p. 635), ופריטים רבים של סולם אחד נותנים לו משקל כפול.
להכניס "כל מה שיש", כולל משתני רקע (מין, גיל) ומשתני תוצאה – ואז "לגלות" שהאשכולות נבדלים בהם. משתנה שהשתתף בבניית האשכולות אינו יכול לתקף אותם.
לבחור k לפי מה שנראה טוב בלי לדווח את הקריטריונים, או לבחור את ה-k עם הצללית הגבוהה ביותר כשהיא .20 – כלומר כשאין מבנה ברור.
מבחני F או t בין האשכולות על משתני האשכול, ודיווח ש"האשכולות נבדלים במובהק". האלגוריתם בנה את האשכולות כך שייבדלו בדיוק במשתנים האלה, ולכן המובהקות מובטחת מראש ואינה מוסיפה מידע. העמוד מדפיס η² כמדד תיאורי, בלי p.
לפרש את הדנדרוגרמה כ"מבנה הנתונים". "שיטות היררכיות שונות, וכן שינויים קטנים בנתונים, עלולים להוביל לדנדרוגרמות שונות למדי" (Hastie et al., 2009, p. 521).
להסתפק בהרצה אחת. חלוקה אחת ממדגם אחד עלולה להיות "פתרון אקראי, ולא פתרון מהימן" (Leisch, 2016, p. 637); לפני שמדווחים טיפוסים – בודקים יציבות בדגימה חוזרת (לוחות 4-5).
לראות באשכול קבוצה אמיתית – טיפוס שקיים באוכלוסייה – בלי תיקוף: אשכול הוא תיאור של המדגם הזה, עם המשתנים האלה והמרחק הזה (עמוד למידה בלתי-מונחית, סעיף 6).
מקורות
American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). https://doi.org/10.1037/0000165-000
Everitt, B. S., Landau, S., Leese, M., & Stahl, D. (2011). Cluster analysis (5th ed.). Wiley. https://doi.org/10.1002/9780470977811
García-Escudero, L. A., Gordaliza, A., Matrán, C., Mayo-Iscar, A., & Hennig, C. (2016). Robustness and outliers. In C. Hennig, M. Meilă, F. Murtagh, & R. Rocci (Eds.), Handbook of cluster analysis (pp. 653-677). Chapman & Hall/CRC.
Géron, A. (2022). Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow: Concepts, tools, and techniques to build intelligent systems (3rd ed.). O'Reilly Media.
Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: Data mining, inference, and prediction (2nd ed.). Springer. https://doi.org/10.1007/978-0-387-84858-7
Hennig, C. (2023). fpc: Flexible procedures for clustering (R package version 2.2.11) [Computer software]. https://CRAN.R-project.org/package=fpc
Kassambara, A. (2017). Practical guide to cluster analysis in R: Unsupervised machine learning (Ed. 1). STHDA.
Leisch, F. (2016). Resampling methods for exploring cluster stability. In C. Hennig, M. Meilă, F. Murtagh, & R. Rocci (Eds.), Handbook of cluster analysis (pp. 637-652). Chapman & Hall/CRC.
Rousseeuw, P. J. (1987). Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53-65. https://doi.org/10.1016/0377-0427(87)90125-7
Wendler, T., & Gröttrup, S. (2021). Data mining with SPSS Modeler: Theory, exercises and solutions (2nd ed.). Springer. https://doi.org/10.1007/978-3-030-54338-9
Ward (1963), Kaufman ו-Rousseeuw (1990), Marriott (1982), Milligan ו-Cooper (1988) – כמצוטטים אצל Everitt ואחרים (2011); IBM (2015) ו-Mardia ואחרים (1979) – כמצוטטים אצל Wendler ו-Gröttrup (2021); Tibshirani ואחרים (2001) – כמצוטטים אצל Hastie ואחרים (2009) ואצל Everitt ואחרים (2011); Dolnicar ו-Leisch (2010), Wedel ו-Kamakura (1998), Tibshirani ו-Walther (2005) ו-Hennig (2007) – כמצוטטים אצל Leisch (2016); Hennig (2008) – כמצוטט אצל García-Escudero ואחרים (2016). Hennig (2023) – התיעוד של clusterboot (דף העזרה בחבילה), שנקרא במקור. לפי כלל האתר, ברשימת המקורות מופיעים רק מקורות שנקראו במקור. Géron (2022) בעותק דיגיטלי בלי מספרי עמודים – ציטוט לפי פרק וסעיף; Everitt ואחרים (2011), Hastie ואחרים (2009), Wendler ו-Gröttrup (2021), Rousseeuw (1987), Leisch (2016), García-Escudero ואחרים (2016) ו-Kassambara (2017) – לפי העמוד המודפס. החישוב בעמוד מאומת מול R 4.3.3 (hclust, cutree, kmeans) וחבילות cluster (silhouette, clusGap) ו-mclust (adjustedRandIndex), והיציבות – מול sample.int של R ו-fpc (clusterboot).