Spark MLlib - مكتبة التعلم الآلي في Apache Spark



ستقدم لك مدونة Spark MLlib هذه مكتبة التعلم الآلي في Apache Spark. يتضمن مشروع نظام توصية الأفلام باستخدام Spark MLlib.

سبارك MLlib هو مكون التعلم الآلي في Apache Spark.أحد أهم عوامل الجذب في Spark هو القدرة على توسيع نطاق الحوسبة على نطاق واسع ، وهذا هو بالضبط ما تحتاجه لخوارزميات التعلم الآلي. لكن القيد هو أن جميع خوارزميات التعلم الآلي لا يمكن موازنتها بشكل فعال. كل خوارزمية لها تحدياتها الخاصة في الموازاة ، سواء كانت مهمة التوازي أو توازي البيانات.

بعد قولي هذا ، أصبحت Spark المنصة الواقعية لبناء خوارزميات التعلم الآلي والتطبيقات.حسنًا ، يمكنك التحقق من ملف برعاية خبراء الصناعة قبل المضي قدمًا في المدونة.يقوم المطورون الذين يعملون على Spark MLlib بتنفيذ المزيد والمزيد من الخوارزميات الآلية بطريقة قابلة للتطوير وموجزة في إطار عمل Spark. من خلال هذه المدونة ، سوف نتعلم مفاهيم التعلم الآلي ، Spark MLlib ، الأدوات المساعدة ، الخوارزميات وحالة الاستخدام الكاملة لنظام توصية الأفلام.





سيتم تناول الموضوعات التالية في هذه المدونة:

  1. ما هو التعلم الآلي؟
  2. نظرة عامة على Spark MLlib
  3. أدوات Spark MLlib
  4. خوارزميات MLlib
  5. حالة الاستخدام - نظام توصية الفيلم

ما هو التعلم الآلي؟

تطور التعلم الآلي من دراسة التعرف على الأنماط ونظرية التعلم الحسابي في الذكاء الاصطناعي ، ويستكشف التعلم الآلي دراسة وبناء الخوارزميات التي يمكن أن تتعلم من البيانات وتتنبأ بها - تتغلب هذه الخوارزميات على اتباع تعليمات برنامج ثابتة بدقة من خلال إجراء تنبؤات أو قرارات تعتمد على البيانات ، من خلال بناء نموذج من مدخلات العينة.



تعلم الآلة - Spark MLlib - Edureka الشكل: أدوات التعلم الآلي

يرتبط التعلم الآلي ارتباطًا وثيقًا بالإحصاءات الحسابية ، والتي تركز أيضًا على صنع التنبؤ من خلال استخدام أجهزة الكمبيوتر. لها روابط قوية مع التحسين الرياضي ، والذي يوفر طرقًا ونظرية ومجالات تطبيق في هذا المجال. في مجال تحليلات البيانات ، يعد التعلم الآلي طريقة مستخدمة لابتكار نماذج وخوارزميات معقدة تصلح للتنبؤ الذي يُعرف في الاستخدام التجاري بالتحليلات التنبؤية.

هناك ثلاث فئات من مهام التعلم الآلي:



  1. التعلم الخاضع للإشراف : التعلم الخاضع للإشراف هو المكان الذي لديك فيه متغيرات الإدخال (x) ومتغير الإخراج (Y) وتستخدم خوارزمية لتعلم وظيفة التعيين من الإدخال إلى الإخراج.
  2. تعليم غير مشرف عليه : التعلم غير الخاضع للإشراف هو نوع من خوارزمية التعلم الآلي المستخدمة لاستخلاص الاستنتاجات من مجموعات البيانات التي تتكون من بيانات الإدخال دون استجابات مصنفة.
  3. تعزيز التعلم : برنامج كمبيوتر يتفاعل مع بيئة ديناميكية يجب أن يؤدي فيها هدفًا معينًا (مثل قيادة مركبة أو لعب لعبة ضد خصم). يتم تقديم ملاحظات للبرنامج من حيث المكافآت والعقوبات أثناء التنقل في مساحة المشكلة.هذا المفهوم يسمى التعلم المعزز.

نظرة عامة على Spark MLlib

يستخدم Spark MLlib لأداء التعلم الآلي في Apache Spark. يتكون MLlib من خوارزميات وأدوات مساعدة شائعة.

نظرة عامة على MLlib:

  • شرارة يحتوي على API الأصلي المبني على أعلى RDDs. إنه حاليًا في وضع الصيانة.
  • شرارة مل يوفر مستوى أعلى من واجهة برمجة التطبيقات المبنية على أعلى إطارات البيانات لـبناء خطوط الأنابيب ML. شرارة مل هي واجهة برمجة تطبيقات التعلم الآلي الأساسية لـ Spark في الوقت الحالي.

أدوات Spark MLlib

يوفر Spark MLlib الأدوات التالية:

  • خوارزميات ML: تشكل خوارزميات ML جوهر MLlib. وتشمل هذه خوارزميات التعلم الشائعة مثل التصنيف والانحدار والتجميع والترشيح التعاوني.
  • تميز: يتضمن التخصيص استخراج الميزات والتحويل وتقليل الأبعاد والاختيار.
  • خطوط الأنابيب: توفر خطوط الأنابيب أدوات لإنشاء وتقييم وضبط خطوط الأنابيب ML.
  • إصرار: يساعد المثابرة في حفظ الخوارزميات والنماذج وخطوط الأنابيب وتحميلها.
  • خدمات: خدماتللجبر الخطي والإحصاءات ومعالجة البيانات.

خوارزميات MLlib

الخوارزميات والأدوات المساعدة الشائعة في Spark MLlib هي:

  1. الإحصاء الأساسي
  2. تراجع
  3. تصنيف
  4. نظام التوصيات
  5. تجمع
  6. تخفيض الأبعاد
  7. ميزة استخراج
  8. الاقوي

دعونا نلقي نظرة على بعض هذه بالتفصيل.

الإحصاء الأساسي

الإحصاء الأساسي يتضمن أبسط تقنيات التعلم الآلي. وتشمل هذه:

  1. احصائيات ملخصة : تتضمن الأمثلة المتوسط ​​، التباين ، العدد ، الحد الأقصى ، الحد الأدنى ، وعدد الأصفار.
  2. الارتباطات : سبيرمان وبيرسون هما بعض الطرق لإيجاد الارتباط.
  3. اخذ العينات الطبقية : وتشمل هذه sampleBykey و sampleByKeyExact.
  4. اختبار الفرضيات : يعد اختبار مربع كاي مثالاً على اختبار الفرضيات.
  5. توليد البيانات العشوائية : يتم استخدام RandomRDDs و Normal و Poisson لتوليد بيانات عشوائية.

تراجع

تراجع التحليل هو عملية إحصائية لتقدير العلاقات بين المتغيرات. يتضمن العديد من التقنيات لنمذجة وتحليل العديد من المتغيرات عندما يكون التركيز على العلاقة بين متغير تابع ومتغير واحد أو أكثر من المتغيرات المستقلة. وبشكل أكثر تحديدًا ، يساعد تحليل الانحدار المرء على فهم كيفية تغير القيمة النموذجية للمتغير التابع عندما يتغير أي من المتغيرات المستقلة ، بينما يتم تثبيت المتغيرات المستقلة الأخرى.

يستخدم تحليل الانحدار على نطاق واسع للتنبؤ والتنبؤ ، حيث يتداخل استخدامه بشكل كبير مع مجال التعلم الآلي. يستخدم تحليل الانحدار أيضًا لفهم أي من المتغيرات المستقلة يرتبط بالمتغير التابع ، ولاستكشاف أشكال هذه العلاقات. في الظروف المقيدة ، يمكن استخدام تحليل الانحدار لاستنتاج العلاقات السببية بين المتغيرات المستقلة والتابعة.

تصنيف

تصنيف هي مشكلة تحديد أي مجموعة من الفئات (المجموعات الفرعية) تنتمي ملاحظة جديدة ، على أساس مجموعة التدريب من البيانات التي تحتوي على الملاحظات (أو الأمثلة) التي تعرف عضويتها بالفئة. إنه مثال على التعرف على الأنماط.

هنا ، من الأمثلة على ذلك تخصيص بريد إلكتروني معين في فئتي 'البريد العشوائي' أو 'غير البريد العشوائي' أو تعيين تشخيص لمريض معين كما هو موضح في الخصائص المرصودة للمريض (الجنس ، ضغط الدم ، وجود أو عدم ظهور أعراض معينة إلخ.).

نظام التوصيات

إلى نظام التوصية هي فئة فرعية من نظام تصفية المعلومات الذي يسعى إلى التنبؤ بـ 'التصنيف' أو 'التفضيل' الذي قد يمنحه المستخدم لعنصر ما. أصبحت أنظمة التوصية شائعة بشكل متزايد في السنوات الأخيرة ، ويتم استخدامها في مجموعة متنوعة من المجالات بما في ذلك الأفلام والموسيقى والأخبار والكتب والمقالات البحثية واستعلامات البحث والعلامات الاجتماعية والمنتجات بشكل عام.

عادةً ما تنتج أنظمة التوصية قائمة من التوصيات بإحدى طريقتين - من خلال التصفية التعاونية والقائمة على المحتوى أو النهج القائم على الشخصية.

  1. تصفية التعاونية نهج بناء نموذج من السلوك السابق للمستخدم (العناصر التي تم شراؤها أو تحديدها مسبقًا و / أو التقييمات الرقمية الممنوحة لهذه العناصر) بالإضافة إلى قرارات مماثلة اتخذها مستخدمون آخرون. ثم يتم استخدام هذا النموذج للتنبؤ بالعناصر (أو تصنيفات العناصر) التي قد يكون للمستخدم مصلحة فيها.
  2. التصفية على أساس المحتوى تستخدم المناهج سلسلة من الخصائص المنفصلة لعنصر ما من أجل التوصية بعناصر إضافية ذات خصائص مماثلة.

علاوة على ذلك ، غالبًا ما يتم دمج هذه الأساليب كنظم توصية مختلطة.

تجمع

تجمع هي مهمة تجميع مجموعة من الكائنات بطريقة تجعل الكائنات الموجودة في نفس المجموعة (تسمى الكتلة) أكثر تشابهًا (بمعنى أو آخر) مع بعضها البعض أكثر من تلك الموجودة في المجموعات الأخرى (المجموعات). لذلك ، فهي المهمة الرئيسية للتنقيب عن البيانات الاستكشافية ، وهي تقنية شائعة لتحليل البيانات الإحصائية ، تُستخدم في العديد من المجالات ، بما في ذلك التعلم الآلي ، والتعرف على الأنماط ، وتحليل الصور ، واسترجاع المعلومات ، والمعلوماتية الحيوية ، وضغط البيانات ، ورسومات الكمبيوتر.

تخفيض الأبعاد

تخفيض الأبعاد هي عملية تقليل عدد المتغيرات العشوائية قيد الدراسة ، من خلال الحصول على مجموعة من المتغيرات الرئيسية. يمكن تقسيمها إلى اختيار الميزة واستخراجها.

javascript الحصول على حجم المصفوفة
  1. اختيار ميزة: يبحث تحديد المعالم عن مجموعة فرعية من المتغيرات الأصلية (تسمى أيضًا السمات أو السمات).
  2. ميزة استخراج: يؤدي هذا إلى تحويل البيانات الموجودة في الفضاء عالي الأبعاد إلى مساحة ذات أبعاد أقل. قد يكون تحويل البيانات خطيًا ، كما هو الحال في تحليل المكونات الرئيسية (PCA) ، ولكن توجد أيضًا العديد من تقنيات تقليل الأبعاد غير الخطية.

ميزة استخراج

ميزة استخراج يبدأ من مجموعة أولية من البيانات المقاسة ويبني قيمًا مشتقة (ميزات) يُقصد منها أن تكون مفيدة وغير زائدة عن الحاجة ، مما يسهل خطوات التعلم والتعميم اللاحقة ، وفي بعض الحالات يؤدي إلى تفسيرات بشرية أفضل. هذا مرتبط بتقليل الأبعاد.

الاقوي

الاقوي هو اختيار الأفضلعنصر (فيما يتعلق ببعض المعايير) من مجموعة من البدائل المتاحة.

في أبسط الحالات ، تتكون مشكلة التحسين من تعظيم أو تقليل وظيفة حقيقية عن طريق اختيار قيم الإدخال بشكل منهجي من داخل مجموعة مسموح بها وحساب قيمة الوظيفة. يشمل تعميم نظرية التحسين والتقنيات على الصيغ الأخرى مساحة كبيرة من الرياضيات التطبيقية. بشكل عام ، يشمل التحسين العثور على 'أفضل القيم المتاحة' لبعض الوظائف الموضوعية في مجال محدد (أو إدخال) ،بما في ذلك مجموعة متنوعة من الوظائف الموضوعية وأنواع مختلفة من المجالات.

حالة الاستخدام - نظام توصية الفيلم

عرض المشكلة: لإنشاء نظام توصية الأفلام الذي يوصي بالأفلام بناءً على تفضيلات المستخدم باستخدام Apache Spark.

متطلباتنا:

لذلك ، دعنا نقيم متطلبات بناء نظام توصية الأفلام الخاص بنا:

  1. معالجة كمية هائلة من البيانات
  2. المدخلات من مصادر متعددة
  3. سهل الاستخدام
  4. معالجة سريعة

كما يمكننا تقييمهامتطلباتنا ، نحن بحاجة إلى أفضل أداة بيانات ضخمة لمعالجة البيانات الكبيرة في وقت قصير. لذلك ، أباتشي سبارك هي الأداة المثالية لتنفيذ نظام توصية الأفلام الخاص بنا.

دعونا الآن نلقي نظرة على مخطط التدفق لنظامنا.

كما نرى ، يستخدم ما يلي البث من Spark Streaming. يمكننا البث في الوقت الفعلي أو قراءة البيانات من Hadoop HDFS.

الحصول على مجموعة البيانات:

بالنسبة لنظام توصية الأفلام لدينا ، يمكننا الحصول على تقييمات المستخدمين من العديد من المواقع الشهيرة مثل IMDB و Rotten Tomatoes و Times Movie Ratings. تتوفر مجموعة البيانات هذه في العديد من التنسيقات مثل ملفات CSV والملفات النصية وملفاتقواعد البيانات الثانية. يمكننا إما بث البيانات مباشرة من مواقع الويب أو تنزيلها وتخزينهانظام الملفات المحلي لدينا أو HDFS.

مجموعة البيانات:

يوضح الشكل أدناه كيف يمكننا جمع مجموعة البيانات من مواقع الويب الشهيرة.

بمجرد دفق البيانات إلى Spark ، يبدو الأمر هكذا إلى حد ما.

التعلم الالي:

يعتمد نظام التوصية بالكامل على خوارزمية التعلم الآلي المربعات الصغرى بالتناوب . هنا ، ALS هو نوع من تحليل الانحدار حيث يتم استخدام الانحدار لرسم خط وسط نقاط البيانات بطريقة بحيث يتم تقليل مجموع مربعات المسافة من كل نقطة بيانات. وبالتالي ، يتم استخدام هذا الخط بعد ذلك للتنبؤ بقيم الوظيفة حيث تفي بقيمة المتغير المستقل.

الخط الأزرق في الرسم التخطيطي هو أفضل خط انحدار. بالنسبة لهذا الخط ، تكون قيمة البعد D هي الحد الأدنى. ستكون جميع الخطوط الحمراء الأخرى دائمًا بعيدة عن مجموعة البيانات ككل.

تطبيق Spark MLlib:

  1. سنستخدم التصفية التعاونية (CF) للتنبؤ بتصنيفات المستخدمين لأفلام معينة بناءً على تصنيفاتهم للأفلام الأخرى.
  2. ثم نتعاون في هذا مع تقييم المستخدمين الآخرين لهذا الفيلم بعينه.
  3. للحصول على النتائج التالية من التعلم الآلي لدينا ، نحتاج إلى استخدام DataFrame ومجموعة البيانات و SQL Service من Spark SQL.

هذا هو الكود الزائف لبرنامجنا:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // استيراد كائن الحزم الضرورية الأخرى الفيلم {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* قراءة البيانات من ملف CSV للأفلام * ') //rawData.first () val rawRatings = rawData.map (* Split rawData on tab delimiter *) val rating = rawRatings.map {* Map case array of User، Movie and Rating *} // تدريب نموذج قيمة البيانات = ALS.train (التصنيفات ، 50 ، 5 ، 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val ForecastedRating = * Predict for User 789 for movie 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* يوصى للمستخدم بالقيمة الخاصة لـ K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* قراءة بيانات قائمة الأفلام *') عناوين val = movies.map (line => line.split ('|'). خذ ( 2)). map (array => (array (0) .toInt، array (1))). collectAsMap () val titleRDD = movies.map (line => line.split ('|'). take (2) ) .map (array => (array (0) .toInt، array (1))). cache () title (123) val moviesForUser = rating. * Search for User 789 * val sqlContext = * Create SQL Context * val movies يوصى به = sqlContext. * أنشئ إطار بيانات للأفلام الموصى بها * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * فرز التصنيفات للمستخدم 789 * .map (* تعيين التصنيف إلى عنوان الفيلم *). * اطبع التقييم * نتائج val = moviesForUser.sortBy (-_. rating). خذ (30) .map (rating => (title (rating.product)، rating.rating))}}

بمجرد إنشاء التنبؤات ، يمكننا استخدام Spark SQL لتخزين النتائج في نظام RDBMS. علاوة على ذلك ، يمكن عرض هذا على تطبيق ويب.

النتائج:

الشكل: أفلام يوصى بها للمستخدم 77

يا هلا! وبذلك نجحنا في إنشاء نظام توصية للأفلام باستخدام Apache Spark. مع هذا ، قمنا بتغطية واحدة فقط من العديد من الخوارزميات الشائعة التي يقدمها Spark MLlib. سنتعرف على المزيد حول التعلم الآلي في المدونات القادمة حول خوارزميات علوم البيانات.

للمضي قدمًا ، يمكنك متابعة تعلم Apache Spark مع Spark Tutorial ، Spark Streaming Tutorial، وأسئلة سبارك للمقابلة.Edureka مكرس لتوفير أفضل تجربة تعليمية ممكنة عبر الإنترنت.

هل تحقق من أنا إذا كنت ترغب في تعلم Spark وبناء مهنة في مجال Spark وبناء الخبرة لأداء معالجة البيانات على نطاق واسع باستخدام RDD و Spark Streaming و SparkSQL و MLlib و GraphX ​​و Scala مع حالات استخدام حقيقية.