- 7 ביולי 2014
- וסיליס ווריניוטיס
- . תגובה 1
במאמרים הקודמים דנו בפירוט ב- דגמי תערובת של תהליך הרישלט וכיצד ניתן להשתמש בהם בניתוח אשכולות. במאמר זה נציג יישום Java של שני דגמי DPMM שונים: מודל התערובת הרגיל רב-משתני של Dirichlet אשר יכול לשמש לאשכול נתונים גאוסיים ואת מודל התערובת Dirichlet-Multinomial המשמש לאשכול מסמכים. קוד Java מקורו תחת רישיון GPL v3 וניתן להוריד אותו בחינם GitHub.
עדכון: מסגרת הלמידה על מכונה של Datumbox היא כעת קוד פתוח וחינמית ל- להורדה. עיין בחבילה com.datumbox.framework.machinelearning.clustering כדי לראות את היישום של דגמי תערובת Dirichlet בתבנית Java.
יישום מודל תערובת של תהליך Dirichlet ב- Java
הקוד מיישם את מודל תערובת Dirichlet Process עם Gibbs Sampler ומשתמש במתמטיקה 3.3 של Apache Commons כספריית מטריצות. זה מורשה תחת GPLv3 אז אל תהסס להשתמש בו, לשנות אותו ולהפיץ אותו מחדש באופן חופשי ותוכל להוריד את יישום Java מ GitHub. שים לב שתוכל למצוא את כל החלקים התיאורטיים של שיטת האשכולות בחמש המאמרים הקודמים והערות מפורטות של Javadoc ליישום בקוד המקור.
להלן נפרט תיאור ברמה גבוהה על הקוד:
1. מחלקת DPMM
ה- DPMM הוא מעמד מופשט ופועל כבסיס למודלים השונים, ומיישם את תהליך המסעדה הסינית ומכיל את סמפלר ג'יבס התמוטט. יש לו את אשכול השיטה הציבורית () המקבל את מערך הנתונים כרשימת נקודות ואחראי על ביצוע ניתוח האשכול. שיטות שימושיות נוספות בכיתה הן getPointAssignments () המשמש לאחזור מטלות האשכול לאחר סיום האשכולות ו- getClusterList () המשמש לקבלת רשימת האשכולות המזוהים. ה- DPMM מכיל את אשכול המעמד המופשט הסטטי המקונן; הוא מכיל מספר שיטות מופשטות הנוגעות לניהול הנקודות ולהערכת קובץ ה- PDF האחורי המשמשות להערכת מטלות האשכול.
2. מעמד GaussianDPMM
ה- GaussianDPMM הוא הטמעת מודל תערובת רגילה רב-משתנה של Dirichlet ומרחיב את מחלקת DPMM. הוא מכיל את כל השיטות הנדרשות לאמידת ההסתברויות בהנחה הגאוסית. יתר על כן הוא מכיל את אשכול המחלקה המקונן הסטטי המיישם את כל השיטות המופשטות של מחלקת DPMM.Cluster.
3. מחלקה multinomialDPMM
ה- MultinomialDPMM מיישם את מודל התערובת Dirichlet-Multinomial ומרחיב את מעמד ה- DPMM. בדומה למחלקת GaussianDPMM, היא מכילה את כל השיטות הנדרשות לאמידת ההסתברויות בהנחת Multinomial-Dirichlet ומכילה את אשכול המחלקה המקונן הסטטי המיישם את השיטות המופשטות של DPMM. Cluster.
4. כיתת SRS
מחלקת SRS משמשת לביצוע דגימה אקראית פשוטה מטבלת תדרים. הוא משמש את גימבס סמפלר להערכת מטלות האשכול החדשות בכל שלב בתהליך האיטרטיבי.
5. כיתת נקודה
המחלקה פוינט משמשת כפולה המאחסנת את נתוני הרשומה יחד עם מזהה.
6. Apache Commons Math Lib
Apache Commons Math 3.3 lib משמש לכפל מטריקס וזה התלות היחידה ביישום שלנו.
7. DPMM מחלקה לדוגמא
מחלקה זו מכילה דוגמאות לשימוש ביישום Java.
שימוש ביישום Java
המשתמש בקוד מסוגל להגדיר את כל הפרמטרים של דגמי התערובת, כולל סוגי הדגמים וההפרפרמטרים. בקטע הקוד הבא אנו יכולים לראות כיצד האלגוריתם מאותחל ומבוצע:
List<Point> pointList = new ArrayList<>(); //add records in pointList //Dirichlet Process parameter Integer dimensionality = 2; double alpha = 1.0; //Hyper parameters of Base Function int kappa0 = 0; int nu0 = 1; RealVector mu0 = new ArrayRealVector(new double[]{0.0, 0.0}); RealMatrix psi0 = new BlockRealMatrix(new double[][]{{1.0,0.0},{0.0,1.0}}); //Create a DPMM object DPMM dpmm = new GaussianDPMM(dimensionality, alpha, kappa0, nu0, mu0, psi0); int maxIterations = 100; int performedIterations = dpmm.cluster(pointList, maxIterations); //get a list with the point ids and their assignments Map<Integer, Integer> zi = dpmm.getPointAssignments();
להלן נוכל לראות את תוצאות הפעלת האלגוריתם על מערך נתונים סינתטי המורכב מ -300 נקודות נתונים. הנקודות נוצרו במקור על ידי 3 התפלגויות שונות: N ([10,50], I), N ([50,10], I) ו- N ([150,100], I).
איור 1: עלילת פיזור של מערך הדגמה
האלגוריתם לאחר ריצה של 10 חזרות, זיהה את שלושת מרכזי האשכול הבאים: [3, 10.17], [50.11, 49.99] ו- [10.13, 149.97]. לבסוף מכיוון שאנו מתייחסים לכל דבר באופן בייזיאני, אנו מסוגלים לא רק לספק הערכות נקודה בודדות של מרכזי האשכול אלא גם את חלוקת ההסתברות שלהם באמצעות נוסחה .
איור 2: פיזור עלילת ההסתברויות למרכזי אשכולות
באיור לעיל אנו מתווים את ההסתברויות הללו; האזורים האדומים מצביעים על סבירות גבוהה להיות מרכז אשכול ואזורים שחורים מצביעים על סבירות נמוכה.
כדי להשתמש ביישום Java ביישומים בעולם האמיתי עליך לכתוב קוד חיצוני הממיר את מערך הנתונים המקורי שלך לפורמט הנדרש. יתרה מכך ייתכן שיהיה צורך בקוד נוסף אם ברצונך לדמיין את הפלט כפי שנראה לעיל. לבסוף שימו לב כי ספריית Apache Commons Math כלולה בפרויקט ולכן אין צורך בתצורה נוספת להפעלת הדגמות.
אם אתה משתמש ביישום בפרויקט מעניין, שלח לנו שורה ונציג את הפרויקט שלך בבלוג שלנו. כמו כן, אם אתה אוהב את המאמר, אנא הקדש רגע ושתף אותו בטוויטר או בפייסבוק.
- AI
- איי אמנות
- מחולל אמנות ai
- איי רובוט
- בינה מלאכותית
- הסמכת בינה מלאכותית
- רובוט בינה מלאכותית
- רובוטים של בינה מלאכותית
- תוכנת בינה מלאכותית
- blockchain
- blockchain conference ai
- קוינגניוס
- בינה מלאכותית של שיחה
- קריפטו כנס ai
- של דאל
- דטומבוקס
- למידה עמוקה
- גוגל איי
- למידת מכונה
- לימוד מכונה וסטטיסטיקה
- אפלטון
- plato ai
- מודיעין אפלטון
- משחק אפלטון
- אפלטון נתונים
- פלטוגיימינג
- תכנות
- סולם ai
- תחביר
- זפירנט