logo

خوارزمية تصنيف ساذجة بايز

  • خوارزمية Naïve Bayes هي خوارزمية تعلم خاضعة للإشراف، والتي تعتمد على مبرهنة بايز وتستخدم لحل مشاكل التصنيف.
  • يتم استخدامه بشكل رئيسي في تصنيف النص يتضمن مجموعة بيانات تدريب عالية الأبعاد.
  • يعد Naïve Bayes Classifier أحد خوارزميات التصنيف البسيطة والأكثر فعالية والتي تساعد في بناء نماذج التعلم الآلي السريعة التي يمكنها إجراء تنبؤات سريعة.
  • إنه مصنف احتمالي، مما يعني أنه يتنبأ على أساس احتمالية كائن ما.
  • بعض الأمثلة الشائعة لخوارزمية Naïve Bayes هي تصفية البريد العشوائي والتحليل العاطفي وتصنيف المقالات .

لماذا يطلق عليه ساذج بايز؟

تتكون خوارزمية Naïve Bayes من كلمتين Naïve وBayes، والتي يمكن وصفها على النحو التالي:

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

مبرهنة بايز:

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

أين،

P(A|B) هو الاحتمال الخلفي : احتمال الفرضية أ على الحدث المرصود ب.

P(B|A) هو احتمال الاحتمال : احتمال الدليل بشرط صحة احتمال الفرضية.

P(A) هو الاحتمال المسبق : احتمال الفرضية قبل ملاحظة الأدلة.

P(B) هو الاحتمال الهامشي : احتمال الأدلة.

عمل مصنف Naïve Bayes:

يمكن فهم عمل مصنف Naïve Bayes بمساعدة المثال التالي:

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

لحلقة جافا
  1. تحويل مجموعة البيانات المحددة إلى جداول تكرارية.
  2. إنشاء جدول الاحتمالية من خلال إيجاد احتمالات الميزات المحددة.
  3. الآن، استخدم نظرية بايز لحساب الاحتمال الخلفي.

مشكلة : إذا كان الطقس مشمسا فهل يجب على اللاعب أن يلعب أم لا؟

حل : لحل هذه المشكلة، فكر أولاً في مجموعة البيانات التالية:

الآفاق يلعب
0 ماطر نعم
1 مشمس نعم
2 غائم نعم
3 غائم نعم
4 مشمس لا
5 ماطر نعم
6 مشمس نعم
7 غائم نعم
8 ماطر لا
9 مشمس لا
10 مشمس نعم
أحد عشر ماطر لا
12 غائم نعم
13 غائم نعم

الجدول الترددي للأحوال الجوية:

طقس نعم لا
غائم 5 0
ماطر 2 2
مشمس 3 2
المجموع 10 5

جدول احتمالية حالة الطقس:

طقس لا نعم
غائم 0 5 5/14= 0.35
ماطر 2 2 4/14=0.29
مشمس 2 3 5/14=0.35
الجميع 4/14=0.29 10/14=0.71

تطبيق نظرية بايز:

P(نعم|مشمس)= P(مشمس|نعم)*P(نعم)/P(مشمس)

P(مشمس|نعم)= 3/10= 0.3

ف(مشمس)= 0.35

ف (نعم) = 0.71

ما هي الأشهر q3

إذًا P(نعم|مشمس) = 0.3*0.71/0.35= 0.60

P(لا|مشمس)= P(مشمس|لا)*P(لا)/P(مشمس)

P(مشمس|NO)= 2/4=0.5

ف(لا)= 0.29

ف(مشمس)= 0.35

إذًا P(لا|مشمس)= 0.5*0.29/0.35 = 0.41

طريقة جافا الرئيسية

لذلك كما يمكننا أن نرى من الحساب أعلاه أن P(نعم|مشمس)>P(لا|مشمس)

وبالتالي، في يوم مشمس، يمكن للاعب أن يلعب اللعبة.

مزايا مصنف Naïve Bayes:

  • تعد Naïve Bayes واحدة من خوارزميات تعلم الآلة السريعة والسهلة للتنبؤ بفئة من مجموعات البيانات.
  • يمكن استخدامه للتصنيفات الثنائية وكذلك التصنيفات متعددة الفئات.
  • إنه يؤدي أداءً جيدًا في التنبؤات متعددة الفئات مقارنةً بالخوارزميات الأخرى.
  • إنه الخيار الأكثر شيوعًا لـ مشاكل تصنيف النص .

مساوئ مصنف Naïve Bayes:

  • يفترض Naive Bayes أن جميع الميزات مستقلة أو غير مرتبطة، لذلك لا يمكنه معرفة العلاقة بين الميزات.

تطبيقات مصنف Naïve Bayes:

  • يتم استخدامه ل سجل الائتمان .
  • يتم استخدامه في تصنيف البيانات الطبية .
  • يمكن استخدامه في التنبؤات في الوقت الحقيقي لأن Naïve Bayes Classifier متعلم متحمس.
  • يتم استخدامه في تصنيف النص مثل تصفية البريد العشوائي و تحليل المشاعر .

أنواع نموذج ساذج بايز:

هناك ثلاثة أنواع من نموذج Naive Bayes، وهي مذكورة أدناه:

    غاوسي: يفترض النموذج الغوسي أن المعالم تتبع التوزيع الطبيعي. وهذا يعني أنه إذا أخذ المتنبئون قيمًا مستمرة بدلاً من قيم منفصلة، ​​فإن النموذج يفترض أن هذه القيم تم أخذ عينات منها من التوزيع الغوسي.متعدد الحدود: يتم استخدام المصنف Naïve Bayes متعدد الحدود عندما يتم توزيع البيانات متعددة الحدود. يتم استخدامه بشكل أساسي لمشاكل تصنيف المستندات، ويعني أن مستندًا معينًا ينتمي إلى فئة معينة مثل الرياضة والسياسة والتعليم وما إلى ذلك.
    يستخدم المصنف تكرار الكلمات للتنبؤ.برنولي: يعمل مصنف برنولي بشكل مشابه للمصنف متعدد الحدود، لكن المتغيرات المتوقعة هي متغيرات منطقية مستقلة. كما لو كانت كلمة معينة موجودة أم لا في المستند. يشتهر هذا النموذج أيضًا بمهام تصنيف المستندات.

تنفيذ بايثون لخوارزمية Naïve Bayes:

سنقوم الآن بتنفيذ خوارزمية Naive Bayes باستخدام لغة Python. ولهذا، سوف نستخدم ' بيانات المستخدم ' dataset ، والذي استخدمناه في نموذج التصنيف الآخر الخاص بنا. لذلك يمكننا بسهولة مقارنة نموذج Naive Bayes مع النماذج الأخرى.

خطوات التنفيذ:

  • خطوة المعالجة المسبقة للبيانات
  • تركيب Naive Bayes على مجموعة التدريب
  • التنبؤ بنتيجة الاختبار
  • دقة اختبار النتيجة (إنشاء مصفوفة الارتباك)
  • تصور نتيجة مجموعة الاختبار.

1) خطوة المعالجة المسبقة للبيانات:

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

 Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd # Importing the dataset dataset = pd.read_csv('user_data.csv') x = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() x_train = sc.fit_transform(x_train) x_test = sc.transform(x_test) 

في الكود أعلاه، قمنا بتحميل مجموعة البيانات في برنامجنا باستخدام ' مجموعة البيانات = pd.read_csv('user_data.csv') . يتم تقسيم مجموعة البيانات المحملة إلى مجموعة تدريب واختبار، ثم قمنا بقياس متغير الميزة.

يتم إعطاء الإخراج لمجموعة البيانات على النحو التالي:

خوارزمية تصنيف ساذجة بايز 1

2) تركيب Naive Bayes على مجموعة التدريب:

بعد خطوة المعالجة المسبقة، سنقوم الآن بملاءمة نموذج Naive Bayes مع مجموعة التدريب. أدناه هو رمز لذلك:

 # Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train) 

في الكود أعلاه استخدمنا المصنف GaussianNB لملاءمتها مع مجموعة بيانات التدريب. يمكننا أيضًا استخدام مصنفات أخرى وفقًا لمتطلباتنا.

انتاج:

 Out[6]: GaussianNB(priors=None, var_smoothing=1e-09) 

3) التنبؤ بنتيجة مجموعة الاختبار:

الآن سوف نتنبأ بنتيجة مجموعة الاختبار. لهذا، سوف نقوم بإنشاء متغير توقع جديد y_pred ، وسوف تستخدم وظيفة التنبؤ لإجراء التنبؤات.

مستودع مخضرم
 # Predicting the Test set results y_pred = classifier.predict(x_test) 

انتاج:

خوارزمية تصنيف ساذجة بايز 2

يُظهر الإخراج أعلاه نتيجة متجه التنبؤ y_pred وناقل حقيقي y_test. يمكننا أن نرى أن بعض التوقعات تختلف عن القيم الحقيقية، وهي التنبؤات غير الصحيحة.

4) إنشاء مصفوفة الارتباك:

الآن سوف نتحقق من دقة مصنف Naive Bayes باستخدام مصفوفة الارتباك. أدناه هو رمز لذلك:

 # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) 

انتاج:

خوارزمية تصنيف ساذجة بايز 3

كما نرى في ناتج مصفوفة الارتباك أعلاه، هناك 7+3=10 تنبؤات غير صحيحة، و65+25=90 تنبؤات صحيحة.

5) تصور نتيجة مجموعة التدريب:

بعد ذلك، سنقوم بتصور نتيجة مجموعة التدريب باستخدام Nave Bayes Classifier. أدناه هو رمز لذلك:

 # Visualising the Training set results from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

انتاج:

خوارزمية تصنيف ساذجة بايز 4

في المخرجات أعلاه يمكننا أن نرى أن مصنف Nave Bayes قد قام بفصل نقاط البيانات بالحدود الدقيقة. وهو منحنى غاوسي كما استخدمنا جاوسيان بي المصنف في الكود الخاص بنا.

6) تصور نتيجة مجموعة الاختبار:

 # Visualising the Test set results from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

انتاج:

خوارزمية تصنيف ساذجة بايز 5

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