בבלוג זה תבין מהו אשכול K- וכיצד ניתן ליישמו על הנתונים הפליליים שנאספו במדינות ארה'ב שונות. הנתונים מכילים פשעים שבוצעו כמו: תקיפה, רצח ואונס במעצרים לכל 100,000 תושבים בכל אחת מ -50 מדינות ארה'ב בשנת 1973. לצד ניתוח הנתונים תלמדו גם על:
- מציאת מספר האשכולות האופטימלי.
- מזעור עיוות
- יצירה וניתוח של עקומת המרפק.
- הבנת המנגנון של אלגוריתם k-means.
נתחיל בניתוח. הנתונים נראים כך:
לחץ על התמונה להורדת מערך נתונים זה
זקוק למערך נתונים זה? לחץ על התמונה שלעיל כדי להוריד אותה.
ראשית נכין את הנתונים לניתוח. על מנת לעשות זאת, עלינו להסיר את כל ערכי ה- NA העשויים להיות קיימים בנתונים ולהמיר את הנתונים למטריצה.
> פשע 0 פשע str (פשע) מספר [1:50, 1: 4] 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ... - attr (*, 'dimnames') = רשימת 2 .. $: chr [1 : 50] 'אלבמה' 'אלסקה' 'אריזונה' 'ארקנסו' ... .. $: chr [1: 4] 'רצח' 'תקיפה' 'UrbanPop' 'אונס'
בואו ניקח את מספר האשכולות להיות 5. פונקציית Kmeans () לוקחת את נתוני הקלט ואת מספר האשכולות שבהם הנתונים צריכים להיות מקובצים. התחביר הוא: kmeans (data, k) כאשר k הוא מספר מרכזי האשכול.
k פירושו מערך לדוגמה של אשכולות
> class class (cl) [1] 'kmeans'
ניתוח האשכולות:
> str (cl) רשימת אשכול 9 $: בשם int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' אלבמה 'אלסקה' אריזונה 'ארקנסו' ... $ מרכזים: מספר [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*, 'dimnames') = רשימת 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'רצח' 'תקיפה' 'UrbanPop' 'אונס '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweenss: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'class') = chr 'kmeans'
הפונקציה str () מעניקה את מבנה הקימאנים הכוללת פרמטרים שונים כמו withinss, betweenss וכו ', וניתוח מהם תוכלו לגלות את הביצועים של kmeans.
בין שני הצדדים: בין סכום הריבועים כלומר דמיון תוך-מוחלט
withinss: בתוך סכום הריבוע כלומר דמיון בין-מקבצי
totwithinss: סכום כל ה- withinss של כל האשכולות כלומר דמיון פנים-אשכול כולל
אשכול טוב, יהיה בעל ערך נמוך יותר של withinss וערך גבוה יותר של betweenss אשר תלוי במספר האשכולות 'k' שנבחרו בתחילה. בואו נראה כיצד אנו יכולים למצוא את הערך האופטימלי של 'k'.
מציאת הערך האופטימלי של 'k'
ערך אופטימלי של 'k' הוא הערך אשר נותן לנו קבוצה מכווצת של אשכולות עם מינימום עיוותים. ככל שהעיוות גדול יותר, האשכולות שנוצרו גרועים יותר.
עיוות:
ניתן לחשב את העיוות במונחים של 'withinss' מכל אחד מהאשכולות. פחות הערך של 'withinss' של אשכול מסוים, יהיה מאוכלס יותר בצפיפות, ולכן עיוות מינימלי.
kmeans.wss.k<- function(crime, k){ km = kmeans(crime, k) return (km$tot.withinss) }
פונקציה זו תופסת את הנתונים ואת הערך של k ומחזירה עבורם את 'km $ totwithinss'. 'Km $ totwithinss' הוא הסכום הכולל של הריבועים בתוך האשכול, ובכך כולל אינסיקים של כל 5 האשכולות שנוצרו, כלומרסכום (withinss)
. הערך הגבוה יותר של 'km $ totwithinss', העיוות גדול יותר.
עבור k = 5, withinss הוא 24417.02
> kmeans.wss.k (פשע, 5) [1] 24417.02
בואו נגדיל את הערך של k מ -5 ל -10, ונבחין את ההבדל.
> kmeans.wss.k (פשע, 10) [1] 11083.04
ניתן לראות שככל שערך K עולה, עיוות יורד.
אנו יכולים להוציא את הערכים השונים של 'km $ totwithinss' ולשרטט אותם בגרף כדי למצוא את הקשר בין עיוות לערך של k. הפונקציה הבאה עושה זאת עבורנו:
> kmeans.dis maxk = 10> dis = kmeans.dis (פשע, maxk)> עלילה (1: maxk, dis, type = 'b', xlab = 'מספר אשכולות', + ylab = 'עיוות', + col = 'כחול')
טא דה !!! לפיכך יש לנו את עקומת המרפק המפורסמת.
עקומת מרפק:
זהו העלילה שבין 'k', מספר האשכולות לבין 'totwithinss' (או עיוות) לכל ערך של k. אתה יכול לראות מתי מספר האשכול קטן יותר, יש ירידה הדרגתית בעיוות, אך ככל שאנחנו ממשיכים להגדיל את ערך k, קצב הפחתת ערכי העיוות הופך קבוע.
ערך זה של k שמעבר אליו קצב העיוות הוא קבוע הוא הערך האופטימלי. כאן k = 4.
הבה נשתמש באנימציה כדי להבין כיצד R נתן לנו את התוצאות המקובצות.
> ספרייה (אנימציה)> cl<- kmeans.ani(crime, 4)
אלגוריתם מקובץ באשכולות:
הבה נבין את האלגוריתם שעליו עובד קיבוץ אשכולות k:
שלב 1. אם k = 4, אנו בוחרים 4 נקודות אקראיות ומניחים שהן מרכזי אשכולות ליצירת האשכולות.
שלב 2. אנו תופסים נקודת נתונים אקראית מהחלל ומגלים את מרחקה מכל 4 מרכזי האשכולות. אם נקודת הנתונים היא הקרובה ביותר למרכז האשכול הירוק, היא נצבעת בירוק וכמו כן כל הנקודות מסווגות בין 4 האשכולות.
להיכשל מהר לעומת להיכשל בטוח
שלב 3. כעת אנו מחשבים את מרכז התאים של כל הנקודות הירוקות ומקצים נקודה זו כמרכז האשכול לאותו אשכול.
באופן דומה, אנו מחשבים צנטרואידים עבור כל 4 הנקודות הצבעוניות (המקובצות) ומקצים את הצנטרידים החדשים כמרכזי האשכול.
שלב 4. שלב 2 ושלב 3 מתנהלים בצורה איטרטיבית, אלא אם כן מרכזי האשכול מתכנסים בנקודה ואינם זזים יותר.
הוא a יש ג'אווה
כך, אנו מגיעים למרכזי האשכולות המתכנסים.
ניתן לראות כי הנתונים מחולקים ל -4 אשכולות. מרכזי האשכול הם:
> מרכזי cl $ רצח תקיפה UrbanPop אונס טקסס 4.740741 104.8519 62.96296 16.10 לואיזיאנה 10.907143 219.9286 71.71429 25.95 דרום קרוליינה 13.375000 284.5000 46.25000 25.05 ניו מקסיקו 11.040000 298.0000 77.60000 32.68
באשכול -4 עם 'ניו מקסיקו' כמרכז האשכול יש שיעור פשיעה עצום גם עם האוכלוסייה הגבוהה ביותר.
אשכול -3 ואשכול -2 מעקב.
לכל מדינה מוקצה אשכול, תלוי בו אנו יכולים לחזות כעת את דירוג הפשע שלה. הפלט נראה כמו:
יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.
פוסטים קשורים: