ספארק MLlib - ספריית למידת מכונה של אפאצ'י ספארק



הבלוג הזה של Spark MLlib יציג בפניכם את ספריית למידת המכונות של Apache Spark. הוא כולל פרויקט מערכת המלצות סרטים באמצעות Spark MLlib.

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

c ++ כיצד למיין מערך

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





הנושאים הבאים יוסקרו בבלוג זה:

  1. מהי למידת מכונה?
  2. סקירה על Spark MLlib
  3. ספארק MLlib Tools
  4. אלגוריתמים של MLlib
  5. השתמש במקרה - מערכת המלצות לסרטים

מהי למידת מכונה?

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



למידת מכונה - Spark MLlib - Edureka דמות: כלים ללימוד מכונה

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

ישנן שלוש קטגוריות של משימות למידת מכונה:



  1. למידה מפוקחת : למידה בפיקוח היא המקום בו יש לך משתני קלט (x) ומשתנה פלט (Y) ואתה משתמש באלגוריתם כדי ללמוד את פונקציית המיפוי מהקלט לפלט.
  2. למידה ללא פיקוח : למידה ללא פיקוח היא סוג של אלגוריתם למידת מכונה המשמש להסקת מסקנות ממערכי נתונים המורכבים מנתוני קלט ללא תגובות שכותרתו.
  3. לימוד עם חיזוקים : תוכנית מחשב מקיימת אינטראקציה עם סביבה דינמית בה עליה לבצע מטרה מסוימת (כגון נהיגה ברכב או משחק נגד יריב). התוכנית מספקת משוב מבחינת תגמולים ועונשים כאשר היא מנווטת את מרחב הבעיות שלה.מושג זה נקרא למידת חיזוק.

סקירה על Spark MLlib

Spark MLlib משמש ללימוד מכונה ב- Apache Spark. MLlib מורכב מאלגוריתמים ושירותים פופולריים.

סקירה כללית של MLlib:

  • ניצוץ.mllib מכיל את ה- API המקורי שנבנה על גבי RDDs. כרגע הוא נמצא במצב תחזוקה.
  • spark.ml מספק API ברמה גבוהה יותר הבנוי על גבי DataFrames עבורבניית צינורות ML. spark.ml הוא ממשק ה- API למידה ממכונה עבור Spark כרגע.

ספארק MLlib Tools

Spark MLlib מספק את הכלים הבאים:

  • אלגוריתמים של ML: אלגוריתמים של ML מהווים את הליבה של MLlib. אלה כוללים אלגוריתמי למידה נפוצים כגון סיווג, רגרסיה, אשכולות וסינון שיתופי.
  • תכונה: התכונה כוללת מיצוי תכונות, טרנספורמציה, צמצום ממדיות ובחירה.
  • צינורות: צינורות צינורות מספקים כלים לבניית, הערכה וכוונון צינורות ML.
  • הַתמָדָה: התמדה מסייעת בשמירה וטעינה של אלגוריתמים, מודלים וצינורות.
  • כלי עזר: כלי עזרלאלגברה לינארית, סטטיסטיקה וטיפול בנתונים.

אלגוריתמים של MLlib

האלגוריתמים והשירותים הפופולריים ב- Spark MLlib הם:

  1. סטטיסטיקה בסיסית
  2. נְסִיגָה
  3. מִיוּן
  4. מערכת המלצות
  5. אשכולות
  6. הפחתת ממדיות
  7. חילוץ תכונה
  8. אופטימיזציה

הבה נבחן כמה מהם בפירוט.

סטטיסטיקה בסיסית

סטטיסטיקה בסיסית כולל את הטכניקות הבסיסיות ביותר של למידת מכונה. אלו כוללים:

  1. סיכום סטטיסטיקה : דוגמאות כוללות ממוצע, שונות, ספירה, מקסימום, מינימום ומספר NONZeros.
  2. מתאמים : ספירמן ופרסון הם כמה דרכים למצוא מתאם.
  3. דגימה מרובדת : אלה כוללים sampleBykey ו- sampleByKeyExact.
  4. בדיקת השערה : מבחן הצ'י בריבוע של פירסון הוא דוגמה לבדיקת השערה.
  5. הפקת נתונים אקראית : RandomRDDs, Normal ו- Poisson משמשים להפקת נתונים אקראיים.

נְסִיגָה

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

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

מִיוּן

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

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

מערכת המלצות

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

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

  1. סינון שיתופי ניגש לבניית מודל מהתנהגות העבר של המשתמש (פריטים שנרכשו בעבר או שנבחרו ו / או דירוגים מספריים שניתנו לאותם פריטים) וכן החלטות דומות שקיבלו משתמשים אחרים. לאחר מכן משתמשים במודל זה לחיזוי פריטים (או דירוגים לפריטים) שהמשתמש עשוי לעניין בהם.
  2. סינון מבוסס תוכן גישות משתמשות בסדרה של מאפיינים נפרדים של פריט במטרה להמליץ ​​על פריטים נוספים בעלי מאפיינים דומים.

יתר על כן, גישות אלה משולבות לעיתים קרובות כמערכות ממליצות היברידיות.

אשכולות

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

הפחתת ממדיות

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

  1. בחירת תכונות: בחירת תכונות מוצאת קבוצת משנה של המשתנים המקוריים (נקראים גם תכונות או תכונות).
  2. חילוץ תכונה: זה הופך את הנתונים במרחב הממדי הגבוה למרחב של פחות ממדים. שינוי הנתונים עשוי להיות ליניארי, כמו בניתוח רכיבים עיקריים (PCA), אך קיימות גם טכניקות רבות להפחתת מימדיות.

חילוץ תכונה

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

אופטימיזציה

אופטימיזציה הוא הבחירה של הטובים ביותראלמנט (ביחס לקריטריון כלשהו) מתוך קבוצה כלשהי של חלופות זמינות.

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

השתמש במקרה - מערכת המלצות לסרטים

הצהרת בעיה: לבניית מערכת המלצות על סרטים אשר ממליצה על סרטים על פי העדפות המשתמש באמצעות Apache Spark.

הדרישות שלנו:

אז בואו נעריך את הדרישות לבניית מערכת המלצות הסרט שלנו:

  1. עיבוד כמות עצומה של נתונים
  2. קלט ממספר מקורות
  3. קל לשימוש
  4. עיבוד מהיר

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

הבה נבחן כעת את תרשים הזרימה עבור המערכת שלנו.

כפי שאנו רואים, הבאים משתמשים בסטרימינג מזרם ניצוצות. אנו יכולים להזרים בזמן אמת או לקרוא נתונים מ- Hadoop HDFS.

קבלת מערך נתונים:

עבור מערכת המלצות הסרטים שלנו, אנו יכולים לקבל דירוג משתמשים מאתרים פופולריים רבים כמו IMDB, Rotten Tomatoes ו- Times Movie Ratings. מערך נתונים זה זמין בפורמטים רבים כגון קבצי CSV, קבצי טקסט אמאגרי מידע. אנו יכולים להזרים את הנתונים בשידור חי מהאתרים או להוריד ולאחסן אותםמערכת הקבצים המקומית שלנו או HDFS.

מערך נתונים:

האיור שלהלן מראה כיצד אנו יכולים לאסוף מערכי נתונים מאתרים פופולריים.

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

למידת מכונה:

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

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

יישום ספארק MLlib:

  1. אנו נשתמש בסינון שיתופי (CF) כדי לחזות את הדירוגים עבור משתמשים עבור סרטים מסוימים על סמך הדירוגים שלהם עבור סרטים אחרים.
  2. לאחר מכן אנו משתפים פעולה עם דירוג משתמשים אחרים עבור אותו סרט מסוים.
  3. כדי לקבל את התוצאות הבאות מ- Machine Learning שלנו, עלינו להשתמש ב- DataFrame, במערך הנתונים וב- SQL של ​​Spark SQL.

הנה קוד הפסאודו של התוכנית שלנו:

ייבא org.apache.spark.mllib.recommendation.ALS ייבוא ​​org.apache.spark.mllib.recommendation.Rating ייבוא ​​org.apache.spark.SparkConf // ייבא אובייקט חבילות נחוץ אחר סרט {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = SparkContext new (conf) val rawData = sc.textFile ('* קרא נתונים מקובץ CSV של הסרט * ') //rawData.first () val rawRatings = rawData.map (* פיצול rawData במפריד כרטיסיות *) דירוגי val = rawRatings.map {* מערך מקרה של משתמשים, סרטים ודירוג *} // הדרכת מודל val data = ALS.train (דירוגים, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * חיזוי למשתמש 789 לסרט 123 * val userId = * משתמש 789 * val K = 10 val topKRecs = model.recommendProducts (* ממליץ למשתמש לערך המסוים של K *) println (topKRecs.mkString ('')) val סרטים = sc.textFile ('* קרא נתוני רשימת סרטים *') כותרות val = films.map (line => line.split ('|'). קח ( 2)). מפה (מערך => (מערך (0) .toInt, מערך (1))). CollectAsMap () כותרות val RDD = films.map (line => line.split ('|'). קח (2) ) .map (array => (array (0) .toInt, array (1))). מטמון () כותרות (123) val moviesForUser = דירוגים. * חפש משתמש 789 * val sqlContext = * צור הקשר SQL * סרטי val מומלץ = sqlContext. * הפוך מסגרת נתונים לסרטים מומלצים * filmsRecommended.registerTempTable ('filmsRecommendedTable') sqlContext.sql ('בחר ספירה (*) מ- filmsRecommendedTable'). foreach (println) filmsForUser. * מיין את הדירוגים עבור משתמש 789 * .map (* מפה את הדירוג לכותר הסרט *). * הדפיסו את הדירוג * val results = moviesForUser.sortBy (-_. Rating). Take (30) .map (rating => (titels (rating.product), rating.rating))}}

לאחר שנוצר תחזיות, אנו יכולים להשתמש ב- Spark SQL לאחסון התוצאות במערכת RDBMS. יתר על כן, ניתן להציג זאת ביישום אינטרנט.

תוצאות:

דמות: סרטים מומלצים למשתמש 77

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

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

האם לבדוק את שלנו אני אם ברצונך ללמוד Spark ולבנות קריירה בתחום ה- Spark ולבנות מומחיות לביצוע עיבוד נתונים בקנה מידה גדול באמצעות RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​ו- Scala עם מקרי שימוש אמיתיים.