מסגרת למידת מכונה חדשה בקוד פתוח שנכתבה ב-Java PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

מסגרת למידת מכונה חדשה בקוד פתוח שנכתבה ב-Java

אני שמח לבשר שמסגרת הלמידה של מכונה של Datumbox פתוחה כעת תחת GPL 3.0 ותוכל להוריד את הקוד שלה מ- GitHub!

מהי המסגרת הזו?

השמיים מסגרת למידת מכונה של חברת Datebox היא מסגרת קוד פתוח שנכתבה בג'אווה המאפשרת פיתוח מהיר של מודלים של Machine Learning ויישומים סטטיסטיים. זהו הקוד שמפעיל כעת את ה- Datumbox API. המוקד העיקרי של המסגרת הוא לכלול מספר רב של אלגוריתמים למידת מכונה ושיטות סטטיסטיות ולהיות מסוגלים להתמודד עם מערכי נתונים קטנים ובינוניים. למרות שהמסגרת מכוונת לסייע בפיתוח מודלים מתחומים שונים, היא מספקת כלים שימושיים במיוחד ביישומי עיבוד שפות טבעיות וניתוח טקסטים.

באילו סוגים של דגמים / אלגוריתמים נתמכים?

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

שכבת הסטטיסטיקה מספקת שיעורים לחישוב סטטיסטיקות תיאוריות, ביצוע סוגים שונים של דגימה, הערכת CDFs ו- PDFs מתוך התפלגויות הסתברות נפוצות וביצוע של למעלה מ 35 בדיקות פרמטריות ולא פרמטריות. סוגים כאלה של שיעורים נחוצים בדרך כלל בעת ביצוע ניתוח נתונים מסביר, דגימה ובחירת תכונות.

שכבת הלמידה של המכונה מספקת שיעורים בהם ניתן להשתמש במספר רב של בעיות, כולל סיווג, רגרסיה, ניתוח אשכולות, דוגמנות נושא, הפחתת ממדים, בחירת תכונות, לימוד אנסמבל ומערכות ממליצים. להלן כמה מהאלגוריתמים הנתמכים: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Clustering Clustering, הייררכי, מודלים לתערובת Dirichlet, רגרסיה Softmax, רגרסיה רגילה, רגרסיה ליניארית, רגרסיה שלב, PCA ועוד.

מסגרת Datumbox VS Mahout VS Scikit-Learn

גם Mahout וגם Scikit-Learn הם פרויקטים נהדרים ולשניהם יעדים שונים לחלוטין. Mahout תומך רק במספר מצומצם מאוד של אלגוריתמים הניתנים להקבלה וכך משתמשים במסגרת Map-Reduce של Hadoop לטיפול בביג דאטה. מצד שני, Scikit-Learn תומך במספר גדול של אלגוריתמים, אך הוא אינו יכול להתמודד עם כמות עצומה של נתונים. יתר על כן הוא מפותח ב- Python, שהיא שפה נהדרת לייצור טיפוס-טיפוס ומחשוב מדעי, אך לא החביב עלי על פיתוח תוכנה.

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

כמה זה יציב?

הגרסאות המוקדמות של המסגרת (עד 0.3.x) פותחו באוגוסט וספטמבר 2013 והן נכתבו ב- PHP (yeap!). במהלך מאי ויוני 2014 (גרסאות 0.4.x), המסגרת נכתבה מחדש ב- Java ושופרה עם תכונות נוספות. שני הסניפים נבדקו בכבדות ביישומים מסחריים כולל API של Datumbox. הגרסה הנוכחית היא 0.5.0 והיא נראית בוגרת מספיק כדי להשתחרר כגרסת האלפא הציבורית הראשונה של המסגרת. עם זאת, חשוב לציין כי פונקציות מסוימות של המסגרת נבדקות בצורה יסודית יותר מאחרות. יתר על כן מכיוון שגרסה זו היא אלפא, עליכם לצפות לשינויים דרסטיים במהדורות העתיד.

מדוע כתבתי את זה ולמה אני מקודד אותו?

המעורבות שלי במכונת למידה ו- NLP מתוארכת לשנת 2009 כאשר הקמתי יחד את WebSEOAnalytics.com. מאז אני מפתח יישומים של אלגוריתמים למידת מכונות שונים לפרויקטים ויישומים שונים. לרוע המזל רוב היישומים המקוריים היו מאוד ספציפיים לבעיות וכמעט לא ניתן היה להשתמש בהם בכל בעיה אחרת. באוגוסט 2013 החלטתי להקים את Datumbox כפרויקט אישי ולפתח מסגרת המספקת כלים לפיתוח מודלים של למידת מכונות המתמקדים בתחום NLP ו- Classification Text. היעד שלי היה לבנות מסגרת שתשמש לשימוש חוזר בעתיד לפיתוח מהיר של מודלים של למידת מכונה, שילובם בפרויקטים הדורשים רכיבי למידת מכונה או להציע אותה כשירות (למידת מכונה כשירות).

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

תיעוד?

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

מגבלות שוטפות ופיתוח עתידי

כמו בכל פיסת תוכנה (ובמיוחד בפרויקטים של קוד פתוח בגירסת אלפא), מסגרת הלמידה של Machine Machine מגיע עם מגבלות ייחודיות ומקסימות משלה. בואו נחפור בהם:

  1. תיעוד: כאמור, התיעוד גרוע.
  2. אין ריבוי חתכים: לרוע המזל המסגרת אינה תומכת כרגע במתיחה מרובה. כמובן שנשים לב שלא ניתן להקביל את כל האלגוריתמים למידת מכונה.
  3. דוגמאות קוד: מכיוון שהמסגרת פורסמה זה עתה, לא תוכלו למצוא דוגמאות קוד באינטרנט מלבד אלה המסופקות על ידי המסגרת בצורה של מבחני JUnit.
  4. מבנה קוד: יצירת ארכיטקטורה איתנה לכל פרויקט גדול היא תמיד מאתגרת, קל וחומר כשצריך להתמודד עם אלגוריתמים של Machine Learning השונים משמעותית (למידה בפיקוח, למידה ללא פיקוח, אלגוריתמים להפחתת ממדיות וכו ').
  5. התמדה במודל ואוספי נתונים גדולים: נכון לעכשיו ניתן לאמן את הדגמים ולאחסן אותם על קבצים בדיסק או בבסיסי נתונים של MongoDB. כדי להיות מסוגלים לטפל בכמויות גדולות של נתונים, יש לחקור פתרונות אחרים. לדוגמה MapDB נראה כמועמד טוב לאחסון נתונים ופרמטרים תוך כדי אימונים. יתר על כן, חשוב להסיר 3rd ספריות מפלגות המטפלות כיום בהתמדה של הדגמים ומפתחות פתרון יבש ומודולרי טוב יותר.
  6. אלגוריתמים חדשים /בדיקות / דגמים: יש כל כך הרבה טכניקות נהדרות שאינן נתמכות כרגע (במיוחד לניתוח סדרות זמן).

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

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

בול זמן:

עוד מ דטומבוקס