شرح نظرية بايز Baye’s – عماد التنبؤ في ال Data Science بالأمثلة

2٬065

هل تخطط لتصبح عالم بيانات data scientist؟، إذا كان جوابك نعم فأظن أنه يجب عليك قراءة هذا المقال.

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

 

في الحقيقة، نظرية بايز هي مفهوم مهم جدا في علوم البيانات، حيث لها استخدام واسع في تعلم الآلة كمصنف classifier يستخدم تصنيف Naive Bayes، كما ظهر أيضا كخوارزمية متقدمة لتطوير شبكات بايز العصبية Bayesian Neural Networks، تطبيقات نظرية بايز في كل مكان تقريبا في مجال علوم البيانات، دعنا أولا نستعرض النظرية نفسها.

  • ما هي نظرية بايز؟ 

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

أما الشكل الرياضي للنظرية فيقدم كالآتي :

Formulae for Bayes theorem

حيث :

 ال ( P( H | E هو الاحتمال الخلفي ويعني احتمالية حدوث الفرضية بمعرفة أن الدليل قد حدث بالفعل ويسمى posterior probability.

وال ( P( E | H هو احتمال حدوث الدليل بمعرفة أن الفرضية قد حدثت بالفعل ويمسى ال likelihood أو المرجح.

وال ( P( H هو احتمالية حدوث الفرضية ويمسى ال prior probability أو ذو الأولوية.

وال ( P( E هو احتمالية حدوث الدليل.

  • مثال على نظرية بايز :

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

وهذا يعني (P(Rain | Clouds حيث يمثل سقوط المطر الفرضية، واليوم الغائم هو الدليل. الآن، دعنا نفترض أننا نعلم بالفعل أن في 60% من الحالات هطول المطر تسببه الغيوم، أي أننا نعرف أن (P(clouds | rain) = P(E | H، وهذا هو الاحتمال معكوس أي احتمالية أن يكون الجو غائما بمعلومية أنها تمطر في الخارج.

ما نعلمه أيضا أن 75% من أيام الشهر تكون غائمة أي أن   0.75 =  (P(clouds ، وأنها أيضا تمطر في العادة 15 يوما من أصل 30 يوما أي 15/30 = 0.5. 

الآن لدينا كل ما نحتاجه لحساب احتمالية حدوث فرضيتنا 

((P(Rain | Cloud) = (P(Cloud | Rain) * P(Rain)) / (P(Cloud 
= 0.75 / (0.6 * 0.5) 
= 0.4

وهذا يعني أن هناك احتمالية 40% أن تسقط الأمطار إذا كان اليوم غائما.

وبفهم نظرية بايز دعنا نفهم Naive Bayes، وهي كود مكتوب للنظرية الأصلية في سياق تعلم الآلة.

  • نظرية Naive Bayes

Naive Bayes هي خوارزمية قوية للتعلم الموجه أو الSupervised Learning ، مصنف Naive Bayes هو امتداد للنظرية الأصلية التي تم شرحها بالأعلى. حيث في هذا المصنف نقوم بحساب الاحتمال الذي ساهم به كل عامل Factor.

حيث يتم استخدامها في عمليات التصنيف النصية، مثل تصنيف البريد المزعج spam، والآن دعنا نفهم كيف يقوم Naive base بحساب الاحتمال الذي ساهمت به كل العوامل.

افترض أنه قد طل منك كعالم بيانات عمل spam filter أي مرشح للتخلص من الرسائل المزعجة وأنه قد تم تقديم لك مجموعة من الكلمات keywords التي تتواجد عادة في البريد المزعج 

  • مجاني free.
  • خصم discount.
  • اتسرداد كامل full refend.
  • طاريء urgent.
  • خسارة وزن weight loss.

ومع ذلك، فأنت تعمل في شركة لتمويل المنتجات product finance، وبالتالي فبعض الكلمات التي تتواجد في البريد المزعج، يتم استخدامها في بريد عمل الشركة مثل :

  • مهم important.
  • مجاني free.
  • طاريء urgent.
  • مخازن stocks.
  • زبائن customers.

ولديك أيضا احتمالات تكرار كلمات معينة في البريد المزعج spam email، وفي بريد الشركة company email. 

 

افترض أنك حصلت على بريد يقول “برنامج مجاني لخسارة الوزن، احصل على الخصم الآن”. هل هذه الرسالة بريد مزعج أم بريد للشركة؟

دعنا نحسب احتمالية كل كلمة ظهرت في البريد

مجاني (0.4) + خسارة وزن (0.25) + خصم (0.15) = 0.8

أي أن المحصلة ل80%

أما احتمالات أن يكون البريد مبعوث من الشركة فهي تساوي : مجاني (0.25) = 25%

وبالتالي نستنتج أن احتمالية أن يكون البريد مزعجا أعلى بكثير من احتمالية أن يكون البريد تابع للشركة.

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

الاستقلال الشرطي conditional independence بين الخصائص يعطينا المعادلة أعلاه، عدد مرات تكرار الخصائص من x1 وحتى xd، والتي تم حسابها بناء على علاقتها بالclass cj إلى جانب احتمال prior probability، واحتمالية حدوث حدث ما، فيمكننا من خلال ذلك حساب الposterior probability الذي يمكننا من معرفة احتمالية انتماء البريد إلى فئة معينة(شركة أو مزعج).

  •  استخدام نظرية نايف كمصنف Classifier :

والآن، سنقوم بكتابة كود مصنف naive واستخدامه على data set، والتي ستكون Pima Indian Dataset، وهي متاحة في مكتبة ال UCI.

في البداية، سنقوم بعمل import لجميع المكتبات التي نحتاجها لكتابة كود لمصنف naive

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.naive_bayes import GaussianNB

ومن ثم نقوم بقراءة ملف ال csv عبر رابط اونلاين، باستخدام دالة read_csv التي تقدمها مكتبة الpandas

data = pd.read_csv("/home/admin1/DataFlair/Data/diabetes.csv")

من ثم نقوم بتقسيم البيانات التي لدينا ل متغيرات مستقلة (independent variables(X ومتغيرات غير مستقلة (dependent variable (Y

X = data.iloc[:, 0:8].values
y = data.iloc[:, 8].values

وباستخدام دالة( ) head  المقدمة من مكتبة pandas، نقوم بالنظر لأول 5 صفوف من الdata set

data.head()

ثم نقوم بتقسيم البيانات التي لدينا لبيانات تدريب، وبيانات تحقق من صحة التدريب. حيث سنقوم بتدريب المصنف على مجموعة من البيانات ثم اختباره على بيانات أخرى. ولعمل هذا سنستخدم دالة( ) train_test_split المقدمة من مكتبة sklearn.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

في هذه الخطوة سنقوم بتطبيق مصنف naive ولنكون أكثر دقة Gaussian Naive Bayes Classifier. وهو امتداد لمصنف نايف طبيعي يفترض أن توزيع العنصر المرجح يكون توزيع جاوس أو توزيع طبيعي normal distribution.

clf = GaussianNB() 
clf.fit(X_train, y_train)

Applying Naive Bayes Classifier

ثم نقوم بجمع الإجابات التي حصلنا عليها من test sample عينة اختبار التدريب.

y_predict = clf.predict(X_test)
print(y_predict)

ثم نقوم بحساب دقة المصنف الخاص بنا، أي كم إجابة صحيحة حصلنا عليها.

predictions3 = [np.round(value) for value in y_predict]
accuracy = accuracy_score(y_test, predictions3)
print("Accuracy: %.2f%%" % (accuracy * 100.0))

مصنفنا قام بالتنبؤ ب 72.4% بشكل صحيح!

Bayes Theorem

  • تطبيقات على نظرية بايز

1- البريد المزعجSpam Filtering :

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

2- تحليل المشاعر Sentiment Analysis :

هو جزء من Natural language processing التي تحلل إذا كانت البيانات إيجابية أو سلبية أو محايدة، المصطلحات الأخرى لتحليل المشاعر هي التنقيب عن الرأي opinion mining. حيث باستخدام Naive Bayes ، يمكننا تصنيف ما إذا كان النص موجبًا أو سالبًا أو تحديد الفئة التي ينتمي إليها شعور الشخص.

3- أنظمة التوصية Recommendation Systems :

باستخدام Naive Baye’s يمكننا بناء أنظمة توصية، حيث تقيس هذه الأنظة احتمالية مشاهدة الشخص لهذا الفيلم أو لا، بمعرفة مشاهداته السابقة. وهي تستخدم بالتزامن مع مرشحات متعاونة مع بعضها collaborative filtering لترشيح المعلومات التي ستصل للمستخدم في النهاية.

4- الشبكات العصبية لبايز Bayesian Neural Networks :

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

  • الخلاصة

وفي النهاية، نستنتج أن استخدام نظرية بايز يتم لإيجاد الاحتمال المشروط لحدث ما. بالإضافة إلى أن لديها العديد من الملحقات التي يتم استخدامها في علوم البيانات مثل Naive Bayes و Gaussian Naive Bayes و Gaussian Neural Networks وغيرها.

آمل الآن أن يكون مفهوم نظرية بايز لعلوم البيانات واضحا لك. وإذا كان هناك أي شكوك ، يمكنك أن تسأل بحرية من خلال التعليقات.

 

مصدر مصدر1
تعليقات