למידה בלתי-מונחית: אשכולות, רכיבים וגורמים

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

מדריך

מה בעמוד

שני העמודים האחים – למידת מכונה לחוקר החברתי ומדדי ביצוע ואימות – עוסקים בלמידה מונחית: יש משתנה תלוי, המודל לומד לחזות אותו, ומאמתים אותו על נתונים שלא ראה. העמוד הזה עוסק במה שקורה כשאין משתנה תלוי – והחוקר החברתי עושה את זה כבר שנים בלי לקרוא לזה כך: ניתוח גורמים על פריטי שאלון, ניתוח אשכולות שמחלק נבדקים לטיפוסים, ניתוח רכיבים עיקריים שמצמצם עשרים משתנים לשלושה. בספרי למידת המכונה כל אלה נקראים למידה בלתי-מונחית (unsupervised learning; בעברית גם "למידה לא-מפוקחת"), ולעמוד שתי מטרות: לתרגם – להראות שהאשכול של Modeler הוא ה-CLUSTER של SPSS הוא ה-kmeans() של R – ולהזהיר, כי כאן נעלם הדבר היחיד שמגן על חוקר במידול חוזה: המדד. אין קבוצת בדיקה שתגיד אם שלושת הגורמים "נכונים" או אם ארבעת האשכולות קיימים. הסדר: מה הופך למידה ל"בלתי-מונחית", ולמה זה מצב לא-נוח (1); הפחתת ממדים – ניתוח רכיבים עיקריים (2); ההבחנה שהתוכנה מטשטשת – רכיבים אינם גורמים (3); אשכולות – השיטות ומה כל אחת מניחה (4); כמה אשכולות, ואם בכלל (5); מה עושים עם אשכול אחרי שמצאו אותו (6); איך הכול נקרא בתפריטים של SPSS ושל Modeler (7); ואיך עושים זאת ב-R (8). המקורות הם חמשת ספרי הלימוד של שני העמודים האחים – ז'רון (2022, פרקים 8-9), הייסטי, טיבשיראני ופרידמן (2009, פרק 14), בישופ (2006, פרקים 9 ו-12), טרואונג (2026, פרקים 12-13) וגוטיירז (2015, פרק 8) – ואליהם, מהצד הפסיכומטרי, סקירת הנוהג של ניתוח הגורמים בפסיכולוגיה (Costello & Osborne, 2005), ומאמרי המקור של שלושת הקריטריונים שהעמוד ממליץ עליהם: ניתוח מקבילי (Horn, 1965), הצללית (Rousseeuw, 1987) וסטטיסטי הפער (Tibshirani, Walther & Hastie, 2001); ומהצד של SPSS Statistics – פרקי ניתוח הגורמים בשני הספרים שהאתר מצטט בעמודי המחשבונים: פילד (2024, פרק 18) ופאלנט (2020, פרק 15); ומהצד של SPSS Modeler – התיעוד של IBM וספר הלימוד האקדמי של וונדלר וגרוטרופ (2021, פרקים 6-7). הערה על הציטוט: כמו בעמודים האחים – ז'רון, גוטיירז, פילד ופאלנט לפי פרק וסעיף (העותקים בלי עמודים), השאר לפי עמוד.

בלי תווית

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

רכיב וגורם

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

אשכול

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

כמה – ואם בכלל

מספר הרכיבים, הגורמים או האשכולות אינו יוצא מהנתונים אלא נבחר. הכללים שהתוכנה מציעה כברירת מחדל (ערך עצמי מעל 1; שלושה אשכולות) הם הגרועים שבמבחר.

1. בלי מורה: מה זה, ולמה זה מצב לא-נוח

הייסטי ועמיתיו פותחים את פרק 14 בהבחנה: למידה מונחית היא "למידה עם מורה" – ל"תלמיד" יש תשובה לכל תצפית והמורה מתקן; למידה בלתי-מונחית היא "למידה בלי מורה" – יש N תצפיות של וקטור X, ו"המטרה היא להסיק ישירות את תכונות ההתפלגות הזאת, בלי עזרתו של מפקח או מורה שמספק תשובות נכונות או מידת-שגיאה לכל תצפית" (Hastie et al., 2009, p. 486). ואז המשפט שכל שאר העמוד נובע ממנו: "בלמידה מונחית יש מדד ברור של הצלחה, או של היעדרה… בהקשר של למידה בלתי-מונחית אין מדד ישיר כזה של הצלחה. קשה לוודא את תוקף המסקנות שנגזרות מהפלט של רוב האלגוריתמים. יש להיזקק לטיעונים היוריסטיים לא רק כדי להצדיק את האלגוריתמים… אלא גם לשיפוט איכות התוצאות. המצב הלא-נוח הזה הביא לשגשוג רב של שיטות מוצעות, כי היעילות היא עניין של דעה ואי-אפשר לאמת אותה ישירות" (עמ' 487). גוטיירז אומר זאת בפשטות: "עם למידה בלתי-מונחית אין דרך לוודא את העבודה שלכם, כי אין תשובה נכונה. זו הסיבה שזה נקרא למידה בלתי-מונחית" (Gutierrez, 2015, פרק 8, פתיחה). ז'רון מצטט את יאן לקון: אם האינטליגנציה עוגה, הלמידה הבלתי-מונחית היא העוגה, המונחית – הציפוי, וחיזוק – הדובדבן; "הרוב המכריע של הנתונים הזמינים אינו מתויג" (Géron, 2022, פרק 9, פתיחה).

מה מחפשים כשאין y. הייסטי ועמיתיו ממיינים לפי מה שהשיטה מחפשת בהתפלגות X: רכיבים עיקריים, סילום רב-ממדי ודומיהם "מנסים לזהות יריעות נמוכות-ממד בתוך מרחב X שמייצגות צפיפות נתונים גבוהה", ולכן אומרים "האם המשתנים יכולים להיחשב פונקציות של קבוצה קטנה יותר של משתנים 'סמויים'"; ניתוח אשכולות "מנסה למצוא אזורים קמורים מרובים במרחב X שמכילים מודות" של ההתפלגות, ולכן אומר אם אפשר לייצג אותה "כתערובת של צפיפויות פשוטות יותר שמייצגות טיפוסים או מחלקות נבדלים של תצפיות" (עמ' 486). טרואונג מנסח את אותה חלוקה בלוח: "מושא הניתוח" של ניתוח הרכיבים הוא המשתנים, של ניתוח האשכולות – התצפיות; הראשון מוציא רכיבים שמסכמים, השני מוציא קבוצות (Truong, 2026, Table 13.1, p. 459). זו ההבחנה שהחוקר החברתי מכיר מהמטריצה שלו: לצמצם עמודות (סעיפים 2-3) או לקבץ שורות (סעיפים 4-6). ז'רון מוסיף שתי משימות אחיות – זיהוי חריגים, "ללמוד איך נראים נתונים 'נורמליים' ואז להשתמש בזה כדי לזהות מופעים חריגים", ואמידת צפיפות (פרק 9, פתיחה) – ושתיהן חוזרות בסעיף 4 כתוצר-לוואי של אותם אלגוריתמים.

2. הפחתת ממדים: ניתוח רכיבים עיקריים

הבעיה שהשיטה פותרת היא קללת הממדיות (עמוד למידת המכונה, סעיף 2): ז'רון מזכיר ששתי נקודות אקראיות בריבוע יחידה רחוקות זו מזו בממוצע 0.52, ובקובייה של מיליון ממדים – כ-408; "פשוט יש הרבה מקום בממדים גבוהים", ולכן "מערכי נתונים רבי-ממדים נמצאים בסיכון להיות דלילים מאוד" (Géron, 2022, Chapter 8, "The Curse of Dimensionality"). ניתוח רכיבים עיקריים (PCA) מקרין את הנתונים על מרחב קטן יותר. לבישופ יש שתי הגדרות "שמניבות את אותו אלגוריתם": ההטלה האורתוגונלית "כך ששונות הנתונים המוטלים ממוקסמת" (הוטלינג, 1933), או שקול לכך – ההטלה הליניארית "שממזערת את עלות ההטלה הממוצעת, המוגדרת כריבוע המרחק הממוצע בין נקודות הנתונים להטלותיהן" (פירסון, 1901) (Bishop, 2006, p. 561); בניסוח של הייסטי ועמיתיו, הרכיבים העיקריים "מספקים רצף של הקירובים הליניאריים הטובים ביותר לנתונים, מכל הדרגות" (Hastie et al., 2009, p. 534). ז'רון מסביר את זה בציור: מבין הצירים האפשריים, PCA בוחר את "הציר שמשמר את כמות השונות המרבית", ואז ציר שני, ניצב לראשון, שמשמר את מרב השונות הנותרת, וכן הלאה; "הציר ה-i נקרא הרכיב העיקרי ה-i" (Chapter 8, "Preserving the Variance", "Principal Components"). מה שמחזיקים ביד אחרי ההטלה הוא לוח שיעורי השונות המוסברת: בדוגמת ז'רון 76% על הרכיב הראשון, 15% על השני, 9% על השלישי – "ולכן סביר להניח שהרכיב השלישי כנראה נושא מעט מידע" (Chapter 8, "Explained Variance Ratio").

כמה רכיבים. תלוי למה: "אם אתם מפחיתים ממדיות לצורך הצגה חזותית, תרצו להפחית ל-2 או 3" – אחרת, ז'רון מציע לבחור את מספר הממדים "שמצטברים לחלק גדול דיו של השונות – נניח 95%", או לצייר את השונות המצטברת כפונקציה של מספר הממדים ולחפש "מרפק, שבו השונות המוסברת מפסיקה לגדול מהר"; ואם ה-PCA הוא שלב הכנה למודל מונחה, "כווננו את מספר הממדים כמו כל היפר-פרמטר אחר" – באימות צולב, לפי ביצועי המודל שאחריו (Chapter 8, "Choosing the Right Number of Dimensions"). ואזהרה שקודמת לכול: הפחתת ממדים "אכן גורמת לאובדן מידע… ולכן אני ממליץ שקודם תנסו לאמן את המערכת על הנתונים המקוריים לפני ששוקלים הפחתת ממדים" (פרק 8, פתיחה). שני פרטים טכניים שהתוכנה לא תעשה בשבילכם: תקנון – PCA על משתנים ביחידות שונות הוא PCA על המשתנה בעל השונות הגדולה ביותר; גוטיירז מדגים על נתוני הפשיעה של ארצות הברית, שבהם שונות התקיפות היא 6,945 ושונות הרציחות 19, ומורה: "עליכם, עם זאת, לציין scale=TRUE" (Gutierrez, 2015, Chapter 8, "Principal Component Analysis"); והכיוון – סימן הטעינות של רכיב שרירותי, ורכיב "שלילי" אינו ממצא. ומה שלא שייך לכאן: t-SNE, שז'רון מציין ש"משמש בעיקר להצגה חזותית, בייחוד להצגת אשכולות של מופעים במרחב רב-ממדי", ו-UMAP אחיו – כלי ציור, שהמרחקים בתמונה שלהם אינם מרחקים (Chapter 8, "Other Dimensionality Reduction Techniques"). ולוח הטעינות של הרכיב הראשון, שנראה כמו לוח של ניתוח גורמים – סעיף 3.

3. PCA אינו ניתוח גורמים – ולמה SPSS גורם לחשוב שכן

לחוקר החברתי זה הסעיף החשוב בעמוד. הייסטי ועמיתיו מראים שאפשר לקרוא את ה-PCA כמודל של משתנים סמויים – כל משתנה נצפה הוא צירוף ליניארי של p משתנים בלתי-מתואמים – "אך זה לא מספק במיוחד", כי כל סיבוב אורתוגונלי נותן פירוק אחר, "ולכן אי-אפשר לזהות משתנים סמויים מסוימים כמקורות יסוד ייחודיים". "מודל ניתוח הגורמים הקלאסי, שפותח בעיקר על ידי חוקרים בפסיכומטריקה, מקל על הבעיות האלה במידת מה": q < p גורמים סמויים, מטריצת טעינות, ו"הפרעות" ε בלתי-מתואמות – "הרעיון הוא שהמשתנים הסמויים הם מקורות שינוי משותפים בין המשתנים הנצפים, ומסבירים את מבנה המתאמים ביניהם, ואילו ההפרעות הבלתי-מתואמות ייחודיות לכל משתנה ואוספות את השינוי הנותר" (Hastie et al., 2009, pp. 558-559). זהו ההבדל כולו, ובישופ מנסח אותו במשפט אחד: ניתוח גורמים הוא PCA הסתברותי שבו רעש המדידה של כל משתנה שונה – "המודל מסביר את מבנה השונות-המשותפת הנצפה של הנתונים על ידי ייצוג השונות העצמאית הקשורה לכל קואורדינטה במטריצה Ψ ולכידת השונות-המשותפת בין המשתנים במטריצה W"; העמודות של W הן "טעינות הגורמים", והאיברים באלכסון Ψ – "הייחודיוֹת" (uniquenesses) (Bishop, 2006, pp. 583-584). ומכאן ההשלכה: "ניתוח גורמים ממדל את מבנה המתאמים של המשתנים ולא את מבנה השונות-המשותפת. זו הבחנה חשובה בין ניתוח גורמים ל-PCA" (Hastie et al., 2009, p. 560). PCA מסביר את כל השונות של הפריטים – אותם פריטים שהחוקר בודק באלפא של קרונבך – כולל שגיאת המדידה של כל פריט; ניתוח גורמים מסביר רק את מה שהפריטים חולקים. הקהילה שחיה מהשאלונים הגיעה לאותה מסקנה מהכיוון השני: "PCA אינו שיטה אמיתית של ניתוח גורמים, ויש מחלוקת בין תאורטיקנים סטטיסטיים מתי יש להשתמש בו, אם בכלל"; "ניתוח רכיבים הוא שיטת צמצום נתונים בלבד"; "ניתוח רכיבים עיקריים אינו מבחין בין שונות משותפת לשונות ייחודית" – ועם זאת "PCA הוא שיטת החילוץ שבברירת המחדל בחבילות סטטיסטיות פופולריות רבות, ובהן SPSS ו-SAS" (Costello & Osborne, 2005, p. 2). מי שלוחצת ב-SPSS על Analyze, Dimension Reduction, Factor ולא נוגעת בדבר – מקבלת רכיבים, קוראת להם גורמים ומדווחת "ניתוח גורמים". גם Modeler: הצומת נקרא PCA/Factor, ו"מגדיר מראש את שלבי ה-PCA… מה שמקל על התהליך אך גם מפחית את מידת השליטה שלנו" (Truong, 2026, p. 442). ופאלנט, שספרה הוא הדרך שבה רוב החוקרים בישראל למדו SPSS, אומרת זאת בגילוי לב: ב-PCA "כל השונות במשתנים משמשת", בניתוח גורמים "רק השונות המשותפת מנותחת"; "אף ש-PCA מניב טכנית רכיבים, מחברים רבים משתמשים במונח 'גורם' לפלט של PCA ושל FA כאחד. אל תניחו, אם אתם רואים את המונח 'גורם' כשאתם קוראים מאמרים, שהמחבר השתמש ב-FA" – והיא עצמה בוחרת להדגים PCA, ומביאה את הכלל של טבצ'ניק ופידל: "אם אתם מעוניינים בפתרון תאורטי שאינו מזוהם בשונות ייחודית ובשונות שגיאה… FA הוא הבחירה שלכם. אם, לעומת זאת, אתם פשוט רוצים סיכום אמפירי של מערך הנתונים, PCA הוא הבחירה הטובה יותר" (Tabachnick & Fidell, 2013, עמ' 640, כמצוטט אצל Pallant, 2020, פרק 15, פתיחה). זה הכלל כולו במשפט: סולם שמודד הבניה – FA; צמצום משתנים לפני רגרסיה – PCA. ופילד מסביר למה זה כך, דרך הקומונליות: כדי לחלץ גורמים צריך לדעת כמה מהשונות משותפת, ואת זה יודעים רק אחרי החילוץ; "יש שני פתרונות. הראשון הוא להניח שכל השונות משותפת, על ידי הנחה שהקומונליות של כל משתנה היא 1… ההליך הזה הוא PCA" – ולכן "PCA מניח שאין שגיאת מדידה", ו"העובדה ש-PCA מניח שאין שגיאת מדידה מרגיזה אנשים רבים שמשתמשים בניתוח גורמים" (Field, 2024, Sections 18.4.2, 18.3.2). הוא מביא את קליף: תומכי ניתוח הגורמים "מתעקשים שניתוח רכיבים הוא במקרה הטוב ניתוח גורמים משותפים עם קצת שגיאה שנוספה לו, ובמקרה הרע בליל בלתי-מזוהה של דברים שאי-אפשר לקבוע ממנו דבר" – ומודה: "יש הטוענים שכאשר משתמשים ב-PCA אין לתאר אותו כניתוח גורמים (אופס!)" (סעיף 18.4.3). ואת הצד השני: לפי הסקירה של גואדניולי ווליסר "הפתרונות של PCA נבדלים מעט מאלה של טכניקות ניתוח הגורמים" – עם 30 משתנים ומעלה וקומונליות מעל .7 "פתרונות שונים אינם סבירים", אך "עם פחות מ-20 משתנים וקומונליות נמוכות כלשהן (מתחת ל-.4) עלולים להיווצר הבדלים" (שם) – וזה בדיוק המקרה של שאלון קצר עם פריטים חלשים. שני ספרי ה-SPSS מדגימים בפועל את שתי הבחירות: פאלנט – PCA; פילד, במהדורה השישית – principal axis factoring (סעיף 18.6.1). ובספר הלימוד של Modeler אותה הבחנה, בניסוח של בקהאוס: הגורמים של ניתוח הגורמים "אפשר לפרש כ'הסיבה לשונות המשותפת', ואילו הרכיבים של PCA "אפשר לתאר כ'התיאור הכללי [לא הסיבה!] של השונות המשותפת'" – ו"PCA משמש הרבה יותר מ-PFA" (Wendler & Gröttrup, 2021, pp. 549, 552).

גם וגם. הצד השני מגיע מאותו עמוד של הייסטי ועמיתיו: כיוון שגם במודל הגורמים כל סיבוב של הטעינות נותן פתרון שקול, "נותרת סובייקטיביות מסוימת בשימוש בניתוח גורמים, כי המשתמש יכול לחפש גרסאות מסובבות של הגורמים שקל יותר לפרש. ההיבט הזה הותיר אנליסטים רבים ספקנים כלפי ניתוח גורמים, ואולי מסביר את חוסר הפופולריות שלו בסטטיסטיקה העכשווית" (עמ' 560). הפסיכומטריקה עונה שהסיבוב הוא בדיוק הכלי: הגורמים הסמויים אינם מוגדרים על ידי המתמטיקה אלא על ידי הפרשנות, והסיבוב מחפש "מבנה פשוט" שאפשר לקרוא. שתי הקריאות נכונות, והמסקנה המעשית אחת: לדווח איזה מודל (רכיבים או גורמים), איזה סיבוב, ולמה. ועל הסיבוב עצמו: אם הגורמים מתואמים – והבניות פסיכולוגיות כמעט תמיד מתואמות – סיבוב אלכסוני (oblimin, promax) "אמור תאורטית לתת פתרון מדויק יותר, ואולי גם ניתן יותר לשחזור"; ו"אם הגורמים באמת אינם מתואמים, סיבוב אורתוגונלי ואלכסוני נותנים תוצאות כמעט זהות" (Costello & Osborne, 2005, p. 4) – כלומר אין מה להפסיד מאלכסוני; ופאלנט: "אני תמיד ממליצה להתחיל בסיבוב אלכסוני כדי לבדוק את מידת המתאם בין הגורמים" (Pallant, 2020, Chapter 15, "Step 3: Rotate and interpret the factors"). Varimax כברירת מחדל הוא הנחה, לא בחירה. ולפני הכול – האם יש בכלל מה לחלץ: פאלנט דורשת מתאמים של .3 ומעלה במטריצה, מדד KMO של .6 לפחות ומבחן בארטלט מובהק (ibid., "Step 1") – שלושתם בפלט של SPSS, ושלושתם בודקים רק שיש מבנה משותף, לא איזה.

כמה גורמים – הכלל שבברירת המחדל הוא הגרוע ביותר. SPSS ו-Modeler משאירים כל גורם שערכו העצמי גדול מ-1 (קייזר). "יש הסכמה רחבה בספרות שזו מהשיטות הכי פחות מדויקות לבחירת מספר הגורמים"; בסימולציות של קוסטלו ואוסבורן "36% מהמדגמים שלנו השאירו יותר מדי גורמים לפי הקריטריון הזה" (עמ' 2-3). טרואונג חווה זאת בזמן אמת: Modeler חילץ לו חמישה רכיבים "על סמך התנאי שהערכים העצמיים גדולים מ-1", והוא שואל "האם זו ההחלטה הטובה ביותר?", מגלה ש"SPSS Modeler אינו מספק תרשים scree בפלט של צומת PCA/Factor", מצייר אחד באקסל – ומודה ש"זיהוי המרפק המדויק בתרשים הזה מאתגר במקצת" (Truong, 2026, pp. 445-446). זהו הליקוי של תרשים ה-scree: הוא שיפוט בעין. הכלל שהעמוד הזה ממליץ עליו הוא ניתוח מקבילי (parallel analysis; Horn, 1965): מדמים נתונים אקראיים באותו גודל – אותו N, אותו מספר פריטים – מחשבים את הערכים העצמיים שלהם, ומשאירים רק גורמים שערכם העצמי גדול ממה שהרעש נותן. זה בדיוק ההיגיון של קבוצת הבדיקה מהעמודים האחים, מיושם על השאלה היחידה שאפשר: לא "האם הגורם נכון" אלא "האם הוא יותר מרעש". פאלנט מסכמת את הספרות: הניתוח המקבילי "הוכח כמדויק ביותר, כשגם הקריטריון של קייזר וגם מבחן ה-scree של קטל נוטים להעריך ביתר את מספר הרכיבים", ו"אם בכוונתכם לפרסם… בפסיכולוגיה או בחינוך, תצטרכו להשתמש בתוצאות הניתוח המקבילי ולדווח אותן" (Pallant, 2020, Chapter 15, "Parallel analysis"). ב-Modeler המצב גרוע יותר: וונדלר וגרוטרופ מונים את מדדי ההתאמה של המטריצה – בארטלט, המטריצה ההפוכה, האנטי-אימאז', KMO – ומסכמים: "למרבה הצער, ה-SPSS Modeler אינו מציע את המדד הזה ואף לא אחד מהסטטיסטים או המדדים האחרים שתוארו לעיל"; כלל קייזר, לעומת זאת, "מיושם ומופעל ב-SPSS Modeler", ותרשים scree – "ה-SPSS Modeler, למרבה הצער, לא" (Wendler & Gröttrup, 2021, pp. 551-552). הדוגמה שלה היא הראיה: 20 פריטי ה-PANAS על 435 משיבים – קייזר משאיר ארבעה רכיבים (ערכים עצמיים 6.25, 3.40, 1.22, 1.16), ה-scree מראה שבירה אחרי השני, והניתוח המקבילי, עם ערכי קריטריון של 1.40, 1.33, 1.27 ו-1.22 מ-100 מערכי נתונים אקראיים, משאיר שניים – בדיוק שני הגורמים שהסולם נבנה עליהם (שם, "Interpretation of Output from Factor Analysis: Part 1", צעדים 2-4). ברירת המחדל של SPSS טעתה בשניים. פילד מוסיף מתי קייזר בכל זאת מדויק: "כשמספר המשתנים קטן מ-30 והקומונליות שהתקבלו (אחרי החילוץ) כולן גדולות מ-.7; הוא יכול להיות מדויק גם כשגודל המדגם עולה על 250 והקומונליות הממוצעת היא .6 ומעלה" (Field, 2024, Section 18.4.5) – ומסכם את הסימולציה של אאורסוולד ומושאגן (2019): "אם הגורמים שלכם מתואמים מאוד, כל השיטות יהיו גרועות"; "עם שמונה פריטים ומעלה ומדגם של 200+, ניתוח מקבילי… יעשה עבודה די הגונה"; והפעם היחידה שקייזר עדיף היא "כשיש לכם מספר קטן של פריטים (למשל ארבעה) וגורמים מתואמים, וגם אז רק במדגמים גדולים ובשיטת PCA" (שם). ב-R הניתוח המקבילי הוא שורה אחת (fa.parallel, Section 8); בתפריטי SPSS אין אותו, ושני הספרים עוקפים זאת בדרכים שונות – פאלנט מפנה לתוכנית קטנה נפרדת, Monte Carlo PCA for Parallel Analysis של ווטקינס, מאתר הספר, שמדפיסה את הערכים העצמיים האקראיים ומשווים ביד (שם, צעד 4); פילד מריץ את psych של R מתוך סינטקס SPSS (BEGIN PROGRAM R, קובץ מוכן באתר הספר; Field, 2024, SPSS Tip 18.1) – שזו, למעשה, שורת ה-R של סעיף 8. ולבסוף, N: ניתוח גורמים "הוא הליך של 'מדגם גדול'"; בסימולציה של קוסטלו ואוסבורן, ביחס של שני נבדקים לפריט רק 10% מהמדגמים שחזרו את המבנה האמיתי, ביחס של 20:1 – 70% (עמ' 4-7). פאלנט, בעקבות טבצ'ניק ופידל, מסתפקת ב-150 נבדקים וביחס 5:1, ומביאה גם את 10:1 של נאנלי (1978) (Pallant, 2020, Chapter 15, "Step 1"). ופילד מערער על היחס עצמו: על 10-15 לפריט "שמעתי את הכלל הזה מוזכר בהזדמנויות רבות, אך בסיסו האמפירי אינו ברור"; "מה שחשוב הוא גודל המדגם הכולל, טעינות הגורמים והקומונליות" – קומרי ולי מדרגים 100 כמדגם גרוע, 300 כטוב ו-1,000 כמצוין; גורם עם ארבע טעינות ומעלה מעל .6 "מהימן ללא קשר לגודל המדגם"; וכשהקומונליות נמוכות (הרבה מתחת ל-.5) והגורמים רבים, מעל 500; "מה שברור מהעבודה הזאת הוא שמדגם של 300 או יותר יספק כנראה פתרון גורמים יציב" (Field, 2024, Section 18.5.3). הקריאה המשולבת: היחסים הם כללי אצבע, המספר שחוזר בכל המקורות הוא 300 – ומה שמאפשר לרדת ממנו הוא פריטים חזקים, לא נבדקים מעטים. שאלון של 30 פריטים על 90 נבדקים ייתן גורמים; הם לא יחזרו במדגם הבא.

4. אשכולות: השיטות ומה כל אחת מניחה

"ניתוח אשכולות, שנקרא גם פילוח נתונים… כולו נוגע לקיבוץ או לפילוח של אוסף אובייקטים לתת-קבוצות או 'אשכולות', כך שאלה שבתוך כל אשכול קשורים זה לזה יותר מאשר אובייקטים שהוקצו לאשכולות שונים" (Hastie et al., 2009, p. 501). ז'רון: "זו משימת הזיהוי של מופעים דומים והקצאתם לאשכולות"; "בדיוק כמו בסיווג, כל מופע מוקצה לקבוצה. אך שלא כמו בסיווג, קיבוץ לאשכולות הוא משימה בלתי-מונחית" (Géron, 2022, Chapter 9, "Clustering Algorithms"). והמילה שהכול תלוי בה היא "דומים": גוטיירז מונה ארבע שאלות – איך מגדירים "קרוב", איך מקבצים, איך מציגים, ו"איך מפרשים את הקיבוצים… שאולי קשה להאמין להם או שנוצרו סתם בגלל רעש" – ופוסק ש"הגדרת הקרבה היא הצעד החשוב ביותר באלגוריתם קיבוץ" (Gutierrez, 2015, Chapter 8, "Clustering"). המרחק – אוקלידי, מנהטן, קוסינוס לטקסטים, ז'קאר לרשימות – הוא החלטה של החוקר, לא של האלגוריתם, וטרואונג מקדיש לו את הצעד השלישי מבין שמונת צעדי הניתוח שלו (Truong, 2026, p. 462). ולפניו, כמו ב-PCA, תקנון: "חשוב לתקנן את מאפייני הקלט… לפני שמריצים k-ממוצעים, אחרת האשכולות עלולים להיות מתוחים מאוד ו-k-ממוצעים יתפקד גרוע" (Géron, 2022, Chapter 9, "Limits of k-means").

k-ממוצעים (k-means) הוא נקודת המוצא, וז'רון מסביר את הרעיון בשתי סימטריות: אילו ידענו את מרכזי האשכולות, היינו מקצים כל תצפית לקרוב אליה; אילו ידענו את ההקצאות, היינו מחשבים כל מרכז כממוצע; אין לנו לא זה ולא זה – "מתחילים במיקום אקראי של המרכזים… ואז מתייגים את המופעים, מעדכנים את המרכזים, מתייגים, מעדכנים, וכן הלאה עד שהמרכזים מפסיקים לזוז" (Chapter 9, "The k-means algorithm"). בישופ מראה ששני הצעדים האלה הם צעדי E ו-M של אלגוריתם EM (Bishop, 2006, pp. 424-425). שתי מלכודות: האלגוריתם "מובטח שיתכנס, אך לא בהכרח לפתרון הנכון" – תלוי באתחול, ולכן מריצים כמה פעמים משתי התחלות שונות ושומרים את הפתרון עם האינרציה הנמוכה ביותר, סכום ריבועי המרחקים מהמרכזים (ז'רון, פרק 9, "Centroid initialization methods"; ב-R – nstart, גוטיירז, פרק 8, "K-Means Clustering"; ואתחול k-means++ מפזר את המרכזים מראש); ו"k-ממוצעים אינו מתפקד היטב כשלאשכולות גדלים שונים, צפיפויות שונות או צורות לא-כדוריות" – בדוגמה של ז'רון הוא חותך רבע מאשכול אליפטי ומדביק אותו לשכן, "אף שהאינרציה שלו נמוכה יותר" (Chapter 9, "Limits of k-means"). וההנחה השקטה ביותר: כל תצפית שייכת לאשכול אחד. בישופ: "ייתכנו נקודות נתונים שנמצאות בערך באמצע הדרך בין מרכזי אשכולות. במקרה כזה לא ברור שההקצאה הקשיחה לאשכול הקרוב ביותר היא המתאימה ביותר" (עמ' 428) – והחלופה היא תערובת גאוסית (Gaussian mixture): כל אשכול הוא התפלגות נורמלית רב-ממדית משלה, "בעלת צורה אליפטית, גודל, צפיפות וכיוון שונים", והמודל נותן לכל תצפית הסתברות להשתייך לכל אשכול – "הקצאה רכה, על סמך ההסתברויות הפוסטריוריות" (Bishop, 2006, p. 443; Géron, 2022, Chapter 9, "Gaussian Mixtures"). k-ממוצעים הוא הגבול של המודל הזה כששונות כל האשכולות זהה ושואפת לאפס (Bishop, p. 443). לחוקר: אם יש נבדקים "בין" הטיפוסים – ותמיד יש – הסתברות ההשתייכות היא הממצא, לא התווית.

אשכולות היררכיים (hierarchical clustering) אינם דורשים k מראש: "במקום זאת, הם דורשים מהמשתמש לציין מדד אי-דמיון בין קבוצות (זרות) של תצפיות" – ואז, בגישה המצרפת, מתחילים מכל תצפית כאשכול ומאחדים בכל צעד את שני הקרובים ביותר, עד אשכול אחד; התוצאה היא דנדרוגרמה, עץ שגובה כל צומת בו הוא אי-הדמיון בין שני הבנים, וחיתוך אופקי שלו נותן חלוקה (Hastie et al., 2009, pp. 520-521). מה "קרוב" בין קבוצות – הקישור: יחיד, שלם, ממוצע, או וורד (מזעור השונות בתוך האשכולות) – משנה את העץ. והאזהרה של הייסטי ועמיתיו, שראוי לצטט במלואה: "דנדרוגרמה כזאת נתפסת לעיתים קרובות כסיכום גרפי של הנתונים עצמם, ולא כתיאור של תוצאות האלגוריתם. אולם יש להתייחס לפרשנויות כאלה בזהירות. ראשית, שיטות היררכיות שונות…, וכן שינויים קטנים בנתונים, עלולים להוביל לדנדרוגרמות שונות למדי. כמו כן, סיכום כזה יהיה תקף רק במידה שאי-הדמיון הזוגי בין התצפיות אכן מקיים את המבנה ההיררכי שהאלגוריתם מייצר. שיטות היררכיות כופות מבנה היררכי בין אם מבנה כזה קיים בפועל בנתונים ובין אם לאו" (עמ' 521-522). DBSCAN מגדיר אשכולות "כאזורים רציפים של צפיפות גבוהה": תצפית עם מספיק שכנים ברדיוס ε היא "ליבה", שכנים של ליבות מצטרפים לאשכול, ומי שאינו ליבה ואין לו ליבה בשכנות "נחשב חריג" – והוא "עובד היטב אם כל האשכולות מופרדים היטב על ידי אזורים בצפיפות נמוכה" (Géron, 2022, Chapter 9, "DBSCAN"); אין k, יש ε, ויש חריגים כתוצר-לוואי. ו-TwoStep של SPSS ו-Modeler: מעבר אחד על הנתונים שדוחס אותם לתת-אשכולות, ואז אשכול היררכי עליהם – מיועד לנתונים גדולים, ועם "קביעה אוטומטית של מספר האשכולות על סמך קריטריונים סטטיסטיים" (Truong, 2026, pp. 470, 473) – שהיא BIC, כלומר סעיף 5.

לוח 1. שיטות הלמידה הבלתי-מונחית – מה כל אחת מחפשת, מה היא מניחה ומה צריך לתת לה

השיטהמושאמה היא מוצאתמניחהצריך לקבוע
רכיבים עיקריים (PCA)משתניםצירים ניצבים שתופסים את מרב השונות הכוללת, בסדר יורד.ליניאריות; יחידות משותפות (תקנון).מספר הרכיבים; אם לתקנן.
ניתוח גורמים מגשש (EFA)משתניםמשתנים סמויים שמסבירים את המתאמים בין הפריטים; טעינות וייחודיוֹת.מודל מדידה: פריט = גורמים + שגיאה ייחודית.מספר הגורמים; שיטת החילוץ; סיבוב.
k-ממוצעיםתצפיותk מרכזים שממזערים את סכום ריבועי המרחקים (אינרציה).אשכולות כדוריים, בגודל ובצפיפות דומים; הקצאה קשיחה.k; המרחק; תקנון; מספר האתחולים.
תערובת גאוסית (GMM)תצפיותk התפלגויות נורמליות – אליפסות בצורות שונות – והסתברות השתייכות לכל תצפית.נורמליות בתוך אשכול.k (או BIC); מבנה השונות-המשותפת.
היררכיתצפיותעץ של איחודים (דנדרוגרמה); חיתוך בגובה כלשהו נותן חלוקה.מבנה היררכי – נכפה גם כשאינו קיים.המרחק; הקישור (ממוצע, שלם, וורד); גובה החיתוך.
DBSCANתצפיותאזורים רציפים בצפיפות גבוהה; מה שמחוץ להם – חריג.אשכולות מופרדים באזורים דלילים; צפיפות דומה.הרדיוס ε; מספר השכנים המזערי.
TwoStep (SPSS)תצפיותדחיסה לתת-אשכולות ואז היררכי; k נבחר אוטומטית (BIC/AIC ושינוי המרחק); חריגים לאשכול "רעש".כמו היררכי; לוג-נראות מניח נורמליות ואי-תלות בין המשתנים.הקריטריון; טווח k; אם להוציא חריגים.
t-SNE · UMAPתצפיותמפה דו-ממדית שבה דומים קרובים – להסתכלות בלבד.–פרמטרים שמשנים את התמונה; לא לפרש מרחקים.

הערה. לפי Géron (2022, פרקים 8-9), Hastie et al. (2009, פרק 14), Bishop (2006, פרקים 9, 12) ו-Truong (2026, פרקים 12-13). "מושא" – כמו ב-Truong (2026, לוח 13.1): משתנים (עמודות) או תצפיות (שורות). מידול נושאים בטקסט – למידה בלתי-מונחית על מילים – במפת הכלים, סעיף 1, ובעמוד NLP.

5. כמה אשכולות – ואם בכלל

הייסטי ועמיתיו מבחינים בין שני מצבים. כשהמטרה היא פילוח, "k מוגדר בדרך כלל כחלק מהבעיה" – חברה עם k אנשי מכירות תחלק את הלקוחות ל-k; "אולם לעיתים קרובות ניתוח אשכולות משמש כסטטיסטי תיאורי לבירור המידה שבה התצפיות… נופלות לקבוצות טבעיות נבדלות. כאן מספר הקבוצות k* אינו ידוע" ויש לאמוד אותו מהנתונים (Hastie et al., 2009, p. 518). והבעיה: אי-הדמיון בתוך האשכולות, Wk, "יורד בדרך כלל ככל ש-k גדל. כך יהיה גם כשהקריטריון מוערך על קבוצת בדיקה בלתי-תלויה, כי מספר גדול של מרכזי אשכולות נוטה למלא את מרחב המאפיינים בצפיפות ולכן להיות קרוב לכל נקודות הנתונים. לפיכך טכניקות של אימות צולב, שכה מועילות לבחירת מודל בלמידה מונחית, אינן ניתנות לשימוש בהקשר הזה" (עמ' 519). זו הסיבה שאין כאן "מדדי ביצוע": כל מה שנשאר הוא היוריסטיקות, והעמוד ממליץ על שלוש, בסדר עולה של תוקף.

המרפק. ז'רון: האינרציה ל-k=3 היא 653, ל-k=5 – 212, ל-k=8 – 119; "האינרציה אינה מדד ביצוע טוב לבחירת k, כי היא ממשיכה לרדת ככל שמגדילים את k". מציירים אותה כפונקציה של k ומחפשים "נקודת פיתול שנקראת מרפק" – "הטכניקה הזאת… גסה למדי" (Géron, 2022, Chapter 9, "Finding the optimal number of clusters"); אצל הייסטי ועמיתיו זהו ה"קינק" ב-Wk, "וכמו היבטים אחרים של הליכי אשכול, הגישה הזאת היוריסטית במקצת" (עמ' 519). הצללית (silhouette; Rousseeuw, 1987): לכל תצפית, (b − a) / max(a, b), כש-a הוא המרחק הממוצע לחברי האשכול שלה ו-b המרחק הממוצע לאשכול הקרוב הבא; "מקדם קרוב ל-+1 אומר שהמופע נמצא היטב בתוך האשכול שלו ורחוק מאחרים… קרוב ל-0 – שהוא קרוב לגבול… וקרוב ל-−1 – שאולי הוקצה לאשכול הלא-נכון"; ציון הצללית הוא הממוצע על כל התצפיות, ותרשים הצללית – "צורת סכין" לכל אשכול – מראה גם אשכולות שרוב חבריהם מתחת לממוצע (פרק 9, שם). בדוגמת ז'רון הצללית מאשרת k=4 אבל מראה ש-k=5 "די טוב גם כן, וטוב בהרבה מ-6 או 7. זה לא היה נראה בהשוואת אינרציות" – והוא בוחר 5, לאשכולות בגדלים דומים: הצללית עוזרת, השיפוט נשאר. סטטיסטי הפער (gap statistic; Tibshirani, Walther & Hastie, 2001) הוא היחיד מהשלושה שעונה גם על "ואם בכלל": הוא "משווה את העקומה log Wk לעקומה שמתקבלת מנתונים המפוזרים אחיד על מלבן שמכיל את הנתונים", ובוחר את k שבו הפער בין השתיים הגדול ביותר; "למעשה זו דרך אוטומטית לאתר את ה'קינק'… הוא גם עובד סביר כשהנתונים נופלים לאשכול יחיד, ובמקרה כזה ייטה לאמוד את מספר האשכולות האופטימלי כאחד. זה התרחיש שבו רוב השיטות המתחרות נכשלות" (Hastie et al., 2009, p. 519). לתערובות גאוסיות, שבהן האינרציה והצללית "אינן אמינות כשהאשכולות אינם כדוריים או בגדלים שונים", ז'רון עובר ל-BIC ו-AIC – קריטריוני מידע שמענישים על פרמטרים (Chapter 9, "Selecting the Number of Clusters") – וזה מה ש-TwoStep עושה מאחורי "אוטומטית".

ובמחשבון: עמוד ניתוח אשכולות מריץ את השיטה הדו-שלבית על משתנים כמותיים – וורד, ואחריו k-ממוצעים שמתחילים ממרכזי האשכולות של וורד – ומדפיס לכל k את שלושת הקריטריונים של הסעיף הזה: Wk (המרפק), ממוצע הצללית וסטטיסטי הפער (כמו clusGap, עם המחולל של R). משם – דנדרוגרמה, פרופיל האשכולות, תרשים צללית וקובץ עם עמודת האשכול לתיקוף לפי סעיף 6. ובלחיצה – יציבות בדגימה חוזרת: האם החלוקה, וכל אשכול בה, חוזרים במדגמי bootstrap – התיקוף בלי מדד חיצוני שבסעיף 6.

לוח 2. כמה רכיבים, גורמים או אשכולות – הקריטריונים, ומה כל אחד מפספס

הקריטריוןל-הכללהמלכודת
ערך עצמי מעל 1 (קייזר)רכיבים, גורמיםמשאירים כל רכיב שמסביר יותר מפריט אחד.ברירת המחדל של SPSS ו-Modeler; "מהשיטות הכי פחות מדויקות" – 36% יותר מדי גורמים (Costello & Osborne, 2005); ב-PANAS של פאלנט – ארבעה במקום שניים. מדויק רק עם קומונליות גבוהות (פילד).
תרשים screeרכיבים, גורמיםהמרפק בעקומת הערכים העצמיים.שיפוט בעין; "זיהוי המרפק המדויק… מאתגר" (טרואונג, עמ' 446). אין ב-Modeler.
שונות מצטברתרכיביםמספיק רכיבים ל-95% (או סף אחר) מהשונות.הסף שרירותי; לשאלונים 95% אומר "כמעט כל הפריטים".
ניתוח מקבילי (Horn, 1965)רכיבים, גורמיםמשאירים רק מה שערכו העצמי גדול משל נתונים אקראיים באותו גודל.ההמלצה של העמוד – ודרישה בכתבי-עת בפסיכולוגיה ובחינוך (פאלנט). אין ב-SPSS – תוכנית נפרדת; ב-R שורה אחת.
מרפק האינרציהk-ממוצעיםהמרפק בעקומת Wk.יורדת תמיד; "גסה למדי" (Géron); "היוריסטית במקצת" (Hastie et al.).
צללית (Rousseeuw, 1987)k-ממוצעים, היררכיk שממקסם את ממוצע (b − a) / max(a, b); תרשים לאשכולות.לא מוגדרת ל-k=1 – אינה אומרת "אין אשכולות"; מחמיאה לאשכולות כדוריים.
סטטיסטי הפער (Tibshirani et al., 2001)k-ממוצעים, היררכיk שבו log Wk רחוק ביותר מזה של נתונים אחידים (עם שגיאת תקן).ההמלצה של העמוד: עונה גם "אחד". דורש סימולציה (B ריצות).
BIC / AICתערובות, TwoStepהמודל עם הקריטריון הנמוך ביותר – נראות מול מספר פרמטרים.מניח את מודל התערובת; BIC ו-AIC יכולים לחלוק.

הערה. לפי Géron (2022, פרקים 8-9), Hastie et al. (2009, עמ' 518-519), Costello & Osborne (2005) ו-Truong (2026). Wk – סכום ריבועי המרחקים מהמרכזים (אינרציה) ב-k אשכולות. בסעיף 8 שלושת קריטריוני האשכולות מורצים על אותם נתונים – ועל רעש.

6. האשכול כהשערה: מה עושים אחרי שמצאו אותו

הכלל שאין לו תחליף: האלגוריתם תמיד מחזיר אשכולות. k-ממוצעים על שני משתנים אחידים לגמרי, בלי שום מבנה, יחזיר שלושה אשכולות בגדלים סבירים ועם צללית לא-מביישת – סעיף 8 מראה זאת במספרים. טרואונג מונה בין חסרונות השיטה את הרגישות לאתחול, לחריגים ולממדיות, ואת הפרשנות: "האשכולות עצמם עשויים להיות בלי תוויות או הסברים ברורים" (Truong, 2026, p. 462) – ושני צעדיו האחרונים הם אפיון (profiling: הממוצעים והשכיחויות של כל אשכול) ותיקוף, "לוודא שתוצאות האשכול משמעותיות, מהימנות ומתאימות לנתונים" (עמ' 462). איך מתקפים משהו שאין לו מדד? בשלוש דרכים, מהחלשה לחזקה, ושלושתן על נתונים שהאשכול לא נבנה מהם.

יציבות. אשכול שקיים בנתונים יחזור: באלגוריתם אחר (k-ממוצעים מול וורד מול תערובת גאוסית – מדד ראנד המתוקן, ARI, בין שתי החלוקות), בחצי אחר של המדגם (מקבצים חצי, מקצים את החצי השני למרכזים שנמצאו, ומשווים לחלוקה העצמאית שלו), ובאתחול אחר. אשכול שמשתנה כשמחליפים קישור או מוציאים עשרה נבדקים הוא תוצר של האלגוריתם, לא של האוכלוסייה – זו האזהרה של הייסטי ועמיתיו על הדנדרוגרמה (סעיף 4), והיא חלה על כל שיטה. משתנים חיצוניים. אם האשכולות הם טיפוסים אמיתיים, הם ייבדלו גם במשתנה שלא השתתף בבנייתם – תוצאה שנמדדה אחר כך, משתנה רקע שהושאר בחוץ. ההבדל הזה הוא הראיה היחידה שיש למחקר החברתי לכך שהאשכול "אומר משהו", והוא נבדק בכלים הרגילים (חי-בריבוע, ANOVA) – בתנאי אחד: המשתנה באמת נשאר בחוץ. מי שמקבץ לפי חמישה משתנים שאחד מהם הוא התוצאה, ואז מדווח שהאשכולות "מנבאים" אותה, מדווח את ההגדרה. ומה שהאשכול אינו. הוא "סטטיסטי תיאורי" (Hastie et al., 2009, p. 518) של המדגם הזה, עם המרחק הזה והמשתנים האלה; השם שהחוקר נותן לו – "המנותקים", "המעורבים" – הוא פרשנות, בדיוק כמו שם של גורם. מפת הכלים מביאה את הביקורת של דרוקר ואלברצי על מידול נושאים, שמתואר כאילו הנושאים "כבר נמצאים בטקסט ולא נוצרים כפעולת קריאה ופרשנות" (שם, סעיף 1) – היא חלה, מילה במילה, על אשכולות של נבדקים. ואם האשכול משמש בהמשך כמשתנה במודל מונחה – כמאפיין, או כתווית שמצמצמת עבודת תיוג: ז'רון מראה שתיוג 50 "תמונות מייצגות", אחת למרכז של כל אשכול, במקום 50 אקראיות, מעלה דיוק מ-74.8% ל-84.9% (Chapter 9, "Using Clustering for Semi-Supervised Learning") – חלים עליו כל כללי הדליפה: האשכול מחושב על קבוצת האימון בלבד, כשלב בצינור.

SPSS Statistics. הנוהל של פאלנט, צעד אחר צעד (Pallant, 2020, Chapter 15, "Procedure for Factor Analysis: Part 1"): Analyze, Dimension Reduction, Factor; מעבירים את הפריטים ל-Variables; בכפתור Descriptives מסמנים Initial Solution, Coefficients ו-KMO and Bartlett's test of sphericity; בכפתור Extraction – "ודאו ש-Principal components מוצג, או בחרו אחת מטכניקות החילוץ האחרות (e.g., Maximum likelihood)" – זו הרשימה הנפתחת שסעיף 3 עוסק בה, ולניתוח גורמים בוחרים בה Principal axis factoring או Maximum likelihood; מסמנים Scree plot, ובקטע Extract – Based on Eigenvalue (כלל קייזר, ברירת המחדל) או Fixed number of factors, שבו מזינים את המספר שהניתוח המקבילי נתן; בכפתור Rotation – Direct Oblimin (ברירת המחדל היא None); בכפתור Options – Sorted by size ו-Suppress small coefficients עם .3. הסינטקס שיוצא מזה הוא פקודת FACTOR עם /EXTRACTION PC, /CRITERIA MINEIGEN(1) ו-/ROTATION OBLIMIN – שלוש השורות שמגלות מה נעשה, ולכן הן מה שמצרפים לדוח. ומה מדווחים, לפי פאלנט: שיטת החילוץ, הקריטריונים למספר הגורמים – "וזה צריך לכלול ניתוח מקבילי" – שיטת הסיבוב, סך השונות המוסברת, הערכים העצמיים לפני הסיבוב ואחריו, לוח טעינות מלא "שמראה את כל הערכים (לא רק אלה שמעל .3)", ובסיבוב oblimin – מטריצת התבנית ומטריצת המבנה במלואן, עם המתאמים בין הגורמים (ibid., "Presenting the Results from Factor Analysis"). פילד, באותם חלונות, בוחר Principal axis factoring, מנתח את מטריצת המתאמים ("ברירת מחדל שימושית, כי היא לוקחת את הצורה המתוקננת… אם המשתנים נמדדו בסולמות שונים זה לא ישפיע על הפתרון"), וממליץ "להריץ ניתוח ראשוני עם ערכים עצמיים גדולים מ-1, לבחור תרשים scree ולהשוות… רצוי להריץ גם ניתוח מקבילי. אם הקריטריונים השונים נותנים תוצאות שונות, בחנו את הקומונליות והחליטו בעצמכם" (Field, 2024, Section 18.6.1, SPSS Tip 18.2). הדיווח לפי פילד: לוח הטעינות המסובבות של כל הפריטים "עם ערכים מעל קריטריון (אני אישית הייתי בוחר .40) מודגשים", אחוז השונות לכל גורם ואולי גם הערך העצמי, מדדי התאמת הנתונים – KMO עם התוויות של קייזר ורייס (.90 "נהדר", .80 "ראוי לשבח", .70 "בינוני", .60 "בינוני-מטה", .50 "עלוב", ומתחת ל-.5 – לאסוף עוד נתונים או לחשוב מחדש על המשתנים; סעיף 18.5.2) – "ובאופן אידאלי, להפקיד את לוח המתאמים במאגר מדע פתוח כמו OSF כדי שמישהו יוכל לשחזר את הניתוח" (סעיף 18.8); הדוגמה שלו: principal axis, oblimin, KMO .92, ארבעה גורמים בניתוח מקבילי מול המאון ה-95 של 20 מערכים אקראיים. ומשפט הסיכום שלו, שראוי שיהיה מודבק על המסך: "החלטות רבות מאוד נותרות לחוקר שמשתמש בניתוח גורמים, ולכן דרגות החופש של החוקר… נכנסות לתמונה לא מעט: נסו לקבל החלטות מושכלות ולא-משוחדות, והתנגדו לפיתוי של החלטות שנותנות לכם את התוצאות שאתם רוצים לקבל" (סעיף 18.7.6). אשכולות – Analyze, Classify (כאן כבר בלי פאלנט, שאינה עוסקת באשכולות; הנתיבים – מידע כללי על התוכנה): Hierarchical Cluster (עם הדנדרוגרמה תחת Plots ובחירת המרחק והקישור תחת Method), K-Means Cluster (מספר האשכולות חובה; Iterate ו-Classify), ו-TwoStep Cluster (מספר אוטומטי לפי BIC או AIC). התקנון – Descriptives, Save standardized values, או Standardize בתוך חלון ההיררכי – הוא צעד נפרד, ומי ששוכחת אותו מקבלת אשכולות של המשתנה בעל הטווח הגדול. את הצללית ואת סטטיסטי הפער SPSS אינו מחשב; TwoStep מציג "מדד צללית של לכידות והפרדה" בפלט ה-Model Viewer, ולשאר – סעיף 8.

SPSS Modeler. אותו דבר בצמתים (הזרם – עמוד למידת המכונה, סעיף 10), והפעם מהתיעוד של IBM עצמה. הצומת PCA/Factor מקבוצת Modeling מציע "שתי גישות דומות אך נבדלות", ומנסח את סעיף 3 במילותיו: "PCA מתמקד בכל השונות, כולל השונות המשותפת והייחודית… ניתוח גורמים מתמקד בשונות המשותפת בלבד. שונות ייחודית לשדות מסוימים אינה נלקחת בחשבון באמידת המודל" (IBM Corporation, 2016a, p. 182). ברירת המחדל של Extraction Method היא Principal Components; החלופות – Unweighted / Generalized Least Squares, Maximum Likelihood, Principal Axis Factoring ועוד – במצב Expert, ושם גם Extract factors: Eigenvalues over (כלל קייזר) או Maximum number, ש"ברירת המחדל שלו היא חמישה גורמים/רכיבים"; ו-Rotation, שברירת המחדל שלו "No rotation" (עמ' 183). כלומר אותן שלוש ברירות מחדל של SPSS Statistics, בשמות אחרים – ובלי scree: טרואונג, שהצומת נתן לו חמישה רכיבים, צייר אותו באקסל (Truong, 2026, pp. 445-446). לאשכולות שלושה צמתים: K-Means – "מספר האשכולות שמציינים… ברירת המחדל היא 5", ואזהרה שראוי לקרוא פעמיים: "המודל המתקבל תלוי במידה מסוימת בסדר נתוני האימון. סידור מחדש של הנתונים ובנייה מחדש של המודל עלולים להוביל למודל אשכולות סופי שונה" (IBM Corporation, 2016a, p. 227) – ריצה אחת, בלי ה-nstart של סעיף 8, ווונדלר וגרוטרופ מסבירים למה: המרכז הראשון הוא "ערכי הרשומה הראשונה במערך הנתונים", והבאים – הרשומות הרחוקות ביותר מהמרכזים שכבר נקבעו; המשתנים המספריים מתוקננים קודם, פנימית, לטווח 0-1 (Wendler & Gröttrup, 2021, pp. 676-677); TwoStep – מתקנן את השדות המספריים כברירת מחדל, יכול להוציא חריגים לאשכול "רעש", ובוחר את מספר האשכולות אוטומטית "על סמך השינוי בקריטריון המידע של בייס (BIC) ככל שמוסיפים אשכולות" ואז לפי השינוי הגדול ביותר במרחק המזערי בין אשכולות; המרחק – לוג-נראות (מספרי וקטגוריאלי יחד; מניח משתנים רציפים נורמליים ובלתי-תלויים) או אוקלידי (עמ' 229-230) – וגם הוא, לפי וונדלר וגרוטרופ, "תלוי בסדר האובייקטים במערך הנתונים" בגלל הקדם-אשכול (Wendler & Gröttrup, 2021, p. 651); ו-Auto Cluster, שמריץ TwoStep, K-Means וקוהונן, מדרג לפי צללית (ברירת המחדל; "מודלים עם צללית שלילית אפשר להשליך בבטחה"), לפי מספר האשכולות או לפי גודלם – ומאפשר "שדות הערכה": "אף שלא משתמשים ביעד, אפשר לציין שדה הערכה אחד או יותר להשוואת המודלים. את התועלת של מודל אשכולות אפשר להעריך במדידה עד כמה (טוב או רע) האשכולות מבחינים בשדות האלה" (עמ' 70-71) – זהו המשתנה החיצוני של סעיף 6, מובנה בתוכנה. ומה שאין: צומת Analysis, שמשווה תחזיות לאמת, "מועיל רק במודלים מונחים… למודלים בלתי-מונחים כמו אלגוריתמי אשכול אין תוצאות אמיתיות שישמשו בסיס להשוואה" (IBM Corporation, 2016b, p. 276) – IBM אומרת את סעיף 1 במשפט. וספר הלימוד של Modeler אומר את סעיפים 5-6: "על סמך ניסיון מעשי, אנו סבורים שההחלטה כמה אשכולות לקבוע צריכה להתקבל קודם", עם הצללית כמדד להתאמה (עמ' 724); "לא פחות מכך, מספר האשכולות חייב להיקבע על סמך ידע מעשי" (עמ' 750); ו"שיטות האשכול אינן מספקות שום עזרה במציאת תיאור הולם לכל אשכול. על החוקרת או החוקר להבין בעצמם איך לתאר כל אשכול בצורה הטובה ביותר" (Wendler & Gröttrup, 2021, p. 650). ניתוח מקבילי, סטטיסטי הפער ויציבות בין אלגוריתמים – יש בשורה של R.

8. ואיך עושים זאת ב-R

הסקריפט הבא רץ כלשונו על קובץ הדוגמה של העמוד – DATA_unsup_example_eng.xlsx (ובעברית _heb.xlsx; שניהם ב-qa/ml/): 300 משיבים בסקר קהילה, 12 פריטי ליקרט (שייכות, אמון, ביטחון – ארבעה פריטים לכל אחד), ארבעה משתני התנהגות (שעות התנדבות, אירועים, שכנים מוכרים, שנים בקהילה), שני משתני "רעש" אחידים, ותוצאה שנמדדה אחר כך – עזיבה. הנתונים מלאכותיים, ונוצרו משלושה גורמים ומשלושה פרופילים – כדי שנדע מה התשובה ונראה איזה קריטריון מוצא אותה; הפרופיל האמיתי אינו בקובץ. חבילות: readxl, psych (ניתוח מקבילי, גורמים), cluster (צללית, סטטיסטי הפער), mclust – תערובות ומדד ראנד (Scrucca et al., 2016). הנתיב – להחליף. ההערות באנגלית, כי הבלוק מוצג משמאל לימין.

library(readxl); library(psych); library(cluster); library(mclust)
d <- read_excel("C:/Rdata/DATA_unsup_example_eng.xlsx")
items <- d[, c("belong1","belong2","belong3","belong4","trust1","trust2","trust3","trust4",
               "safe1","safe2","safe3","safe4")]
beh   <- d[, c("volunteer_h","events","neighbours","years")]

# --- Step 1: PCA on the 12 items - standardised (scale = TRUE), because units differ ------
pca <- prcomp(items, scale. = TRUE)
ev  <- pca$sdev^2                                   # eigenvalues of the correlation matrix
round(rbind(eigenvalue = ev, proportion = ev / sum(ev), cumulative = cumsum(ev) / sum(ev)), 3)
cat("Kaiser (eigenvalue > 1) keeps:", sum(ev > 1), "components\n")

# --- Step 2: how many? parallel analysis (Horn) for components AND factors ----------------
set.seed(20260922)
pa <- fa.parallel(items, fa = "both", n.iter = 100, plot = FALSE)
cat("parallel analysis: components =", pa$ncomp, " factors =", pa$nfact, "\n")

# --- Step 3: PCA is not factor analysis: same items, two models ---------------------------
pc3 <- principal(items, nfactors = 3, rotate = "oblimin")   # components: total variance
fa3 <- fa(items, nfactors = 3, fm = "ml", rotate = "oblimin") # common factors: shared variance
print(pc3$loadings, cutoff = .30)
print(fa3$loadings, cutoff = .30)
cat("factor correlations (EFA):\n"); print(round(fa3$Phi, 2))
cat("communalities - PCA vs EFA (first 4 items):\n")
print(round(rbind(PCA = pc3$communality[1:4], EFA = fa3$communality[1:4]), 2))

# --- Step 4: k-means on the 4 behaviour variables - scaled first ---------------------------
X <- scale(beh)
set.seed(20260922)
km <- lapply(2:6, function(k) kmeans(X, centers = k, nstart = 25, iter.max = 100))
inertia <- sapply(km, function(m) m$tot.withinss)              # the "elbow" curve
sil     <- sapply(km, function(m) mean(silhouette(m$cluster, dist(X))[, 3]))
gap     <- clusGap(X, FUN = function(x, k) kmeans(x, k, nstart = 25), K.max = 6, B = 100)
round(cbind(k = 2:6, inertia = inertia, silhouette = sil), 3)
print(gap, method = "Tibs2001SEmax")

# --- Step 5: the chosen solution - and what it looks like in the original units ---------
k3 <- km[[2]]                                                   # k = 3
cat("sizes:", k3$size, "\n")
round(aggregate(beh, by = list(cluster = k3$cluster), FUN = mean), 1)

# --- Step 6: does another algorithm agree? hierarchical (Ward) vs k-means ----------------
hc  <- hclust(dist(X), method = "ward.D2")
hc3 <- cutree(hc, k = 3)
table(kmeans = k3$cluster, ward = hc3)
cat("adjusted Rand index, k-means vs Ward:", round(adjustedRandIndex(k3$cluster, hc3), 3), "\n")

# --- Step 7: stability - split-half: cluster each half, predict the other by nearest centre
set.seed(20260922)
h  <- sample(rep(c(TRUE, FALSE), length.out = nrow(X)))
kA <- kmeans(X[h, ], 3, nstart = 25); kB <- kmeans(X[!h, ], 3, nstart = 25)
nearest <- function(x, centres) apply(x, 1, function(r) which.min(colSums((t(centres) - r)^2)))
predB <- nearest(X[!h, ], kA$centers)                          # A's rule applied to B
cat("split-half ARI (A's centres on B vs B's own clusters):",
    round(adjustedRandIndex(predB, kB$cluster), 3), "\n")

# --- Step 8: the control - two pure-noise variables get clustered too ---------------------
Z <- scale(d[, c("noise_a", "noise_b")])
set.seed(20260922)
kz <- kmeans(Z, 3, nstart = 25)
cat("noise, k = 3: sizes", kz$size, " silhouette",
    round(mean(silhouette(kz$cluster, dist(Z))[, 3]), 3), "\n")
gz <- clusGap(Z, FUN = function(x, k) kmeans(x, k, nstart = 25), K.max = 6, B = 100)
cat("noise, gap statistic chooses k =", maxSE(gz$Tab[, "gap"], gz$Tab[, "SE.sim"], method = "Tibs2001SEmax"), "\n")

# --- Step 9: model-based alternative - Gaussian mixture, number of components by BIC ------
mc <- Mclust(beh, G = 1:6, verbose = FALSE)
cat("Mclust: model", mc$modelName, "with G =", mc$G, "components; ARI vs k-means",
    round(adjustedRandIndex(mc$classification, k3$cluster), 3), "\n")

# --- Step 10: the cluster is a hypothesis, not a finding: an outcome that was NOT clustered on
tab <- table(cluster = k3$cluster, moved_out = d$moved_out)
round(prop.table(tab, 1), 2)
chisq.test(tab)

מה יצא (R 4.3.3, psych 2.4.1, cluster 2.1.6, mclust 6.0.1; הפלט המלא – qa/ml/unsup_out.txt). הפריטים: הערכים העצמיים של 12 הפריטים – 2.88, 2.12, 1.80, ואז 0.85 ומטה; שלושת הראשונים מסבירים 56.7% מהשונות. כלל קייזר משאיר שלושה, וכך גם הניתוח המקבילי – שלושה רכיבים ושלושה גורמים; כאן הם מסכימים, כי המבנה נקי, ובשאלון אמיתי הם לא תמיד יסכימו. אותם פריטים בשני המודלים, שניהם בסיבוב oblimin: כל פריט נטען על הגורם שלו בשניהם – אך הטעינות של הרכיבים גבוהות יותר (0.80, 0.79, 0.68, 0.75 לשייכות, לעומת 0.74, 0.71, 0.55, 0.63), והקומונליות של ארבעת פריטי השייכות 0.65, 0.63, 0.48, 0.55 ב-PCA מול 0.56, 0.51, 0.32, 0.39 בניתוח הגורמים; שלושת הרכיבים "מסבירים" 56.7% ושלושת הגורמים 43.0%. ההפרש הוא השונות הייחודית של הפריטים – שגיאת המדידה – שה-PCA מכניס לרכיבים וניתוח הגורמים משאיר בחוץ; זה סעיף 3 במספרים. מתאמי הגורמים .17, .09, .26 – לא אפס, ולכן אלכסוני. ההתנהגות: על ארבעת המשתנים המתוקננים, האינרציה יורדת 498, 274, 245, 227, 200 ל-k של 2 עד 6 – מרפק ב-3; הצללית .47, .48, .44, .44, .37 – מרב ב-3, אך 2 ו-4 קרובים; סטטיסטי הפער, ב-100 סימולציות – 3. גדלי האשכולות 71, 120 ו-109, וממוצעיהם ביחידות המקוריות: 15 שעות התנדבות, 22 אירועים, 25 שכנים ו-20 שנה באשכול אחד; 1.8, 3, 6 ו-4.5 בשני; 8, 10, 14 ו-12.5 בשלישי – מעורבים, מנותקים, ביניים; השמות שלנו, לא של האלגוריתם. היציבות: וורד מסכים עם k-ממוצעים על 298 מ-300 נבדקים (ARI .98); חלוקה שנלמדה על חצי אחד ומוחלת על השני מסכימה עם החלוקה העצמאית של אותו חצי ב-ARI .96; תערובת גאוסית בוחרת ב-BIC שלושה רכיבים (מודל VEI) ומסכימה עם k-ממוצעים לחלוטין (ARI 1). הרעש: על שני משתנים אחידים בלי שום מבנה, k-ממוצעים מחזיר שלושה אשכולות בגדלים 108, 104 ו-88 עם צללית .39 – מספר שבשאלון אמיתי היו מדווחים; סטטיסטי הפער בוחר k=1. זהו הטיעון כולו. וההשערה: העזיבה, שלא השתתפה באשכול, שונה בין האשכולות – 7%, 30% ו-21% (χ²(2) = 14.0, p < .001); זו ראיה שהאשכולות אומרים משהו, וזו הרמה שבה מדווחים אותם: הבדל במשתנה חיצוני, לא "שלושה טיפוסים בקהילה".

טעויות נפוצות

לדווח "ניתוח גורמים" על רכיבים עיקריים. ברירת המחדל של SPSS – "אופס!" (פילד). הרכיבים מכילים את שגיאת המדידה, הקומונליות מנופחות, ואי-אפשר לדבר על מבנה סמוי (סעיף 3). לניתוח גורמים – Principal axis או Maximum likelihood, סיבוב אלכסוני.

לתת לערך העצמי 1 להחליט. "מהשיטות הכי פחות מדויקות", ובכל זאת ברירת המחדל בשתי התוכנות; בדוגמת ה-PANAS של פאלנט הוא נותן ארבעה רכיבים לסולם של שניים. ניתוח מקבילי – ואם אין, לפחות scree עם שיקול דעת מנומק (לוח 2).

לקבץ בלי לתקנן. משתנה בטווח 0-100 לצד משתנים בטווח 1-5: האשכולות הם של המשתנה הגדול (ז'רון, פרק 9; גוטיירז, פרק 8). ב-SPSS התקנון הוא צעד נפרד.

לבחור k לפי האינרציה – או לפי הרגל. האינרציה יורדת תמיד; "שלושה אשכולות" הם הרגל. צללית וסטטיסטי פער, ותשובה גם ל"אחד" (סעיף 5).

לקרוא לדנדרוגרמה "מבנה הנתונים". היא תוצר האלגוריתם; קישור אחר, עשרה נבדקים פחות – עץ אחר. "שיטות היררכיות כופות מבנה היררכי בין אם קיים ובין אם לאו" (הייסטי ועמיתיו, עמ' 522).

לתקף את האשכול במשתנה שבנה אותו. "האשכולות נבדלים במובהק בהתנדבות" – כשההתנדבות היא אחד ממשתני האשכול – הוא דיווח של ההגדרה. תיקוף רק במשתנה שנשאר בחוץ (סעיף 6).

לתת שמות ולשכוח שהם שלכם. "המנותקים" הוא פרשנות של ממוצעים, לא תכונה שהאלגוריתם גילה; והתצפיות שבאמצע – שתערובת גאוסית הייתה נותנת להן 50/50 – נעלמות בתווית.

לפרש מרחקים ב-t-SNE. המפה נועדה להסתכלות; גודל האשכול ומרחקו מאחרים בתמונה תלויים בפרמטרים ואינם ממצא (סעיף 2).

רשימת בדיקה – לפני שמדווחים רכיבים, גורמים או אשכולות

שאלהלמה זה חשוב
ברור אם המטרה היא לצמצם משתנים או לקבץ נבדקים?שתי משפחות שונות – רכיבים וגורמים מול אשכולות (סעיף 1).
רכיבים או גורמים – ונאמר במפורש איזה מהם, ולמה?SPSS מחליף ביניהם בשקט; הקומונליות, הטעינות והפרשנות שונות (סעיף 3).
מספר הגורמים נקבע בניתוח מקבילי, לא בערך עצמי מעל 1?הכלל שבברירת המחדל משאיר יותר מדי (לוח 2).
הסיבוב אלכסוני – או שיש סיבה להניח גורמים בלתי-מתואמים?הבניות מתואמות; varimax כופה אי-תלות (סעיף 3).
יש מספיק נבדקים לפריט – לפחות 5:1 ו-150 נבדקים, ורצוי 10:1?גורמים ממדגם קטן אינם משתחזרים (פאלנט; Costello & Osborne, 2005).
יש מה לחלץ – מתאמים מעל .3 במטריצה, KMO של .6 לפחות (פאלנט; פילד – .5 כרצפה, ועדיף מעל .7), בארטלט מובהק?בלי מבנה משותף ניתוח הגורמים מייצר גורמים מרעש (סעיף 3).
המשתנים תוקננו לפני האשכול – והמרחק נבחר ומדווח?בלי תקנון האשכולות הם של המשתנה הגדול; המרחק הוא החלטה (סעיף 4).
k נבחר בצללית ובסטטיסטי הפער – ונבדק גם k=1?האלגוריתם תמיד מחזיר אשכולות; רק סטטיסטי הפער עונה "אין" (סעיף 5).
האשכולות חזרו באלגוריתם אחר ובחצי אחר של המדגם?יציבות היא התיקוף היחיד שיש בלי מדד (סעיף 6).
האשכולות נבדלים במשתנה שלא השתתף בבנייתם?אחרת התיקוף הוא ההגדרה (סעיף 6).
השמות שניתנו לגורמים ולאשכולות מסומנים כפרשנות?"המנותקים" ו"גורם השייכות" הם קריאה של החוקר, לא פלט (סעיף 6).
אם האשכול או הרכיב משמשים במודל מונחה – חושבו על האימון בלבד?דליפה L1.2 (מדדי ביצוע ואימות, סעיף 5).
הזרע, מספר האתחולים, הגרסאות והסקריפט מתועדים?k-ממוצעים תלוי באתחול; תוצאה לא-מתועדת אינה ממצא.

מקורות

Bishop, C. M. (2006). Pattern recognition and machine learning. Springer.

Costello, A. B., & Osborne, J. (2005). Best practices in exploratory factor analysis: Four recommendations for getting the most from your analysis. Practical Assessment, Research, and Evaluation, 10(7). https://doi.org/10.7275/jyj1-4868

Field, A. (2024). Discovering statistics using IBM SPSS statistics (6th ed.). SAGE.

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.

Gutierrez, D. D. (2015). Machine learning and data science: An introduction to statistical learning methods with R. Technics Publications.

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

IBM Corporation. (2016a). IBM SPSS Modeler 18.0 modeling nodes. IBM. https://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/18.0/en/ModelerModelingNodes.pdf

IBM Corporation. (2016b). IBM SPSS Modeler 18.0 source, process, and output nodes. IBM. https://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/18.0/en/ModelerSPOnodes.pdf

Horn, J. L. (1965). A rationale and test for the number of factors in factor analysis. Psychometrika, 30(2), 179-185. https://doi.org/10.1007/BF02289447

Pallant, J. (2020). SPSS survival manual: A step by step guide to data analysis using IBM SPSS (7th ed.). Routledge. https://doi.org/10.4324/9781003117452

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

Scrucca, L., Fop, M., Murphy, T. B., & Raftery, A. E. (2016). mclust 5: Clustering, classification and density estimation using Gaussian finite mixture models. The R Journal, 8(1), 289-317. https://doi.org/10.32614/RJ-2016-021

Tibshirani, R., Walther, G., & Hastie, T. (2001). Estimating the number of clusters in a data set via the gap statistic. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 63(2), 411-423. https://doi.org/10.1111/1467-9868.00293

Truong, D. (2026). Demystifying AI: Data science and machine learning using IBM SPSS Modeler. Chapman and Hall/CRC. https://doi.org/10.1201/9781003468196

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