أنواع التصنيف

24 دقيقة
الكتلة 2 — تحديد المسألة
الهدف
القدرة على تأهيل مهمة تصنيف بدقة، وتمييز الأنواع المعيارية الأربعة — ثنائي، متعدد الفئات، ترتيبي، متعدد الوسوم — انطلاقاً من شكل المتغير الهدف، ومعرفة نتائج كل نوع على اختيار الخوارزمية والمقاييس، ورفع غموض تسمية الانحدار اللوجستي نهائياً.
المدة المقدَّرة
40 دقيقة
المتطلبات السابقة
الفصول 001 إلى 010
الاختبارات المرتبطة
من 011.1-quiz-qualification-tache.md إلى 011.7-quiz-synthese-comparative.md

1. تأهيل مهمة تصنيف: ثلاثة أسئلة مميّزة

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

تعريف — مهمة تصنيف

التعريف الدقيق

ليكن فضاء مدخل X ومجموعة منتهية من الوسوم C = {c_1, ..., c_K} عددها K ≥ 2. تقوم مهمة تصنيف على استقراء، انطلاقاً من عيّنة {(x_i, y_i)}, i = 1..n، دالة قرار f : X → Y فضاء وصولها Y مبني على C وفق إحدى بنائين، يؤسسان تجزئة هذا الفصل:

  • Y = C — تتلقى كل ملاحظة وسماً واحداً بالضبط من بين K. وتُدعى المسألة بوسم وحيد (single-label).
  • Y = {0, 1}^K، مجموعة أجزاء C — تتلقى كل ملاحظة مجموعة جزئية أيّاً كانت من الوسوم، فارغة أحياناً. وتُدعى المسألة متعددة الوسوم.

ترجمة إلى اللغة اليومية

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

نقطة انتباه

تُفترَض قائمة الوسوم مغلقة ومعروفة عند التدريب. ولا يمكن لمصنِّف التنبؤ بفئة لم يرصدها قط؛ وإدارة الفئات غير المسبوقة تندرج تحت كشف الشذوذ (الفصل 003).

1.1 الأسئلة الثلاثة، بهذا الترتيب

الترتيبالسؤالالجوابالنوع المحتفَظ به
1هل يمكن لملاحظة أن تحمل عدة وسوم معاً؟نعممتعدد الوسوم
2كم فئة متنافتة؟K = 2ثنائي
2كم فئة متنافتة؟K > 2الانتقال إلى السؤال 3
3هل الفئات مزوَّدة بترتيب كلي طبيعي؟لامتعدد الفئات (اسمي)
3هل الفئات مزوَّدة بترتيب كلي طبيعي؟نعمترتيبي

الترتيب ليس اعتباطياً: سؤال التنافي يسبق، لأنه يغيّر شكل مصفوفة الهدف نفسه — متجه في حالة، مصفوفة في الأخرى. والسؤالان 2 و3 لا ينصبان إلا على البنية الداخلية لـ C.

1.2 نوع التصنيف قرار، لا معاينة

غالباً ما تقبل الظاهرة المهنية نفسها عدة صياغات صحيحة. فاستطلاع رضا من 1 إلى 5 يمكن معالجته كهدف ترتيبي بخمسة مستويات، أو كهدف ثنائي بعد تجميع ({1,2,3} مقابل {4,5})، أو كهدف عددي.

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

نقطة انتباه: تجميع الفئات غير قابل للعكس من وجهة نظر النموذج. فنموذج مدرَّب على مستويين لن يعيد أبداً التفاصيل بخمسة مستويات.


2. التصنيف الثنائي

تعريف — التصنيف الثنائي

التعريف الدقيق

حالة التصنيف بوسم وحيد حيث K = 2: C = {c_0, c_1} وY = C. وتجزّئ دالة القرار f : X → {c_0, c_1} فضاء المدخل إلى منطقتين يفصلهما حد قرار.

ومعظم الخوارزميات لا تتعلّم f مباشرة، بل دالة درجة s : X → ℝ أو تقدير احتمال شرطي p(x) = P(Y = c_1 | X = x)، وينتج القرار عن مقارنة بعتبة t: f(x) = c_1 إذا p(x) ≥ t، وc_0 وإلا.

ترجمة إلى اللغة اليومية

إجابتان ممكنتان، واثنتان فقط. وينتج النموذج في الواقع درجة ثقة، تُحوَّل إلى إجابة بتثبيت عارضة.

نقطة انتباه

الفصل بين تقدير p(x) واختيار العتبة t أساسي. وعتبة 0,5 اصطلاح تنفيذ، لا أمثل مثبَت قط. وضبطها معالَج في الفصل 062.

2.1 اصطلاح 0 / 1

يفرض الاستعمال ترميز الهدف الثنائي بالأعداد الصحيحة 0 و1. وهذا الاصطلاح بنيوي، لا زخرفي.

الخاصيةنتيجة اصطلاح 0 / 1
y.mean()يعطي مباشرة انتشار الفئة 1
أرجحية بيرنوليتُكتَب p^y · (1−p)^(1−y)، أساس log-loss (الفصل 061)
predict_probaيعيد مصفوفة (n, 2)؛ وعمود الفهرس 1 يحمل الفئة 1
مصفوفة ارتباكالترتيب [0, 1] يثبّت ترتيب TN، FP، FN، TP (الفصل 052)
دقة موجبة، استدعاء، F1محسوبة بالنسبة إلى الفئة 1 افتراضياً

نقطة انتباه: ترتّب scikit-learn الفئات بترتيب تصاعدي، في السمة classes_. ومع وسوم نصية {"Fraude", "Normal"}، يضع الترتيب الأبجدي "Fraude" في الفهرس 0 — عكس القصد المهني. وترميز الهدف صراحة بـ 0/1 يزيل هذا الخطر.

2.2 مثال بيانات — كشف احتيال ببطاقة مصرفية

transaction_idmontantpays_cartepays_marchandheurecanalest_fraude
T-00000142,90FRFR14Boutique0
T-0000021 890,00FRRU3En ligne1
T-00000312,50FRFR9Boutique0
T-0000047,20FRFR19En ligne0
T-0000052 450,00FRUS4En ligne1
python
import pandas as pd

df = pd.read_csv("transactions.csv")
y = df["est_fraude"]

print(y.shape)
print(y.dtype)
print(sorted(y.unique()))
print(y.value_counts(normalize=True).round(4))
(284807,)
int64
[0, 1]
est_fraude
0    0.9983
1    0.0017
Name: proportion, dtype: float64

التفسير: y متجه أحادي البعد طوله n، قيمة لكل ملاحظة، بصيغتين مرمَّزتين 0 و1. وتمثّل الفئة الموجبة 0,17 % من الملاحظات: المسألة شديدة الاختلال، وهو ما يقصي الدقة كمقياس قيادة ويفرض معالجة الفصلين 050 و051.

2.3 اختيار الفئة الموجبة ونتائجه

تعريف — الفئة الموجبة

التعريف الدقيق

في مسألة ثنائية، الفئة الموجبة هي تلك التي بالنسبة إليها تُعرَّف أعداد مصفوفة الارتباك — موجبات صحيحة، موجبات كاذبة، سوالب كاذبة — وبالتالي المقاييس غير المتماثلة المشتقة منها: دقة موجبة، استدعاء، نوعية، F-بيتا.

ترجمة إلى اللغة اليومية

الفئة الموجبة هي التي يُكلَّف النموذج بكشفها. وكلمة «موجب» لا تحمل أي دلالة مواتية: كشف موجب نتيجة سيئة للمريض.

قاعدة التسمية

الفئة الموجبة، باصطلاح مهني، هي فئة الاهتمام: الحدث النادر أو المكلف أو القابل للفعل — احتيال، تعثر دفع، مرض، مغادرة زبون، عطل. وهي تتطابق في الغالبية العظمى من الحالات مع الفئة الأقلية.

نقطة انتباه

هذه التسمية قرار نمذجة صريح. وتركها تعتمد على الترتيب الأبجدي للوسوم ينتج مقاييس محسوبة صحيحاً لكن مفسَّرة بعكس المعنى.

عكس الفئة الموجبة لا يغيّر النموذج، لكنه يغيّر معنى كل المقاييس غير المتماثلة.

المقدارأثر عكس الفئة الموجبة
نموذج متعلَّم، حد قراردون تغيّر
دقة (accuracy)دون تغيّر — مقياس متماثل
دقة موجبة، استدعاء، F1تتغيّر قيمها: تنصبّ على الفئة الأخرى
استدعاء ونوعيةيتبادلان
موجبات كاذبة وسوالب كاذبةيتبادلان
ROC-AUCيصبح 1 − AUC
PR-AUCيتغيّر جذرياً: ينتقل خط الأساس من انتشار فئة إلى الأخرى

النتيجة التشغيلية: استدعاء معلَن بـ 0,92 بلا معنى ما لم تُسمَّ الفئة الموجبة. وكل إعادة تقديم لنتائج تصنيف ثنائي يجب أن تصرّح بها صراحة.

تشبيه — اختبار الكشف

يعلن مختبر أن اختباره «يكشف 95 % من الحالات». والجملة غير قابلة للاستغلال ما لم يُعلَم ما يُكشَف.

إذا تعلق الأمر بكشف المرضى، فـ 95 % هو الاستدعاء على فئة «مريض»: خمسة مرضى من مئة يُفوَّتون.

وإذا تعلق الأمر بكشف الأصحاء، فـ 95 % هو الاستدعاء على فئة «سليم»، أي النوعية: خمسة أصحاء من مئة يُقلَقون خطأ، ويبقى معدّل المرضى المفوتين مجهولاً تماماً.

والعدد نفسه، المحسوب على النموذج نفسه، يصف واقعين سريريين بلا علاقة. وتسمية الفئة الموجبة شرط قابلية تفسير الرقم.

نقطة أساسية: خطوة التصنيف بالمعنى الضيق هي المقارنة بالعتبة، لاحقة للنموذج؛ والنموذج نفسه ينتج مقداراً متصلاً. وهذا التمييز يؤسس الفقرة 6 من هذا الفصل.


3. التصنيف متعدد الفئات

تعريف — التصنيف متعدد الفئات (multiclass classification)

التعريف الدقيق

تصنيف بوسم وحيد حيث K > 2، والمجموعة C = {c_1, ..., c_K} شاملة — كل ملاحظة تقبل وسماً في C — ومتنافية — ملاحظة تقبل واحداً بالضبط. شكلياً Y = C، وΣ_k P(Y = c_k | X = x) = 1 لكل x.

ويُتحدَّث أيضاً عن تصنيف اسمي للتأكيد على أن C غير مزوَّدة بأي علاقة ترتيب.

ترجمة إلى اللغة اليومية

أكثر من إجابتين ممكنتين، إجابة واحدة لكل ملاحظة، ولا إجابة «أعلى» من أخرى.

نقطة انتباه

الشمول والتنافي فرضيتان متميّزتان، كلتاهما قابلة للتكذيب على البيانات. وتسمية تتضمّن صيغة «آخر» تلبي الشمول بثمن فئة متغايرة صعبة النمذجة.

3.1 التمييز عن متعدد الوسوم

لا ينصبّ التمييز على عدد الفئات بل على عدد الوسوم المسندة إلى ملاحظة.

المعيارمتعدد الفئاتمتعدد الوسوم
عدد الفئات الممكنة KK > 2K ≥ 2
عدد الوسوم لكل ملاحظة1 بالضبط0 أو 1 أو عدة
تنافي الفئاتنعم، بالفرضيةلا
شكل y الخام(n,)(n, K)
مجموع المؤشرات على صفدائماً 1بين 0 وK
مجموع الاحتمالات المتنبَّأ بها1، قيد softmaxغير مقيَّد

اختبار تشغيلي: صياغة السؤال المهني بأداة التعريف. «ما هو سبب هذه التذكرة؟» يشير إلى مسألة متعددة الفئات. «ما هي أسباب هذه التذكرة؟» يشير إلى مسألة متعددة الوسوم.

3.2 مثال بيانات — توجيه تذاكر خدمة زبائن

ticket_idcanallongueur_texteclient_premiumanciennete_moiscategorie
TK-0001Courriel412014Facturation
TK-0002Téléphone87161Technique
TK-0003Formulaire23503Commercial
TK-0004Courriel1 104128Résiliation
TK-0005Téléphone15609Technique
python
y = df["categorie"]

print(y.shape)
print(y.nunique())
print(y.value_counts())
(12000,)
4
categorie
Technique      5184
Facturation    3612
Commercial     2076
Résiliation    1128
Name: count, dtype: int64

التفسير: يبقى y متجه شكل (n,)، تماماً كما في الحالة الثنائية؛ وعدد الصيغ وحده يتغيّر. والانتقال من الثنائي إلى متعدد الفئات لا يعدّل بنية y. وتتراوح الأعداد من 1 128 إلى 5 184، أي نسبة 4,6: الاختلال معتدل لكنه يفرض بالفعل تفضيل المتوسطات الكلية على الجزئية حتى لا تُحجَب فئة Résiliation (الفصل 065).

3.3 استراتيجيات التفكيك

بعض الخوارزميات ثنائية جوهرياً — وآلات المتجهات الداعمة (الفصل 041) المثال المعياري. ويتيح مخططان للتقليل عندئذ معالجة K فئات بمصنِّفات ثنائية.

تعريف — واحد-ضد-الكل وواحد-ضد-واحد

واحد-ضد-الكل (One-vs-Rest، OvR، أيضاً One-vs-All)

يُدرَّب K مصنِّف ثنائي؛ ويعارض المصنِّف k الفئة c_k لاتحاد كل الفئات الأخرى. وعند التنبؤ، يُحتفَظ بـ argmax_k s_k(x).

واحد-ضد-واحد (One-vs-One، OvO)

يُدرَّب مصنِّف لكل زوج فئات، أي K(K−1)/2 مصنِّفاً؛ ولا يُدرَّب المصنِّف (j, k) إلا على ملاحظات c_j أو c_k. وعند التنبؤ، يصوّت كل مصنِّف وتفوز الفئة الأغلبية.

ترجمة إلى اللغة اليومية

واحد-ضد-الكل: «هل هذا قط، نعم أم لا؟»، ثم «هل هذا كلب، نعم أم لا؟»؛ نحتفظ بالإجابة الأكثر ثقة. واحد-ضد-واحد: ننظّم بطولة مباريات بين كل الأزواج ونعدّ الانتصارات.

نقطة انتباه

تأتي درجات مصنِّفات OvR الـ K من نماذج مدرَّبة منفصلة، على مسائل صعوبة وانتشار مختلفة. وقابليتها للمقارنة المباشرة بـ argmax غير مضمونة: وهذا الضعف النظري المعترَف به للاستراتيجية.

المعيارواحد-ضد-الكل (OvR)واحد-ضد-واحد (OvO)
عدد المصنِّفاتKK(K−1)/2
لـ K = 4 / 10 / 1004 / 10 / 1006 / 45 / 4 950
حجم كل مسألة فرعيةn ملاحظةنحو 2n/K ملاحظة
التكلفة الكلية، خوارزمية خطية في nO(K · n)O(K · n)
التكلفة الكلية، خوارزمية تربيعية في nO(K · n²)O(n²)
اختلال مُدخَلقوي: فئة واحدة ضد K−1لا شيء بين فئتي الزوج
مناطق غموضلا مصنِّف موجب أو عدةأصوات دائرية: أ يهزم ب، ب يهزم ج، ج يهزم أ

قراءة الجدول: ينمو عدد النماذج تربيعياً في OvO، لكن كل نموذج لا يُدرَّب إلا على كسر من البيانات. ولخوارزمية تكلفة تدريبها تربيعية في n — حالة SVM بنواة — يكون OvO إذن إجمالاً أقل تكلفة من OvR رغم عدد نماذجه الأعلى. وهذا سبب احتفاظ scikit-learn بـ OvO افتراضياً لـ SVC، وOvR لـ LinearSVC، الذي تكلفته خطية.

python
from sklearn.datasets import make_classification
from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
from sklearn.svm import SVC

X, y = make_classification(n_samples=600, n_features=8, n_informative=6,
                           n_classes=6, n_clusters_per_class=1, random_state=0)

ovr = OneVsRestClassifier(SVC()).fit(X, y)
ovo = OneVsOneClassifier(SVC()).fit(X, y)

print("K                  :", len(set(y)))
print("OvR nb estimateurs :", len(ovr.estimators_))
print("OvO nb estimateurs :", len(ovo.estimators_))
K                  : 6
OvR nb estimateurs : 6
OvO nb estimateurs : 15

التفسير: 6 مصنِّفات مقابل 6 × 5 / 2 = 15. والتفكيك آلية داخلية: في الحالتين يبقى y متجه (n,) ويعيد predict وسماً وحيداً.

3.4 الخوارزميات متعددة الفئات أصلاً

الخوارزميةمعالجة متعدد الفئاتالفصل
شجرة قرارأصلي — توزيع فئات لكل ورقة037
غابة عشوائيةأصلي — تجميع أصوات الأشجار038
Gradient boostingأصلي، عموماً بـ K مجموعات أشجار039
أقرب k جيرانأصلي — تصويت أغلبي في الجوار040
Naive Bayesأصلي — argmax للاحتمال البعدي042
انحدار لوجستيأصلي بصياغة متعددة الحدود (softmax)036
بيرسبترون متعدد الطبقاتأصلي — K عصبونات خرج وsoftmax043
SVM بنواة (SVC)تفكيك OvO041
SVM خطي (LinearSVC)تفكيك OvR041

نقطة انتباه: وجود معالجة أصلية لا يغني عن التحقّق من الاختلال بين الفئات. فمسألة بـ 12 فئة تركّز ثلاث منها 90 % من الأعداد تطرح، فئة بفئة، الصعوبات نفسها لمسألة ثنائية مختلة.


4. التصنيف الترتيبي

تعريف — المقياس الترتيبي (Stevens، 1946)

التعريف الدقيق

في نمطية مقاييس القياس التي اقترحها S. S. Stevens (1946)، يُدعى مقياس ترتيبياً عندما تكون علاقة الترتيب بين الصيغ معرَّفة ودالة، لكن المسافة بين صيغتين متتاليتين ليست كذلك. والعمليات الجائزة هي المقارنة (<، >، =)، والرتب، والوسيط والمكمّلات؛ والمجموع والمتوسط الحسابي والفرق ليست كذلك.

ويضيف مقياس الفترة، الأعلى مباشرة، معنى الفروق؛ ويضيف مقياس النسبة صفراً مطلقاً.

ترجمة إلى اللغة اليومية

نعلم ترتيب الصيغ من الأضعف إلى الأقوى، لكننا لا نعلم بكم تختلف.

نقطة انتباه

ترميز متغير ترتيبي بأعداد صحيحة 0, 1, 2, 3 عملية ترميز مشروعة. ومعالجة هذه الأعداد بعدئذ ككميات مقيسة ليست كذلك: فالترميز ينشئ مترية لا يحملها القياس.

تعريف — التصنيف الترتيبي (ordinal regression، ordinal classification)

التعريف الدقيق

تصنيف بوسم وحيد حيث K > 2 وC مزوَّدة بـ ترتيب كلي c_1 ≺ c_2 ≺ ... ≺ c_K دال للمجال، دون أن تكون مسافة معرَّفة على C. ويجب أن تعكس دالة الخسارة هذا الترتيب: يجب أن تفوق تكلفة خلط c_1 وc_K تكلفة خلط c_1 وc_2.

ترجمة إلى اللغة اليومية

فئات مرتَّبة من الأضعف إلى الأقوى، حيث الخطأ بكثير أخطر من الخطأ بقليل.

نقطة انتباه

التسمية الإنجليزية المعتادة ordinal regression، وهو ما يغذي خلطاً مع الانحدار بمعنى الفصل 010. وتبقى المهمة تصنيفاً: فضاء الوصول منتهٍ.

4.1 مثال بيانات — تصنيف داخلي لخطر الائتمان

dossier_idrevenu_annueltaux_endettementincidents_12manciennete_bancaireniveau_risque
D-000154 0000,21012Faible
D-000228 5000,4713Moyen
D-000319 2000,6341Critique
D-000441 0000,3827Élevé
D-000567 3000,15021Faible

الترتيب Faible ≺ Moyen ≺ Élevé ≺ Critique يحمله المجال. ولا بيان يقول إن ملفاً Critique «أخطر مرتين» من ملف Moyen.

python
import pandas as pd
from pandas.api.types import CategoricalDtype

ordre = CategoricalDtype(
    categories=["Faible", "Moyen", "Élevé", "Critique"], ordered=True
)
y = df["niveau_risque"].astype(ordre)

print(y.dtype)
print(y.cat.codes.head().tolist())
print((y > "Moyen").head().tolist())
category
[1, 0, 3, 2, 1]
[False, False, True, True, False]

التفسير: يبقى y متجه (n,)، كما في الثنائي ومتعدد الفئات. والفرق يحمله النوع: ordered=True يجعل المقارنة y > "Moyen" صحيحة وقابلة للتفسير. والرموز 0 إلى 3 رتب، لا كميات.

4.2 المعالجتان الساذجتان وتكلفتهما

المعالجةما يُفترَضما يُفقَد أو يُدخَل خطأ
كـ متعدد فئات اسميلا ترتيب بين الفئاتفقدان معلومة: كل الخلطات متكافئة؛ التنبؤ بـ Faible بدل Critique يكلف بقدر التنبؤ بـ Élevé بدل Critique
كـ انحدار على الرموز 0-3فروق متساوية بين مستويات متتالية وهدف فترةفرضية بلا أساس: لا شيء يثبت أن الفرق Faible → Moyen يساوي الفرق Élevé → Critique؛ والخرج المتصل يفرض إضافة عتبات تقريب اعتباطية
كـ ترتيبيترتيب كلي، مسافات غير معرَّفةمعالجة مطابقة لطبيعة القياس

يُقاس فقدان معلومة المعالجة متعددة الفئات مباشرة.

python
import numpy as np
from sklearn.metrics import accuracy_score, mean_absolute_error, cohen_kappa_score

y_true = np.array([0, 1, 2, 3, 2, 1, 0, 3, 2, 1])
pred_A = np.array([0, 1, 2, 3, 2, 1, 0, 3, 1, 1])   # خطأ برتبة واحدة
pred_C = np.array([0, 1, 2, 3, 2, 1, 0, 0, 2, 1])   # خطأ بثلاث رتب

for nom, p in [("A — erreur de 1 rang", pred_A), ("C — erreur de 3 rangs", pred_C)]:
    print(nom)
    print("  accuracy  :", accuracy_score(y_true, p))
    print("  MAE rangs :", round(mean_absolute_error(y_true, p), 3))
    print("  QWK       :", round(cohen_kappa_score(y_true, p, weights="quadratic"), 3))
A — erreur de 1 rang
  accuracy  : 0.9
  MAE rangs : 0.1
  QWK       : 0.952
C — erreur de 3 rangs
  accuracy  : 0.9
  MAE rangs : 0.3
  QWK       : 0.571

التفسير: يحصل التنبؤان على الدقة نفسها، 0,90، في حين يخلط الثاني ملفاً Critique بملف Faible — أغلى خطأ في المجال. والدقة، مقياس تصنيف اسمي، عمياء بنيوياً عن مدى الخطأ. ويميّزهما MAE على الرتب فوراً، بنسبة 1 إلى 3، وينتقل كابا المرجَّح تربيعياً من 0,952 إلى 0,571.

نقطة انتباه: MAE على رتب مؤشر مقارنة بين نماذج، لا كمية مهنية. ولا يُفسَّر كـ «0,3 مستوى خطر في المتوسط»، إذ مستوى الخطر غير قابل للقياس.

تشبيه — منصة الأولمبياد

أماكن الأول والثاني والثالث مرتَّبة بصرامة: لا أحد ينازع في أن الأول يسبق الثاني.

ومع ذلك لا شيء يجيز الكتابة أن الفرق بين الأول والثاني يساوي الفرق بين الثاني والثالث. في سباق 100 متر، يمكن أن يتقدم الأول على الثاني بمئتي ثانية والثاني على الثالث بنصف ثانية.

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

4.3 المقاربات المتاحة

المقاربةالمبدأملاحظة
نموذج أرجحية تناسبية (McCullagh، 1980)نموذج لوجستي تراكمي: K−1 عتبة تتقاسم متجه معاملات واحدمرجع إحصائي؛ فرضية تناسب الأرجحية للتحقّق
تفكيك تراكمي ثنائي (Frank وHall، 2001)K−1 مصنِّف ثنائي «y > c_k؟»، احتمالات معاد تركيبها بالفرقيتيح استعمال أي مصنِّف ثنائي احتمالي
انحدار ثم تجزئةانحدار على الرتب، ثم تقطيع بعتبات محسَّنةبسيط وغالباً فعّال؛ يفترض ضمنياً تساوي المسافات
متعدد فئات بتكاليف غير متماثلةمتعدد فئات كلاسيكي بمصفوفة تكاليف تجازي الفروق الكبيرةيعيد إدخال الترتيب بدالة التكلفة

مقاييس ملائمة: MAE أو RMSE على الرتب (الفصلان 067 و069)، كابا مرجَّح تربيعي (Quadratic Weighted Kappa)، مصفوفة ارتباك تُقرَأ برصد التركيز حول القطر (الفصل 052).


5. التصنيف متعدد الوسوم

تعريف — التصنيف متعدد الوسوم (multi-label classification)

التعريف الدقيق

مهمة فضاء وصولها Y = {0, 1}^K، أي مجموعة أجزاء C = {c_1, ..., c_K}. ويرتبط بكل ملاحظة x متجه ثنائي y = (y_1, ..., y_K) حيث y_k = 1 إذا انطبق الوسم c_k. ولا قيد على Σ_k y_k، الذي يمكن أن يساوي 0 (لا وسم) حتى K (كلها).

والوسوم ليست متنافتة ولا مستقلة: ونمذجة ارتباطاتها تشكّل الصعوبة الخاصة للمسألة.

ترجمة إلى اللغة اليومية

يمكن لملاحظة أن تتلقى عدة وسوم معاً، أو لا شيء. وكل وسم سؤال «نعم أم لا» مستقل في الظاهر، لكن الإجابات مرتبطة فيما بينها.

نقطة انتباه

يتميّز متعدد الوسوم عن متعدد الفئات–متعدد المخارج (multiclass-multioutput)، حيث يُتنبَّأ بعدة متغيرات هدف، كل منها متعدد الفئات نفسه. ومتعدد الوسوم الحالة الخاصة حيث كل المخارج ثنائية.

5.1 مثال بيانات — وسم آلي لصور

photo_idluminance_moyteinte_dominantevisages_detectesplagecoucher_de_soleilpersonneanimal
P-0001182Orange01100
P-000295Gris20010
P-0003164Bleu11011
P-000447Vert00000
P-0005201Orange31110

يمكن لصورة أن تكون معاً شاطئاً وغروباً وتتضمّن شخصاً. والصورة P-0004 لا تحمل أيّاً من الوسوم الأربعة: المتجه المعدوم ملاحظة صحيحة، وهو مستحيل في متعدد الفئات.

python
from sklearn.preprocessing import MultiLabelBinarizer

etiquettes = [
    ["plage", "coucher_de_soleil"],
    ["personne"],
    ["plage", "personne", "animal"],
    [],
]
mlb = MultiLabelBinarizer(
    classes=["animal", "coucher_de_soleil", "personne", "plage"]
)
Y = mlb.fit_transform(etiquettes)

print(mlb.classes_)
print(Y)
print(Y.shape)
print(Y.sum(axis=1))
['animal' 'coucher_de_soleil' 'personne' 'plage']
[[0 1 0 1]
 [0 0 1 0]
 [1 0 1 1]
 [0 0 0 0]]
(4, 4)
[2 1 3 0]

التفسير: Y مصفوفة (n, K)، لا متجه بعد. ومجموع كل صف يساوي 2, 1, 3, 0: وهو غير مقيَّد بـ 1.

5.2 التمييز الصارم عن متعدد الفئات

هدف متعدد الفئات مرمَّز بمؤشرات (one-hot) ينتج هو أيضاً مصفوفة (n, K). والخلط شائع والتمييز الشكلي مع ذلك واضح.

python
from sklearn.preprocessing import LabelBinarizer

lb = LabelBinarizer()
print(lb.fit_transform(["Technique", "Facturation", "Commercial", "Technique"]))
[[0 0 1]
 [0 1 0]
 [1 0 0]
 [0 0 1]]
المعيارمتعدد فئات مرمَّز بمؤشراتمتعدد وسوم
شكل المصفوفة(n, K)(n, K)
مجموع كل صف1 بالضبطبين 0 وK
متجه معدوم جائزلانعم
خرج النموذجsoftmax، احتمالات مجموعها 1K سيغموديات مستقلة
دالة خسارة معتادةإنتروبيا متقاطعة فئويةمجموع K إنتروبيات متقاطعة ثنائية
إعادة بناء الوسمargmax على الصفعتبة مستقلة لكل عمود

معيار التعرّف: Y.sum(axis=1) ثابت ومساوٍ لـ 1 يشير إلى متعدد فئات مرمَّز؛ وأي توزيع آخر يشير إلى متعدد وسوم.

هذا المخطط هو الصلة الثنائية (binary relevance): K مصنِّفات ثنائية مستقلة. وهو بسيط وقابل للتوازي، لكنه يتجاهل بالبناء الارتباطات بين الوسوم — الورود المشترك المتكرر لـ plage وcoucher_de_soleil لا يُستغَل قط. وتعالج سلاسل المصنِّفات (Read وآخرون، 2011) ذلك بإضافة تنبؤات الوسوم السابقة إلى المتغيرات التوضيحية للتالية.

5.3 النتيجة على المقاييس

يمكن لتنبؤ متعدد الوسوم أن يكون صحيحاً جزئياً، وهو وضع لا يوجد لا في الثنائي ولا في متعدد الفئات. ويجب أن تأخذ المقاييس ذلك في الحسبان.

python
import numpy as np
from sklearn.metrics import accuracy_score, hamming_loss, f1_score

Y_true = np.array([[1,1,0,0], [0,0,1,0], [1,0,1,1], [0,0,0,1], [1,1,1,0]])
Y_pred = np.array([[1,1,0,0], [0,0,1,0], [1,0,1,0], [0,1,0,1], [1,0,1,0]])

print("exactitude exacte :", accuracy_score(Y_true, Y_pred))
print("hamming loss      :", round(hamming_loss(Y_true, Y_pred), 3))
print("F1 micro          :", round(f1_score(Y_true, Y_pred, average="micro"), 3))
print("F1 macro          :", round(f1_score(Y_true, Y_pred, average="macro"), 3))
exactitude exacte : 0.4
hamming loss      : 0.15
F1 micro          : 0.842
F1 macro          : 0.792

التفسير: لا تمنح الدقة الدقيقة (subset accuracy) النقطة إلا إذا كانت كل وسوم الصف صحيحة؛ فتسقط إلى 0,40 في حين أن 85 % من قرارات الوسم بوسم صحيحة. وهذان الرقمان يصفان النموذج نفسه وليسا متناقضين: إنهما يجيبان عن سؤالين مختلفين.

المقياسما يقيسهالاستعمال الموصى به
دقة دقيقة (subset accuracy)نسبة الصفوف الصحيحة بالكاملشديد الصرامة؛ ذو صلة إذا استُهلك الخرج دفعة واحدة
Hamming lossنسبة الوسوم الفردية الخاطئةمؤشر كلي متسامح مع الأخطاء الجزئية
F1 جزئييجمع الأعداد على كل الوسومتهيمن عليه الوسوم المتكررة
F1 كليمتوسط F1 حسب الوسميمنح وزناً متساوياً للوسوم النادرة
F1 حسب الوسمتفصيل وسم بوسمتشخيص؛ ضروري للقيادة

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


6. الانحدار اللوجستي: مصنِّف باسم مضلِّل

هذا فخ التسمية الأكثر شيوعاً في المجال. يحمل الانحدار اللوجستي كلمة «انحدار» ويحل مسألة تصنيف.

تعريف — الانحدار اللوجستي (logistic regression)

التعريف الدقيق

نموذج خطي معمَّم (Nelder وWedderburn، 1972) لجواب بقانون بيرنولي، دالة ربطه اللوجيت. ويفترض النموذج

logit(p(x)) = ln( p(x) / (1 − p(x)) ) = β_0 + β_1 x_1 + ... + β_p x_p

حيث p(x) = P(Y = 1 | X = x). وبعكس الربط، نحصل على

p(x) = 1 / (1 + exp(−(β_0 + β·x)))، أي الدالة اللوجستية مطبَّقة على تركيب خطي للمتغيرات التوضيحية. وتُقدَّر المعاملات بتعظيم الأرجحية.

ترجمة إلى اللغة اليومية

نلائم مستقيماً، لا على الفئة نفسها، بل على لوغاريتم أرجحية الحدث؛ ثم نحوّل هذه النتيجة إلى احتمال بمنحنى S محصور بين 0 و1.

نقطة انتباه

الخرج الأصلي للنموذج احتمال، لا فئة. ولا يظهر التصنيف إلا في الخطوة التالية، بمقارنة بعتبة (الفصل 062). فالنموذج إذن انحدار على كمية متصلة — الاحتمال — في خدمة مهمة تصنيف.

6.1 أصل الاسم

الخطوةالمساهمةالأثر على التسمية
Verhulst، 1838-1845يقدّم الدالة اللوجستية لنمذجة نمو مجتمع تحت قيديوفّر الصفة «لوجستي»، التي تشير إلى منحنى S
Berkson، 1944يصوغ مصطلح logit ويروّج النموذج في الإحصاء الحيوييثبّت ربط اللوجيت كمعيار
Cox، 1958يصوغ تحليل بيانات ثنائية بهذا النموذجانتشار في الإحصاء التطبيقي
Nelder وWedderburn، 1972إطار موحِّد لـ النماذج الخطية المعمَّمةيصنّف النموذج في عائلة «انحدار»، بالنسب مع الانحدار الخطي

فكلمة «انحدار» إذن إرث العائلة الإحصائية للنموذج — نموذج خطي ملائم على تحويل للتوقّع الشرطي — لا وصف للمهمة المحلولة.

6.2 التحقّق في scikit-learn

python
from sklearn.base import is_classifier, is_regressor
from sklearn.linear_model import LogisticRegression, LinearRegression

print(is_classifier(LogisticRegression()), is_regressor(LogisticRegression()))
print(is_classifier(LinearRegression()), is_regressor(LinearRegression()))
print(hasattr(LogisticRegression(), "predict_proba"))
True False
False True
True

التفسير: تصنّف scikit-learn LogisticRegression في الوحدة linear_model — حسب العائلة الرياضية — لكنها تعرضه كـ مصنِّف: يعيد is_classifier القيمة True، والصنف يرث من ClassifierMixin، ويملك predict_proba، ويعيد predict وسوماً ويحسب score دقة. وترتيب الوحدة يترجم القرابة الخوارزمية؛ والواجهة تترجم المهمة.

python
import numpy as np

X = np.array([[10.0], [20.0], [30.0], [40.0], [50.0], [60.0]])
y = np.array([0, 0, 0, 1, 1, 1])

clf = LogisticRegression().fit(X, y)
print(clf.classes_)
print(clf.predict_proba(np.array([[25.0], [45.0]])).round(3))
print(clf.predict(np.array([[25.0], [45.0]])))
[0 1]
[[0.997 0.003]
 [0.003 0.997]]
[0 1]

التفسير: يعيد predict_proba مصفوفة (2, 2) احتمالات مجموعها 1 لكل صف — الخرج الأصلي، المتصل. ويعيد predict وسوم فئة 0 و1 — الخرج بعد عتبة 0,5. والآلية الكاملة معالَجة في الفصل 036.

6.3 التسميات الأخرى الواجب مراقبتها

الاسمالطبيعة الحقيقيةملاحظة
LogisticRegressionمصنِّفثنائي، أو متعدد الفئات بصياغة متعددة الحدود
RidgeClassifierمصنِّفانحدار Ridge على هدف مرمَّز −1 / +1، ثم إشارة
SGDClassifierمصنِّفمحسِّن، لا عائلة نماذج؛ الخسارة تحدد النموذج
LinearSVCمصنِّف«C» لـ Classifier؛ LinearSVR شكله الانحداري
LinearRegressionمنحدرهدف عددي متصل
Ordinal regressionمصنِّفمصطلح راسخ للتصنيف الترتيبي (الفقرة 4)
KNeighborsClassifier / KNeighborsRegressorمصنِّف / منحدرالخوارزمية نفسها، مهمتان، صنفان متميّزان

قاعدة مهنية: يشير اسم صنف إلى عائلته الرياضية أو تاريخه؛ وطبيعة المتغير الهدف وحدها تحدد المهمة. وعند الشك، يحسم is_classifier وحضور predict_proba.


7. جدول تلخيصي للأنواع الأربعة

المعيارثنائيمتعدد الفئاتترتيبيمتعدد الوسوم
عدد الفئاتK = 2K > 2K > 2K ≥ 2
وسوم لكل ملاحظة1110 إلى K
ترتيب على الفئاتبلا موضوعلانعم، بلا مسافةبلا موضوع
شكل y(n,)(n,)(n,) مرتَّب(n, K) ثنائي
الخرج الأصلي للنموذجاحتمال 1K احتمالات softmaxاحتمالات تراكمية أو رتبةK احتمالات مستقلة
مجموع الاحتمالات111غير مقيَّد
مثالمعاملة احتيالية أم لاتوجيه تذكرة نحو فريقمستوى خطر ائتمانوسم صورة
مقاييس ملائمةدقة موجبة، استدعاء، F1، ROC-AUC، PR-AUCدقة، F1 كلي / جزئي / مرجَّح، مصفوفة ارتباكMAE على رتب، كابا مرجَّح تربيعي، مصفوفة ارتباكHamming loss، F1 جزئي / كلي، F1 حسب الوسم، دقة دقيقة
مقياس يُحظَردقة إن كان الاختلال بارزاًدقة إن كان الاختلال بارزاًدقة وحدها: عمياء عن المدىدقة دقيقة وحدها: شديدة الصرامة
فصول الإحالة052 إلى 064065067، 069، 052065، 059

ثلاثة ثوابت للحفظ:

  1. يتقاسم الثنائي ومتعدد الفئات والترتيبي شكل y نفسه؛ ويفصلها عدد الصيغ وحضور ترتيب وحدهما.
  2. متعدد الوسوم هو النوع الوحيد الذي هدفه مصفوفة.
  3. يحدد نوع التصنيف المقاييس الجائزة قبل تحديد الخوارزميات.

8. أخطاء استدلال شائعة

خطأ — تأهيل مسألة متعددة الوسوم كمتعددة الفئات

المعيار ليس عدد الفئات بل عدد الوسوم لكل ملاحظة. فمسألة بثلاث فئات يمكن لملاحظة أن تحمل وسمين فيها متعددة الوسوم، لا متعددة الفئات.

الصياغة الصحيحة: «يفترض متعدد الفئات التنافي المتبادل للفئات؛ وما إن يمكن لملاحظة أن تحمل عدة وسوم معاً، فالمسألة متعددة الوسوم ويصبح الهدف مصفوفة (n, K)

خطأ — معالجة هدف ترتيبي كانحدار بلا تبرير

ترميز Faible, Moyen, Élevé, Critique بـ 0, 1, 2, 3 ثم الانحدار يفترض أن الفروق بين مستويات متتالية متساوية. ومقياس ترتيبي لا يحمل هذه المعلومة (Stevens، 1946).

الصياغة الصحيحة: «الانحدار على الرتب تقريب عملي يجب التصريح بفرضية تساوي مسافاته، وتبريرها إن أمكن بالمجال؛ وهو ليس المعالجة المرجعية.»

خطأ — معالجة هدف ترتيبي كمتعدد فئات اسمي

تجعل المعالجة الاسمية كل الخلطات متكافئة. فيُعدّ خلط Critique وFaible عندئذ بمقام خلط Élevé وCritique، في حين تختلف التكلفة المهنية برتبة أسية.

الصياغة الصحيحة: «المعالجة الاسمية لهدف ترتيبي مقبولة كمرجع انطلاق، بشرط تكميل الدقة بمقياس حسّاس لمدى الخطأ، مثل MAE على الرتب أو كابا المرجَّح تربيعياً.»

خطأ — الاعتقاد أن الانحدار اللوجستي نموذج انحدار

يحيل الاسم إلى عائلة النماذج الخطية المعمَّمة ودالة Verhulst اللوجستية، لا إلى طبيعة المهمة. والهدف فئوي.

الصياغة الصحيحة: «الانحدار اللوجستي خوارزمية تصنيف. إنه ينحدر لوجيت احتمال على المتغيرات التوضيحية؛ وينتج قرار الفئة عن مقارنة هذا الاحتمال بعتبة.»

خطأ — ترك الفئة الموجبة تُعرَّف بالترتيب الأبجدي

مع وسوم نصية، الترتيب الافتراضي لـ scikit-learn أبجدي. فيصبح "Fraude" عندئذ الفئة السالبة و"Normal" الفئة الموجبة: تُحسَب الدقة الموجبة والاستدعاء صحيحاً، لكن على الفئة التي لا تهم أحداً.

الصياغة الصحيحة: «تُسمَّى الفئة الموجبة صراحة كفئة الاهتمام، عموماً الحدث النادر والمكلف، وترافق هذه التسمية منهجياً إعادة تقديم المقاييس.»

خطأ — اعتبار أن K > 2 يفرض تفكيك OvR أو OvO

تعالج الأشجار والغابات وطرائق boosting وKNN وNaive Bayes والانحدار اللوجستي متعدد الحدود والشبكات العصبية K > 2 أصلاً. ولا يخص التفكيك إلا الخوارزميات الثنائية جوهرياً.

الصياغة الصحيحة: «تفكيك واحد-ضد-الكل أو واحد-ضد-واحد آلية توافق لمصنِّفات ثنائية، تطبقها المكتبة بشفافية، وليست خطوة إلزامية لمتعدد الفئات.»

خطأ — قيادة نموذج متعدد الوسوم على الدقة الدقيقة وحدها

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

الصياغة الصحيحة: «يُقاد نموذج متعدد الوسوم على مجموعة مقاييس: hamming loss للرؤية الكلية، F1 كلي للحساسية للوسوم النادرة، وF1 حسب الوسم للتشخيص.»


9. خلاصة

الأسئلة الثلاثة للتأهيل
    1. عدة وسوم لكل ملاحظة؟   نعم -> متعدد الوسوم
    2. كم فئة متنافتة؟          K = 2 -> ثنائي
    3. هل الفئات مرتَّبة؟       نعم -> ترتيبي
                                لا -> متعدد الفئات

شكل الهدف
    ثنائي        y شكله (n,)      قيم 0 / 1
    متعدد الفئات y شكله (n,)      K صيغ غير مرتَّبة
    ترتيبي       y شكله (n,)      K صيغ مرتَّبة، بلا مسافة
    متعدد الوسوم Y شكله (n, K)    مصفوفة ثنائية، مجموع صف حر

التوقيع الشكلي لمتعدد الوسوم
    Y.sum(axis=1) ثابت ومساوٍ لـ 1  ->  متعدد فئات مرمَّز
    Y.sum(axis=1) أيّاً كان         ->  متعدد وسوم

الفئة الموجبة (ثنائي)
    تُسمَّى دائماً صراحة: الحدث النادر، المكلف، القابل للفعل.
    العكس يبادل الاستدعاء والنوعية ويحوّل AUC إلى 1 - AUC.

هدف ترتيبي
    معالَج كمتعدد فئات: فقدان الترتيب، كل الأخطاء متكافئة.
    معالَج كانحدار: فرضية فروق متساوية، بلا أساس (Stevens 1946).
    معالجة مطابقة: نماذج تراكمية، مقاييس حسّاسة للفرق.

تفكيك متعدد الفئات
    واحد-ضد-الكل : K مصنِّفات،        مسائل فرعية مختلة
    واحد-ضد-واحد : K(K-1)/2 مصنِّفات، مسائل فرعية حجم 2n/K

انحدار لوجستي
    اسم موروث من الدالة اللوجستية (Verhulst) وعائلة
    النماذج الخطية المعمَّمة (Nelder وWedderburn، 1972).
    المهمة المحلولة: تصنيف. الخرج الأصلي: احتمال.
    التفصيل في الفصل 036.

قول الخلاصة

يُقرَأ نوع مهمة تصنيف على شكل المتغير الهدف لا على المفردات المستعمَلة: متجه بصيغتين يشير إلى مسألة ثنائية، ومتجه بـ K صيغ إلى مسألة متعددة الفئات — ترتيبية إذا رُتِّبت هذه الصيغ دون أن تُقاس — ومصفوفة ثنائية إلى مسألة متعددة الوسوم؛ واسم خوارزمية، مثل الانحدار اللوجستي، يخبر عن عائلته الرياضية، لا أبداً عن المهمة التي يحلها.


اختبارات مرتبطة

  • 011.1-quiz-qualification-tache.md
  • 011.2-quiz-classification-binaire.md
  • 011.3-quiz-classification-multiclasse.md
  • 011.4-quiz-classification-ordinale.md
  • 011.5-quiz-classification-multilabel.md
  • 011.6-quiz-regression-logistique.md
  • 011.7-quiz-synthese-comparative.md

الفصل التالي: 012-cycle-de-vie-ml.md