1.9. خوارزميات بايز الساذجة#
خوارزميات بايز الساذجة هي مجموعة من خوارزميات التعلم الخاضع للإشراف
تستند إلى تطبيق نظرية بايز "الساذجة" للافتراض "الساذج" للاستقلال الشرطي
بين كل زوج من الميزات بالنظر إلى قيمة متغير الفئة. تنص نظرية بايز على العلاقة التالية،
نظرًا لمتغير الفئة:math:y
والميزة التابعة المتجه:math:x_1
من خلال:math:x_n
،:
باستخدام افتراض الاستقلال الشرطي الساذج الذي
لكل:math:i
، يتم تبسيط هذه العلاقة إلى
نظرًا لأن:math:P(x_1, dots, x_n)
ثابت بالنظر إلى الإدخال،
يمكننا استخدام قاعدة التصنيف التالية:
ويمكننا استخدام تقدير أقصى احتمال لاحق (MAP) لتقدير
\(P(y)\) و:math:P(x_i mid y)
؛
الأخير هو التردد النسبي للفئة:math:y
في مجموعة التدريب.
تختلف خوارزميات بايز الساذجة المختلفة بشكل أساسي بالافتراضات التي
يقومون بها فيما يتعلق بتوزيع:math:P(x_i mid y)
.
على الرغم من افتراضاتها التي تبدو مفرطة في التبسيط، فقد عملت خوارزميات بايز الساذجة بشكل جيد جدًا في العديد من الحالات الواقعية، وخاصة تصنيف المستندات وتصفية الرسائل غير المرغوب فيها. تتطلب كمية صغيرة من بيانات التدريب لتقدير المعلمات اللازمة. (للأسباب النظرية التي تجعل بايز الساذج يعمل بشكل جيد، وعلى أي أنواع البيانات التي يفعلها، راجع المراجع أدناه.)
يمكن أن تكون خوارزميات بايز الساذجة والمتعلمين سريعة للغاية مقارنة بالأساليب الأكثر تطوراً. يعني فصل توزيعات الفئة الشرطية أن كل يمكن تقدير التوزيع كبعد أحادي. هذا بدوره يساعد على تخفيف المشاكل الناجمة عن لعنة الأبعاد.
على الجانب الآخر، على الرغم من أن بايز الساذج معروف كمصنف جيد، إنه معروف بأنه مقدر سيء، لذا لا ينبغي أخذ احتمالات الإخراج من "predict_proba" على محمل الجد.
مراجع#
H. Zhang (2004). The optimality of Naive Bayes. Proc. FLAIRS.
1.9.1. خوارزمية بايز الساذجة الغاوسية#
GaussianNB
تنفذ خوارزمية بايز الساذجة الغاوسية للتصنيف. يفترض أن احتمال الميزات غاوسي:
يتم تقدير المعلمات:math:sigma_y
و:math:mu_y
باستخدام أقصى احتمال.
>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.naive_bayes import GaussianNB
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
>>> gnb = GaussianNB()
>>> y_pred = gnb.fit(X_train, y_train).predict(X_test)
>>> print("Number of mislabeled points out of a total %d points : %d"
... % (X_test.shape[0], (y_test != y_pred).sum()))
Number of mislabeled points out of a total 75 points : 4
1.9.2. خوارزمية بايز الساذجة متعددة الحدود#
MultinomialNB
تنفذ خوارزمية بايز الساذجة للبيانات متعددة الحدود، وهي واحدة من متغيرين بايز الساذجة الكلاسيكيين المستخدمين في
تصنيف النصوص (حيث يتم تمثيل البيانات عادةً كمؤشرات متجه الكلمات، على الرغم من أن متجهات tf-idf معروفة أيضًا بالعمل بشكل جيد في الممارسة العملية).
يتم معلمته بواسطة المتجهات
\(\theta_y = (\theta_{y1},\ldots,\theta_{yn})\)
لكل فئة:math:y
، حيث:math:n
هو عدد الميزات
(في تصنيف النصوص، حجم المفردات)
و:math:theta_{yi}
هو الاحتمال:math:P(x_i mid y)
لميزة:math:i
التي تظهر في عينة تنتمي إلى الفئة:math:y
.
يتم تقدير المعلمات:math:theta_y
بواسطة نسخة ملساء
من أقصى احتمال، أي العد النسبي:
حيث:math:N_{yi} = sum_{x in T} x_i
هو
عدد المرات التي تظهر فيها الميزة:math:i
في عينة من الفئة:math:y
في مجموعة التدريب:math:T
،
و:math:N_{y} = sum_{i=1}^{n} N_{yi}
هو العدد الإجمالي
لجميع الميزات للفئة:math:y
.
تأخذ معلمات التمهيد:math:alpha ge 0
في الاعتبار
الميزات غير الموجودة في عينات التعلم وتمنع الاحتمالات الصفرية
في الحسابات اللاحقة.
يُطلق على تعيين:math:alpha = 1
اسم التمهيد Laplace،
في حين أن:math:alpha < 1
يُطلق عليه اسم التمهيد Lidstone.
1.9.3. خوارزمية بايز الساذجة التكميلية#
ComplementNB
تنفذ خوارزمية بايز الساذجة التكميلية (CNB).
CNB هو تكيف لخوارزمية بايز الساذجة متعددة الحدود (MNB)
التي تناسب بشكل خاص مجموعات البيانات غير المتوازنة. على وجه التحديد، يستخدم CNB
إحصاءات من تكملة كل فئة لحساب أوزان النموذج. يظهر مخترعو CNB تجريبيًا أن تقديرات المعلمات لـ CNB
أكثر استقرارًا من تلك الخاصة بـ MNB. علاوة على ذلك، يتفوق CNB بشكل منتظم على MNB (غالبًا
بهامش كبير) في مهام تصنيف النصوص.
حساب الأوزان#
تتمثل الإجراءات لحساب الأوزان فيما يلي:
حيث يتم إجراء عمليات الجمع على جميع المستندات:math:j
غير الموجودة في الفئة:math:c
،
\(d_{ij}\) هو إما عدد أو قيمة tf-idf للمصطلح:math:i
في المستند
\(j\)، \(\alpha_i\) هو معلمة التمهيد مثل تلك الموجودة في
MNB، و:math:alpha = sum_{i} alpha_i
. يعالج التطبيع الثاني
ميل المستندات الأطول إلى الهيمنة على تقديرات المعلمات في MNB. قاعدة التصنيف هي:
أي، يتم تعيين مستند إلى الفئة التي هي أفقر تكملة المطابقة.
مراجع#
Rennie, J. D., Shih, L., Teevan, J., & Karger, D. R. (2003). Tackling the poor assumptions of naive bayes text classifiers. In ICML (Vol. 3, pp. 616-623).
1.9.4. خوارزمية بايز الساذجة متعددة الحدود#
BernoulliNB
تنفذ خوارزميات بايز الساذجة للتدريب والتصنيف
لبيانات موزعة وفقًا لتوزيعات متعددة الحدود؛ أي، قد يكون هناك العديد من الميزات ولكن يُفترض أن كل منها
قيمة ثنائية (بيرنولي، منطقية).
تستند قاعدة القرار لبايز الساذج متعدد الحدود إلى
والذي يختلف عن قاعدة بايز الساذج متعددة الحدود
في أنه يعاقب صراحةً على عدم حدوث ميزة:math:i
التي هي مؤشر للفئة:math:y
،
حيث تتجاهل المتغيرات متعددة الحدود غياب ميزة.
في حالة تصنيف النصوص، قد تستخدم متجهات حدوث الكلمات (بدلاً من متجهات عدد الكلمات) لتدريب وتصنيف هذا المصنف. BernoulliNB
قد يؤدي أداء أفضل على بعض مجموعات البيانات، خاصة تلك ذات المستندات الأقصر.
من المستحسن تقييم كلا النموذجين، إذا سمح الوقت بذلك.
مراجع#
C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265.
A. McCallum and K. Nigam (1998). A comparison of event models for Naive Bayes text classification. Proc. FLAIRS-98 Workshop on Learning for Text Categorization, pp. 41-48.
V. Metsis, I. Androutsopoulos and G. Paliouras (2006). Spam filtering with Naive Bayes -- Which Naive Bayes? 3rd Conf. on Email and Anti-Spam (CEAS).
1.9.5. خوارزمية بايز الساذجة التصنيفية#
CategoricalNB
تنفذ خوارزمية بايز الساذجة
للبيانات التصنيفية. يفترض أن كل ميزة،
التي يتم وصفها بواسطة الفهرس:math:i
، لها توزيعها التصنيفي الخاص.
بالنسبة لكل ميزة:math:i
في مجموعة التدريب:math:X
،
CategoricalNB
يقدر توزيعًا تصنيفيًا لكل ميزة i
من X مشروطة على الفئة y. يتم تعريف مجموعة فهرس العينات على أنها
\(J\)، مع:math:m
كعدد العينات.
حساب الاحتمال#
يتم تقدير احتمال الفئة:math:t
في الميزة:math:i
بالنظر إلى الفئة
\(c\) كما يلي:
حيث:math:N_{tic} = |{j in J mid y_j = c}|
هو عدد
المرات التي تظهر فيها الفئة:math:t
في العينات:math:x_{i}
، والتي تنتمي
إلى الفئة:math:c
، \(N_{c} = |\{ j \in J\mid y_j = c\}|\) هو عدد العينات
الفئة c، \(n_i\) هو عدد الفئات المتاحة
للميزة:math:i
.
CategoricalNB
يفترض أن مصفوفة العينة:math:X
مشفرة (على سبيل المثال بمساعدة:class:~sklearn.preprocessing.OrdinalEncoder
)
بحيث يتم تمثيل جميع الفئات لكل ميزة:math:i
بالأرقام
\(0, ..., n_i - 1\) حيث:math:n_i
هو عدد الفئات المتاحة
للميزة:math:i
.
1.9.6. نموذج بايز الساذج خارج النواة#
يمكن استخدام نماذج بايز الساذجة لمعالجة مشاكل التصنيف واسعة النطاق
بالنسبة للتي قد لا تتسع مجموعة التدريب بالكامل في الذاكرة. لمعالجة هذه الحالة،
MultinomialNB
، و:class:BernoulliNB
، و:class:GaussianNB
تعرض طريقة "partial_fit" التي يمكن استخدامها
بشكل متزايد كما هو الحال مع المصنفات الأخرى كما هو موضح في
Out-of-core classification of text documents. جميع مصنفات بايز الساذجة
تدعم وزن العينة.
على عكس طريقة "fit"، تحتاج المكالمة الأولى لـ "partial_fit" إلى تمرير قائمة بجميع التصنيفات المتوقعة.
للاطلاع على نظرة عامة على الاستراتيجيات المتاحة في scikit-learn، راجع أيضًا out-of-core learning الوثائق.
ملاحظة
تُدخل طريقة "partial_fit" لنموذج بايز الساذج بعض النفقات العامة الحسابية. يوصى باستخدام أحجام بيانات الشرائح التي تكون كبيرة قدر الإمكان، أي كما يسمح بها RAM المتاح.