חיפוש באתר

קישורים

RSS סטטיסטיקה ברשת

עמודים

קטגוריות

תגיות

ניתוח מרכיבים ראשיים (PCA) – למה, איך ואיך לא

ברשימה זאת אתן הסבר אינטואיטיבי ולא מתמטי אודות שיטת ה-PCA, ואסביר כיצד להשתמש בה בצורה נכונה.

למה להשתמש ב-PCA?

PCA, או בעברית ניתוח מרכיבים ראשיים, היא שיטה סטטיסטית פופולרית בקרב Data Scientists. כאשר יש קובץ נתונים ובו מספר גדול של משתנים, מעוניינים לצמצם את מספר המשתנים כדי להקל על החישובים. יש מספר דרכים לעשות זאת, ו-PCA היא אחת הדרכים האלה. ה-PCA יכול להחליף קבוצה של משתנים בקבוצת משתנים אחרת, קטנה יותר.

איך להשתמש ב-PCA

לצורך ההדגמה אשתמש בקובץ נתונים body, המכיל נתונים אודות מימדי הגוף של 507 נבדקים. הקובץ זמין לציבור בארכיון הנתונים של ה-Journal of Statistical Education. הקובץ נמצא כאן, והסבר על הנתונים שבקובץ תוכלו למצוא כאן. אני אתרכז בשלושה משתנים בקובץ, המודדים שלושה אספקטים של היקף החזה: ,Chest_depth  Chest_diameter ו- Chest_girth.

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

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

הרעיון הבסיסי של פירסון יוסבר כעת, תוך כדי שימוש מינימלי במתמטיקה.

האינפורמציה שבנתונים מתבטאת בשוניות שבין המשתנים ובשונויות המשותפות שבינהם. לכן הציע פירסון הציע להסתכל על טבלת השונויות המשותפות המשתנים[1] .[2]

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] . לכל ערך עצמי מתאים יצור מתמטי שנקרא "וקטור עצמי", שהוא בעצם, בדוגמא שלנו, סדרה של 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 תקבלו משהו. אבל יש כאן כמה בעיות[4] .

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

שנית, אם תבחנו היטב את רשימת המשתנים, תראו שבקובץ יש משתנה המתאר את מינו של כל אחד מהאנשים שנמדדו. 1 מציין זכר, 0 מציין נקבה. הבחירה של 0 ו-1 היא שרירותית. זהו משתנה שמי. אין כלל משמעות לשונות של המשתנה הזה, או לשונות המשותפת שלו עם משתנים אחרים. הכלל השני: PCA נועד למשתנים כמותיים, כלומר, למשתנים שנמדדים בסולם מנה או סולם רווח. מה לגבי משתנים שנמדדים בסולם סודר? למשל, שביעות הרצון בסולם 1-5? גם כאן בחירת המספרים היא שרירותית. מי שמכניס משתנה כזה לתוך PCA מניח כי שביעות הרצון הזאת היא משתנה כמותי, כלומר ההפרש בין 1 ל-2, למשל, שווה להפרש בין 4 ל-5. הנחה כזו צריך להצדיק. ההצדקה היחידה שראיתי לגבי התייחסות למשתנה כזה כאל משתנה כמותי היא שכנוע עצמי.

גם כשיש נתוני ספירה (count variables), למשל מספר ההתקפים שעבר חולה במשך תקופת זמן מסויימת, צריך להזהר. זה אמנם משתנה כמותי, אבל הוא עלול להיות skewed[5] , ומכאן ייתכן כי המתאם בין משתנה כזה ומשתנים כמותיים אחרים עלול להיות נמוך, ולפיכך לא תהיה תועלת רבה בהכנסתו למודל.

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


הערות
  1. שונות משותפת בין שני משתנים דומה בתכונותיה למקדם המתאם בין המשתנים למעשה, מקדם המתאם מחושב על ידי שקלול של השונות המשותפת. []
  2. כן, אני יודע על  centering ו-scaling ודברים כאלה []
  3. ואפשר להוכיח כי הם יהיו ממשיים וחיוביים []
  4. הניתוח מכאן והלאה תקף גם לשיטות אחרות להקטנת מימדי הנתונים, כגון SVD, MDS וכדומה []
  5. איך מתרגמים את זה לעברית? []

8 תגובות ל“ניתוח מרכיבים ראשיים (PCA) – למה, איך ואיך לא”

  • תגובה מאת רוני ה.
    תאריך 26 בנובמבר 2017 08:54

    תודה, מעניין מאוד.
    נהוג לתרגם 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)

  • תגובה מאת גיל
    תאריך 26 בנובמבר 2017 15:22

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

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

    אם אנחנו כבר כאן, שאלה שתמיד גורמת לבלבול. האם PCA נחשב לדוגמא של Factor analysis או שמדובר בשני דברים שונים? כמו כן, מה ההבדל בין PCA לcluster analysis? האם בcluster analysis פשוט בודקים אלו משתנים נמצאים במתאם גבוה אחד עם השני?

    • תגובה מאת יוסי לוי
      תאריך 27 בנובמבר 2017 14:26

      Factor analysis זו שיטה אחרת עם מטרה דומה לזו של ה-PCA – החלפת קבוצת משתנים בקבוצת משתנים קטנה יותר, תוך כדי איבוד מינימלי של אינפורמציה. גם Factor analysis מתבססת על פירוק מטריצת הקוואריאנס.

      cluster analysis זה משהו אחר לגמרי – סיווג תצפיות וחלוקתן לכמה קבוצות הומוגניות יחסית. אולי אכתוב רשימה גם על זה.

    • תגובה מאת יוסי לוי
      תאריך 28 בנובמבר 2017 15:10

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

      • תגובה מאת גיל
        תאריך 28 בנובמבר 2017 15:13

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

  • תגובה מאת איתי
    תאריך 28 בנובמבר 2017 08:58

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

    • תגובה מאת יוסי לוי
      תאריך 28 בנובמבר 2017 15:09

      איזה בעיה זה בדיוק פותר? אם תמדוד משקל בגרמים במקום בק"ג ותחלק את ה-IQ ב-10, תהיה פתאום משמעות לשקלול שלהם?

      • תגובה מאת איתי
        תאריך 28 בנובמבר 2017 21:43

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

תגובה