ברשימה זאת אתן הסבר אינטואיטיבי ולא מתמטי אודות שיטת ה-PCA, ואסביר כיצד להשתמש בה בצורה נכונה.
למה להשתמש ב-PCA?
PCA, או בעברית ניתוח מרכיבים ראשיים, היא שיטה סטטיסטית פופולרית בקרב Data Scientists. כאשר יש קובץ נתונים ובו מספר גדול של משתנים, מעוניינים לצמצם את מספר המשתנים כדי להקל על החישובים. יש מספר דרכים לעשות זאת, ו-PCA היא אחת הדרכים האלה. ה-PCA יכול להחליף קבוצה של משתנים בקבוצת משתנים אחרת, קטנה יותר.
איך להשתמש ב-PCA
לצורך ההדגמה אשתמש בקובץ נתונים body, המכיל נתונים אודות מימדי הגוף של 507 נבדקים. הקובץ זמין לציבור בארכיון הנתונים של ה-Journal of Statistical Education. הקובץ נמצא כאן, והסבר על הנתונים שבקובץ תוכלו למצוא כאן. אני אתרכז בשלושה משתנים בקובץ, המודדים שלושה אספקטים של היקף החזה: ,Chest_depth Chest_diameter ו- Chest_girth.
איך אפשר להחליף את שלושת המשתנים האלה במשתנה אחד? אפשרות אחת היא להחליף את המשתנים בממוצע שלהם. מחברים את הערכים של שלושת המשתנים, ומחלקים בשלוש. יש כאן בעיה – איבדנו אינפורמציה. קודם היו לנו הערכים של כל שלושת המשתנים, עכשיו יש לנו רק את הממוצע שלהם. כמה אינפורמציה איבדנו? אפשר לחשב. אבל השאלה המעניינת היא: האם אפשר ליצור משלושת המשתנים משתנה אחר, כך שאיבוד האינפורמציה יהיה קטן יותר? האם יש שקלול של שלושת המשתנים כך שאיבוד האינפורמציה יהיה מינימלי?
את התשובה לשאלה האחרונה נתן קרל פירסון בשנת 1901. כן, אפשר למצוא שקלול כך שאיבוד האינפורמציה יהיה מינימלי.
הרעיון הבסיסי של פירסון יוסבר כעת, תוך כדי שימוש מינימלי במתמטיקה.
האינפורמציה שבנתונים מתבטאת בשוניות שבין המשתנים ובשונויות המשותפות שבינהם. לכן הציע פירסון הציע להסתכל על טבלת השונויות המשותפות המשתנים (( שונות משותפת בין שני משתנים דומה בתכונותיה למקדם המתאם בין המשתנים למעשה, מקדם המתאם מחושב על ידי שקלול של השונות המשותפת. )) . (( כן, אני יודע על centering ו-scaling ודברים כאלה ))
Chest_depth | Chest_girth | Chest_diameter | |
20.35 | 4.59 | 6.33 | Chest_diameter |
23.93 | 7.59 | 4.59 | Chest_girth |
100.555 | 23.99 | 20.35 | Chest_depth |
בטבלה שמוצגת כאן אנו רואים, למשל, כי השונות המשותפת של המשתנים Chest_diameter ו-Chest_girth היא 23.93. גם מקדם המתאם בין שני המשתנים גבוה, וערכו הוא 0.87. גם המתאמים האחרים גבוהים. ככל שהמתאמים בין המשתנים גבוהים יותר, כך ה-PCA יביא יותר תועלת. לכן מומלץ לבדוק את מקדמי המתאם בין המשתנים לפני הפעלת ה-PCA.
המתמטיקאים מכנים טבלה של מספרים בשם “מטריצה”, ובהתאם טבלת השונויות המשותפות נקראת בפי הסטטיסטיקאים “מטריצת השונויות המשותפות”. למטריצה הזו יש כל מיני תכונות מתמטיות. יש לה, למשל, שלושה מספרים האופייניים לה, שנקראים בפי המתמטיקאים “ערכים עצמיים” (( ואפשר להוכיח כי הם יהיו ממשיים וחיוביים )) . לכל ערך עצמי מתאים יצור מתמטי שנקרא “וקטור עצמי”, שהוא בעצם, בדוגמא שלנו, סדרה של 3 מספרים.
פירסון הוכיח כי השקלול הטוב ביותר של המשתנים, זה שישמר מקסימום אינפורמציה, יהיה על ידי הוקטור העצמי ששייך לערך העצמי הגדול ביותר של מטריצת השונויות המשותפות. יותר מכך, האינפורמציה הנשמרת שווה לערכו היחסי של הערך העצמי בסך הערכים העצמיים.
בדוגמה שלנו הערכים העצמיים של המטריצה הם 110.52, 2.33 ו-1.55. הערך העצמי הגדול ביותר הוא, לכן, 110.52. הוקטור העצמי המתאים לערך עצמי זה הוא: (0.953, 0.230, 0.197 ). לכן השקלול האופטימלי הוא להכפיל את Chest_depth ב-0.197, להכפיל את Chest_diameter ב-0.230, ולהכפיל את Chest_girth ב-0.953, ולבסוף לחבר הכל. המשתנה המתקבל כך נקרא “המרכיב הראשי הראשון”. כמה אינפורמציה נשמרת? ובכן, סכום הערכים העצמיים הוא 114.4. 110.52 חלקי 114.4 זה 0.966. המרכיב הראשי הראשון שומר 96.6% מהאינפורמציה.
באופן דומה אפשר להגדיר את המרכיב הראשי השני והשלישי. בדוגמא שלנו אפשר להסתפק במרכיב הראשי הראשון.
מבחינה גיאומטרית השיטה מתאימה לנתונים מערכת צירים חדשה, על ידי “סיבוב” של ערכי המשתנים. בדוגמה המלאכותית הבאה רואים שני משתנים, X ו-Y, כמו שהם (לפני הפעלת ה-PCA) ואת שני הרכיבים הראשיים (אחרי הפעלת ה-PCA). ניתן לראות כי הנתונים “הסתובבו”, וכעת השונות בין המשתנים מתבטאת בעיקר לאורך הציר האופקי.
איך לא להשתמש ב-PCA
מי שטרח להסתכל בקובץ הנתונים ראה שיש בו 25 משתנים. מדוע, אפשר לשאול, לא ניקח את כל המשתנים ונפעיל עליהם את פרוצדורת ה-PCA? זה אפשרי מבחינה מתמטית. אם תכניסו את כל הנתונים לתוכנה שמחשבת PCA תקבלו משהו. אבל יש כאן כמה בעיות (( הניתוח מכאן והלאה תקף גם לשיטות אחרות להקטנת מימדי הנתונים, כגון SVD, MDS וכדומה )) .
ראשית, בדוגמא שלנו, שלושת המשתנים שבחרנו מתייחסים לבית החזה (chest) ומבטאים אספקטים שונים של גודלו. המרכיב הראשי של שלושת המשתנים שחישבנו מבטא, לכן, את גודלו של בית החזה. אם נשקלל את כל המשתנים, לא ברור מה תהיה האינטרפרטציה של המרכיב הראשי שיחושב. אתן דוגמה קצת קיצונית. בדף הערך של PCA בויקיפדיה העברית נתונה דוגמה של שלושה משתנים: משקל, גובה וגיל, אבל לפני שערכתי את הדף, הדוגמה הציגה את המשתנים מנת משכל, גובה וגיל. מה המשמעות של שקלול מנת משקל, גובה וגיל? אם תחשבו עבור מישהו את הממוצע של גובהו ומנת המשכל שלו, מה תקבלו? איזה משמעות יש לזה? הכלל הראשון: יש להשתמש ב-PCA אך ורק לשקלול משתנים המבטאים אספקטים שונים של אותו הדבר, כך שלשקלול שלהם תהיה משתמעות.
שנית, אם תבחנו היטב את רשימת המשתנים, תראו שבקובץ יש משתנה המתאר את מינו של כל אחד מהאנשים שנמדדו. 1 מציין זכר, 0 מציין נקבה. הבחירה של 0 ו-1 היא שרירותית. זהו משתנה שמי. אין כלל משמעות לשונות של המשתנה הזה, או לשונות המשותפת שלו עם משתנים אחרים. הכלל השני: PCA נועד למשתנים כמותיים, כלומר, למשתנים שנמדדים בסולם מנה או סולם רווח. מה לגבי משתנים שנמדדים בסולם סודר? למשל, שביעות הרצון בסולם 1-5? גם כאן בחירת המספרים היא שרירותית. מי שמכניס משתנה כזה לתוך PCA מניח כי שביעות הרצון הזאת היא משתנה כמותי, כלומר ההפרש בין 1 ל-2, למשל, שווה להפרש בין 4 ל-5. הנחה כזו צריך להצדיק. ההצדקה היחידה שראיתי לגבי התייחסות למשתנה כזה כאל משתנה כמותי היא שכנוע עצמי.
גם כשיש נתוני ספירה (count variables), למשל מספר ההתקפים שעבר חולה במשך תקופת זמן מסויימת, צריך להזהר. זה אמנם משתנה כמותי, אבל הוא עלול להיות skewed (( איך מתרגמים את זה לעברית? )) , ומכאן ייתכן כי המתאם בין משתנה כזה ומשתנים כמותיים אחרים עלול להיות נמוך, ולפיכך לא תהיה תועלת רבה בהכנסתו למודל.
שלישית: בדוגמה שלנו, ייתכן והיחסים בין מידות בית החזה שונים אצל גברים ואצל נשים. במקרה כזה, יש לבצע שקלול שונה לגברים לחוד, ולנשים לחוד. צריך לחלק את הנתונים לשני קבצי נתונים, ולבצע PCA נפרד לגברים לחוד ולנשים לחוד. תמיד יש לבדוק האם ניתן להתייחס לכל הנתונים כמקשה אחת, או שמא יש בנתונים תת קבוצות של נתונים, כאשר בכל אחת מהן יש קשרים שונים בין המשתנים.
תודה, מעניין מאוד.
נהוג לתרגם skewed כמוטה או כמצודד. בהקשר זה הייתי אולי מתרגם באופן לא פורמלי “בעל הטייה לאחד הצדדים”.
1. http://www.maot.co.il/lex6/glossary/g_1158.asp
2. https://he.wikipedia.org/wiki/%D7%A6%D7%99%D7%93%D7%95%D7%93_(%D7%A1%D7%98%D7%98%D7%99%D7%A1%D7%98%D7%99%D7%A7%D7%94)
בזה הרגע ביטלת את כל המחקרים במדעי החברה שמשתמשים בסולם סדר 🙂 אני חושב שההתייחסות לסולמות ליקרט היא כסולמות רווח ולא סדר, אבל מסכים שזה לא חד משמעי.
אני מסכים שצריך להסתכל על המשתנים שהPCA מייצר כדי לראות אם הם הגיוניים. להבנתי, אם מוסיפים הרבה משתנים, צריך פשוט להחליט לאיזה ערך עצמי הם שייכים. בדוגמא שלך, היה נוצר ערך עצמי שבו שלושת המשתנים היו מופיעים עם הloading הכי גדול ולכן היה ברור מה נכלל בערך העצמי הזה ומה לא. כמובן שלא תמיד זה חלק.
אם אנחנו כבר כאן, שאלה שתמיד גורמת לבלבול. האם PCA נחשב לדוגמא של Factor analysis או שמדובר בשני דברים שונים? כמו כן, מה ההבדל בין PCA לcluster analysis? האם בcluster analysis פשוט בודקים אלו משתנים נמצאים במתאם גבוה אחד עם השני?
Factor analysis זו שיטה אחרת עם מטרה דומה לזו של ה-PCA – החלפת קבוצת משתנים בקבוצת משתנים קטנה יותר, תוך כדי איבוד מינימלי של אינפורמציה. גם Factor analysis מתבססת על פירוק מטריצת הקוואריאנס.
cluster analysis זה משהו אחר לגמרי – סיווג תצפיות וחלוקתן לכמה קבוצות הומוגניות יחסית. אולי אכתוב רשימה גם על זה.
PCA זה סוג של factor analysis.
זה מאוד לא מדוייק. נכון ש-PCA ו-factor analysis משמשות למטרות שונות, אולם יש הבדל מהותי בין שתי השיטות. PCA היא שיטה תיאורית ביסודה, ואינה מניחה הנחות סטטיסטיות על המשתנים, פרט לכך שהם משתנים כמותיים. factor analysis, לעומת זאת, הוא מודל סטטיסטי המניח את קיומם של משתנים מקריים לטנטיים (בלתי נצפים), בלתי תלויים, ובעלי תוחלת אפס ושונות סופית. אני ממליץ לך לעיין בערך של factor analysis בויקיפדיה (באנגלית) שיש בו תיאור די טוב של המודל, וגם דוגמה ליישום של השיטה.
אני לא “מבטל” מחקרים וגם לא מעביר ביקורת על מחקים שלא קראתי ולא בדקתי.
אני כן אומר שמחקרים שמתייחסים ללייקרט סקייל כאל משתנה כמותי צריכים להבין שמדובר בהנחה, והחוקרים צריכים להבין מה המשמעות של ההנחה הזו, לציין אותה במפורש, ולנסות להצדיק אותה. אם לא, הם עושים סטטיסטיקה רעה (לא חדשות מרעישות), התוצאות שלהם תחת סימן שאלה, ואם התוצאות נכונות זה *למרות* שהם עשו סטטיסטיקה רעה.
אמרתי את זה יותר בתור בדיחה, אבל אתה צודק. לא זכור לי שראיתי מחקרים שמתשמשים בסולם ליקרט שמדברים על הבעייתיות שבו. לפעמים מסתכלים על ההתפלגות כדי לבדוק נורמליות אבל אף אחד לא מזכיר שזו הנחה.
האם standardization על הדאטה לפני הרצת האלגוריתם לא אמור לפתור את הבעיה של השוואות בין גובה למנת משכל?
איזה בעיה זה בדיוק פותר? אם תמדוד משקל בגרמים במקום בק”ג ותחלק את ה-IQ ב-10, תהיה פתאום משמעות לשקלול שלהם?
אני לא בטוח לגבי משמעות אבל הם יהיו מאותם סדרי גודל. כיוון שpca מחפש את כיוון השונות הגדול ביותר אני לא מבין מה הבעיה אם פתרון שכזה?
אתה יכול להסביר איך המרחב יורד אם התשובה של PCA זה הוקטור העצמי של הע”ע הגדול ביותר?
בסוף נשארתי באותו מימד
פוסט מצויין!
מה היית מציע למי שרוצה להבין מי מבין המשתנים המקוריים (לא הווקטורים העצמיים של ה-pca), תורמים הכי הרבה לשונות? בסופו של דבר, הרי לא ברור מה המשמעות המדעית של הווקטורים החדשים….
טעות דפוס קטנה – המטריצה של השונות המשותפת צריכה להיות סימטרית והיא לא: הערכים של של השונות המשותפת של girth עם depth שונים משני צידי אלכסון המטריצה.
תהליך הPCA לא מסתיים במציאת הוקטורים העצמיים. לאחר שה ו”ע נמצאו, יש להטיל את המדידות המקוריות עליהן. אם תטיל את המדידות על כל מרחב הוקטורים העצמיים אכן המימד לא ירד, אך תוכל להטיל רק על n הוקטורים העצמיים הראשונים (כאשר מסדרים אותם לפי גודל הערך העצמי, החל מהגדול) וגם לדעת לפי הע”ע כמה שונות מוסברת ע”י שימוש רק בחלק מהוקטורים העצמיים. בהצלחה.
האם תוכל להסביר מה המשמעות של מקדמים שלילייים בוקטורים העצמיםם?
במקרה של בניית שאלון חדש, מה יותר נכון לשימוש PCA או FACTOR ANALYSIS, במידה והשאלון מורכב מ-50 שאלות ואמור להתחלק ל-5 מדדים. והאם ניתן לבצע את השיטה על מדגם של 170 איש. תודה רבה.