تعلم الآلة في R للمبتدئين مع مثال



تساعدك هذه المدونة الخاصة بالتعلم الآلي باستخدام R على تعلم المفاهيم الأساسية لتعلم الآلة وتنفيذ خوارزميات مختلفة للتعلم الآلي باستخدام R.

تعلم الآلة مع R

التعلم الآلي هو الحاضر والمستقبل! من محرك توصيات Netflix إلى سيارة Google ذاتية القيادة ، كل هذا هو التعلم الآلي. تساعدك هذه المدونة الخاصة بـ Machine Learning with R على فهم المفاهيم الأساسية للتعلم الآلي متبوعة بخوارزميات مختلفة للتعلم الآلي وتنفيذ خوارزميات التعلم الآلي هذه باستخدام R.

تتكون هذه المدونة الخاصة بـ 'Machine Learning with R' من الأقسام التالية:





التعلم الآلي مع R | إدوريكا

فهم تعلم الآلة

Fish1- تعلم الآلة باستخدام R - Edureka



كيف تعرف أن كل هؤلاء أسماك؟



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

تحويل من جافا إلى int

هذه هي الطريقة التي يعمل بها دماغنا ولكن ماذا عن الآلة؟ إذا تم تغذية آلة بالصورة نفسها ، فكيف ستعرفها الآلة على أنها سمكة؟

هنا حيث M التعلم يأتي. سنستمر في إرسال صور سمكة إلى جهاز كمبيوتر بعلامة 'الأسماك' حتى يتعلم الجهاز جميع الميزات المرتبطة مع سمك.

بمجرد أن تتعرف الآلة على جميع الميزات المرتبطة بالسمكة ، سنقوم بتزويدها ببيانات جديدة لتحديد مقدار ما تعلمته.

بعبارات أخرى، البيانات الأولية / بيانات التدريب يتم إعطاؤه للجهاز ، بحيث يكون يتعلم جميع الميزات المرتبطة بـ بيانات التدريب. بمجرد الانتهاء من التعلم ، يتم إعطاؤه بيانات جديدة / بيانات الاختبار لتحديد مدى تعلُّم الآلة.

دعنا نمضي قدمًا في مدونة Machine Learning with R هذه ونفهم أنواع التعلم الآلي.

أنواع التعلم الآلي

  • التعلم الخاضع للإشراف:

تتعلم خوارزمية التعلم الخاضع للإشراف من مجموعة بيانات معروفة (بيانات التدريب) التي تحتوي على تسميات لعمل التنبؤات.

يعد الانحدار والتصنيف بعض الأمثلة على التعلم الخاضع للإشراف.

#تصنيف:

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

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

#تراجع:

الانحدار هو خوارزمية تعلم خاضعة للإشراف تساعد في تحديد كيفية تأثير متغير واحد على متغير آخر.

هنا ، 'منطقة_العيش' هي المتغير المستقل و 'السعر' هو المتغير التابع ، أي أننا نحدد كيف يختلف 'السعر' فيما يتعلق بـ 'منطقة_المعيشة'.

  • تعليم غير مشرف عليه:

تستمد خوارزمية التعلم غير الخاضعة للإشراف الاستنتاجات من البيانات التي لا تحتوي على تسميات.

تجمع هو مثال على التعلم غير الخاضع للإشراف. 'K-mean' ، 'Hierarchical' ، 'Fuzzy C-Means' هي بعض الأمثلة على خوارزميات التجميع.

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

  • تعزيز التعلم:

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

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

تنفيذ التعلم الآلي باستخدام R:

الانحدارالخطي:

سنعمل مع مجموعة بيانات الماس لتنفيذ خوارزمية الانحدار الخطي:

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

قبل بناء أي نموذج على البيانات ، من المفترض أن نقسم البيانات إلى مجموعات 'تدريب' و 'اختبار'. سيتم بناء النموذج على مجموعة 'القطار' وسيتم التحقق من دقته في مجموعة 'الاختبار'.

نحتاج إلى تحميل حزمة 'caTools' لتقسيم البيانات إلى مجموعتين.

مكتبة (caTools)

توفر حزمة 'caTools' وظيفة 'sample.split ()' تساعد في تقسيم البيانات.

sample.split (الماس السعر بالدولار ، SplitRatio = 0.65) -> Split_index

65٪ من الملاحظات من عمود السعر تم تخصيص تصنيف 'صحيح' والبقية 35٪ تم تعيين تصنيف 'خطأ'.

مجموعة فرعية (الماس ، الفهرس المقسم == T) -> القطار مجموعة فرعية (الماس ، الفهرس المقسم == F) -> الاختبار

تم تخزين جميع الملاحظات التي تحمل التصنيف 'صحيح' في ' القطار ' وتلك الملاحظات التي تحمل تسمية 'خاطئة' تم تخصيصها لمجموعة 'الاختبار'.

الآن وبعد أن تم الانقسام ولدينا مجموعتا 'القطار' و 'الاختبار' ، فقد حان الوقت لبناء نموذج الانحدار الخطي على مجموعة التدريب.

سنستخدم الوظيفة 'lm ()' لبناء نموذج الانحدار الخطي على بيانات 'القطار'. نحن نحدد السعر من الماس فيما يتعلق بجميع المتغيرات الأخرى لمجموعة البيانات. يتم تخزين النموذج المدمج في الكائن 'mod_regress'.

lm (السعر ~. ، البيانات = القطار) -> mod_regress

الآن ، بعد أن قمنا ببناء النموذج ، نحتاج إلى عمل تنبؤات على مجموعة 'الاختبار'. يتم استخدام وظيفة 'التنبؤ ()' للحصول على تنبؤات. يأخذ حجتين: نموذج مبني و ال مجموعة الاختبار. يتم تخزين النتائج المتوقعة في كائن 'result_regress'.

توقع (mod_regress ، test) -> result_regress

دعونا نربط قيم السعر الفعلية من مجموعة بيانات 'الاختبار' والقيم المتوقعة في مجموعة بيانات واحدة باستخدام وظيفة 'cbind ()'. يتم تخزين إطار البيانات الجديد في 'Final_Data'

cbind (الفعلي = سعر الاختبار بالدولار ، المتوقع = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

نظرة سريعة على 'Final_Data' التي تتكون من القيم الفعلية والقيم المتوقعة:

القيود في SQL مع مثال

لنجد الخطأ عن طريق طرح القيم المتوقعة من القيم الفعلية وإضافة هذا الخطأ كعمود جديد إلى 'Final_Data':

(Final_Data $ Actual- Final_Data $ Predicted) -> خطأ
cbind (Final_Data ، خطأ) -> Final_Data

نظرة سريعة على 'Final_Data' التي تتكون أيضًا من الخطأ في التنبؤ:

الآن ، سنمضي قدمًا ونحسب ' جذر متوسط ​​مربع الخطأ ' مما يعطي خطأ إجمالي لجميع التوقعات

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

للمضي قدمًا ، فلنقم ببناء نموذج آخر ، حتى نتمكن من مقارنة دقة كلا النموذجين وتحديد أيهما أفضل.

سنقوم ببناء نموذج انحدار خطي جديد في مجموعة 'القطار' ولكن هذه المرة ، سنقوم بإسقاط عمودي 'x' و 'y' من المتغيرات المستقلة ، أي يتم تحديد 'سعر' الماس بواسطة جميع أعمدة باستثناء 'x' و 'y'.

يتم تخزين النموذج المبني في 'mod_regress2':

lm (السعر ~.-y-z ، البيانات = القطار) -> mod_regress2

يتم تخزين النتائج المتوقعة في 'result_regress2'

توقع (mod_regress2، test) -> result_regress2

يتم دمج القيم الفعلية والمتوقعة وتخزينها في 'Final_Data2':

cbind (الفعلي = سعر الاختبار بالدولار ، المتوقع = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

لنضيف أيضًا الخطأ في التنبؤ إلى 'Final_Data2'

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2 ، error2) -> Final_Data2

لمحة عن 'Final_Data2':

البحث عن خطأ مربع متوسط ​​الجذر للحصول على الخطأ الكلي:

rmse2<-sqrt(mean(Final_Data2$error^2))

نرى أن 'rmse2' أقل بقليل من 'rmse1' وبالتالي فإن النموذج الثاني أفضل بشكل هامشي من النموذج الأول.

تصنيف:

سنعمل مع مجموعة بيانات 'car_purchase' للتنفيذ التقسيم العودي وهي خوارزمية التصنيف.

دعنا نقسم البيانات إلى مجموعات 'تدريب' و 'اختبار' باستخدام دالة 'sample.split ()' من حزمة 'caTools'.

مكتبة (caTools)

65٪ من الملاحظات من عمود 'مشتراة' سيتم تعيين تسميات 'صواب' والباقي سيتم تعيين تسميات 'FALSE'.

sample.split (car_purchase $ المشترى ، SplitRatio = 0.65) -> split_values

سيتم تخزين جميع الملاحظات التي تحمل تسمية 'TRUE' في بيانات 'القطار' وسيتم تعيين تلك الملاحظات التي تحمل تسمية 'FALSE' إلى بيانات 'الاختبار'.

مجموعة فرعية (car_purchase، split_values ​​== T) -> train_data
مجموعة فرعية (car_purchase، split_values ​​== F) -> test_data

حان الوقت لبناء خوارزمية التقسيم العودي:

سنبدأ بتحميل الحزمة 'rpart':

مكتبة (rpart)

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

rpart (تم شراؤها ~. ، البيانات = بيانات_قطار) -> mod1

دعونا نرسم النتيجة:

قطعة الأرض (تعديل 1 ، هامش = 0.1) نص (تعديل 1 ، جميل = T ، cex = 0.8)

الآن ، دعونا نمضي قدمًا ونتوقع النتائج على 'test_data'. نحن نعطي نموذج rpart المبني 'mod1' باعتباره الوسيطة الأولى ، مجموعة الاختبار 'test_data' باعتبارها الوسيطة الثانية ونوع التنبؤ كـ 'class' للوسيطة الثالثة. يتم تخزين النتيجة في كائن 'result1'.

توقع (mod1، test_data، type = 'class') -> result1

دعونا نقيم دقة النموذج باستخدام وظيفة 'confusionMatrix ()' من حزمة علامة الإقحام.

مكتبة (علامة الإقحام) confusionMatrix (جدول (test_data $ تم شراؤه ، نتيجة 1))

تخبرنا مصفوفة الارتباك أنه من بين 90 ملاحظة لم يشتر فيها الشخص السيارة ، تم تصنيف 79 ملاحظة بشكل صحيح على أنها 'لا' وتم تصنيف 11 ملاحظة خطأ على أنها 'نعم'. وبالمثل ، من بين 50 ملاحظة اشترى فيها الشخص السيارة بالفعل ، تم تصنيف 47 بشكل صحيح على أنها 'نعم' و 3 تم تصنيفها خطأ على أنها 'لا'.

يمكننا إيجاد دقة النموذج من خلال قسمة التنبؤات الصحيحة بإجمالي التنبؤات (79 + 47) / (79 + 47 + 11 + 3).

K- يعني التجميع:

سنعمل مع مجموعة بيانات 'قزحية العين' لتنفيذ تجميع الوسائل k:

دعنا نزيل عمود 'الأنواع' وننشئ مجموعة بيانات جديدة تشتمل فقط على الأعمدة الأربعة الأولى من مجموعة بيانات 'القزحية'.

القزحية [1: 4] -> iris_k

لنأخذ عدد المجموعات ليكون 3. تأخذ وظيفة 'Kmeans ()' بيانات الإدخال وعدد المجموعات التي سيتم تجميع البيانات فيها. الصيغة هي: kmeans (data، k) حيث k هو عدد مراكز الكتلة.

كمينز (iris_k ، 3) -> k1

تحليل التجميع:

شارع (k1)

تعطي الدالة str () هيكل kmeans الذي يتضمن معلمات مختلفة مثل withinss و betweenss وما إلى ذلك ، والتحليل الذي يمكنك معرفة أداء kmeans.

بين مجموع المربعات ، أي تشابه Intracluster

withinss: ضمن مجموع مربع أي التشابه بين المجموعات

totwithinss: مجموع جميع الأجزاء الداخلية لجميع المجموعات ، أي إجمالي التشابه داخل الكتلة

سيكون للتكتل الجيد قيمة أقل لـ 'tot.withinss' وقيمة أعلى لـ 'بين' التي تعتمد على عدد المجموعات 'k' المختارة في البداية.

لقد حان الوقت لتصبح خبيرًا في تعلم الآلة للاستفادة من الفرص الجديدة التي تأتي في طريقك. هذا يقودنا إلى نهاية هذا ' تعلم الآلة مع R ' مدونة. آمل أن تكون هذه المدونة مفيدة ومثمرة.

Edureka لديها برعاية خاصة مما يساعدك على اكتساب الخبرة في خوارزميات التعلم الآلي مثل K-Means Clustering و Decision Trees و Random Forest و Naive Bayes. سوف تتعلم مفاهيم الإحصاء ، والسلاسل الزمنية ، واستخراج النص ومقدمة إلى التعلم العميق أيضًا. دفعات جديدة لهذه الدورة ستبدأ قريبًا !!