1.9. خوارزميات بايز الساذجة#

خوارزميات بايز الساذجة هي مجموعة من خوارزميات التعلم الخاضع للإشراف تستند إلى تطبيق نظرية بايز "الساذجة" للافتراض "الساذج" للاستقلال الشرطي بين كل زوج من الميزات بالنظر إلى قيمة متغير الفئة. تنص نظرية بايز على العلاقة التالية، نظرًا لمتغير الفئة:math:y والميزة التابعة المتجه:math:x_1 من خلال:math:x_n،:

\[P(y \mid x_1, \dots, x_n) = \frac{P(y) P(x_1, \dots, x_n \mid y)} {P(x_1, \dots, x_n)}\]

باستخدام افتراض الاستقلال الشرطي الساذج الذي

\[P(x_i | y, x_1, \dots, x_{i-1}, x_{i+1}, \dots, x_n) = P(x_i | y),\]

لكل:math:i، يتم تبسيط هذه العلاقة إلى

\[P(y \mid x_1, \dots, x_n) = \frac{P(y) \prod_{i=1}^{n} P(x_i \mid y)} {P(x_1, \dots, x_n)}\]

نظرًا لأن:math:P(x_1, dots, x_n) ثابت بالنظر إلى الإدخال، يمكننا استخدام قاعدة التصنيف التالية:

\[ \begin{align}\begin{aligned}P(y \mid x_1, \dots, x_n) \propto P(y) \prod_{i=1}^{n} P(x_i \mid y)\\\Downarrow\\\hat{y} = \arg\max_y P(y) \prod_{i=1}^{n} P(x_i \mid y),\end{aligned}\end{align} \]

ويمكننا استخدام تقدير أقصى احتمال لاحق (MAP) لتقدير \(P(y)\) و:math:P(x_i mid y)؛ الأخير هو التردد النسبي للفئة:math:y في مجموعة التدريب.

تختلف خوارزميات بايز الساذجة المختلفة بشكل أساسي بالافتراضات التي يقومون بها فيما يتعلق بتوزيع:math:P(x_i mid y).

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

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

على الجانب الآخر، على الرغم من أن بايز الساذج معروف كمصنف جيد، إنه معروف بأنه مقدر سيء، لذا لا ينبغي أخذ احتمالات الإخراج من "predict_proba" على محمل الجد.

مراجع#

1.9.1. خوارزمية بايز الساذجة الغاوسية#

GaussianNB تنفذ خوارزمية بايز الساذجة الغاوسية للتصنيف. يفترض أن احتمال الميزات غاوسي:

\[P(x_i \mid y) = \frac{1}{\sqrt{2\pi\sigma^2_y}} \exp\left(-\frac{(x_i - \mu_y)^2}{2\sigma^2_y}\right)\]

يتم تقدير المعلمات: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 بواسطة نسخة ملساء من أقصى احتمال، أي العد النسبي:

\[\hat{\theta}_{yi} = \frac{ N_{yi} + \alpha}{N_y + \alpha n}\]

حيث: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 (غالبًا بهامش كبير) في مهام تصنيف النصوص.

حساب الأوزان#

تتمثل الإجراءات لحساب الأوزان فيما يلي:

\[ \begin{align}\begin{aligned}\hat{\theta}_{ci} = \frac{\alpha_i + \sum_{j:y_j \neq c} d_{ij}} {\alpha + \sum_{j:y_j \neq c} \sum_{k} d_{kj}}\\w_{ci} = \log \hat{\theta}_{ci}\\w_{ci} = \frac{w_{ci}}{\sum_{j} |w_{cj}|}\end{aligned}\end{align} \]

حيث يتم إجراء عمليات الجمع على جميع المستندات:math:j غير الموجودة في الفئة:math:c، \(d_{ij}\) هو إما عدد أو قيمة tf-idf للمصطلح:math:i في المستند \(j\)، \(\alpha_i\) هو معلمة التمهيد مثل تلك الموجودة في MNB، و:math:alpha = sum_{i} alpha_i. يعالج التطبيع الثاني ميل المستندات الأطول إلى الهيمنة على تقديرات المعلمات في MNB. قاعدة التصنيف هي:

\[\hat{c} = \arg\min_c \sum_{i} t_i w_{ci}\]

أي، يتم تعيين مستند إلى الفئة التي هي أفقر تكملة المطابقة.

مراجع#

1.9.4. خوارزمية بايز الساذجة متعددة الحدود#

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

تستند قاعدة القرار لبايز الساذج متعدد الحدود إلى

\[P(x_i \mid y) = P(x_i = 1 \mid y) x_i + (1 - P(x_i = 1 \mid y)) (1 - x_i)\]

والذي يختلف عن قاعدة بايز الساذج متعددة الحدود في أنه يعاقب صراحةً على عدم حدوث ميزة:math:i التي هي مؤشر للفئة:math:y، حيث تتجاهل المتغيرات متعددة الحدود غياب ميزة.

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

مراجع#

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

CategoricalNB تنفذ خوارزمية بايز الساذجة للبيانات التصنيفية. يفترض أن كل ميزة، التي يتم وصفها بواسطة الفهرس:math:i، لها توزيعها التصنيفي الخاص.

بالنسبة لكل ميزة:math:i في مجموعة التدريب:math:X، CategoricalNB يقدر توزيعًا تصنيفيًا لكل ميزة i من X مشروطة على الفئة y. يتم تعريف مجموعة فهرس العينات على أنها \(J\)، مع:math:m كعدد العينات.

حساب الاحتمال#

يتم تقدير احتمال الفئة:math:t في الميزة:math:i بالنظر إلى الفئة \(c\) كما يلي:

\[P(x_i = t \mid y = c \: ;\, \alpha) = \frac{ N_{tic} + \alpha}{N_{c} + \alpha n_i},\]

حيث: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 المتاح.