Support Vector Machine (SVM)
تفصل آلة متجهات الدعم (SVM) الفئات بمستوى فائق ذي أكبر هامش، وتستخدم النوى للتعامل مع الحدود المنحنية. تعرّف على آلية عملها وضبطها والشفرة البرمجية.
آلة متجهات الدعم (SVM) هي خوارزمية تعلّم خاضع للإشراف تصنّف البيانات بالعثور على المستوى الفائق الذي يفصل بين فئتين بأوسع هامش ممكن، أي الفجوة بين الحد وأقرب نقاط التدريب من كل فئة. وهذه النقاط الأقرب، المسماة متجهات الدعم، هي أمثلة التدريب الوحيدة التي تحدد الحد. وتتيح دوال النواة لـ SVM تعلّم حدود منحنية، كما تتعامل نسخها المختلفة مع الانحدار واكتشاف القيم الشاذة. طوّر فلاديمير فابنيك وزملاؤه هذه الطريقة في مختبرات AT&T Bell Labs، إذ ظهرت نسخة النواة عام 1992، ونُشرت صيغة الهامش اللين المستخدمة اليوم على يد Cortes وVapnik عام 1995. وقبل التعلّم العميق، كانت SVM من أدق المصنفات للنصوص والصور والبيانات البيولوجية، ولا تزال فعالة مع مجموعات البيانات الصغيرة إلى المتوسطة ذات السمات الكثيرة.
آلية عمل SVM#
يتنبأ SVM الخطي بالفئة من إشارة w·x + b، لذا يكون حد القرار هو المستوى الفائق w·x + b = 0، وعند تحجيم الأوزان بحيث تحقق أقرب النقاط |w·x + b| = 1، يكون عرض الهامش 2/‖w‖. يزيد التدريب الهامش إلى أقصى حد بتقليل ‖w‖²، مع اشتراط وقوع كل نقطة تدريب على جانبه الصحيح. تتداخل الفئات الواقعية، لذا يسمح SVM ذو الهامش اللين للنقاط بتجاوز الهامش مقابل كلفة يحددها معامل الانتظام C. ولا تحمّل خسارة المفصلة أي كلفة للنقاط المصنفة بشكل صحيح خارج الهامش، بينما تفرض على بقية النقاط عقوبة تزداد خطيًا مع مقدار الانتهاك. يسمح C الصغير بمزيد من الانتهاكات ويعطي هامشًا أوسع وأكثر سلاسة، بينما يلائم C الكبير بيانات التدريب بإحكام أكبر، مع زيادة خطر فرط التكيّف. في النموذج المدرّب، لا تحمل وزنًا غير صفري إلا النقاط الواقعة على الهامش أو على جانبه الخاطئ؛ وهذه هي متجهات الدعم، وتحريك أي نقطة أخرى من دون تجاوز الهامش لا يغيّر الحد.
حيلة النواة#
عندما لا يفصل مستوى فائق بين الفئات، يمكن أن يجعل إسقاط البيانات في أبعاد أكثر الفصل ممكنًا: إذ تصبح حلقتان متحدتا المركز في بعدين قابلتين للفصل بمستوى مسطح عند إضافة سمة ثالثة، x₁² + x₂²، تقيس بُعد كل نقطة عن المركز. في الصيغة الثنائية، يستخدم تدريب SVM والتنبؤ به البيانات من خلال الضربات النقطية بين أزواج النقاط فقط، لذا يمكن لدالة نواة k(x, x′) إرجاع الضرب النقطي في الفضاء المسقَط مباشرةً، من دون احتساب الإحداثيات المسقَطة أصلًا. هذه هي حيلة النواة. تشمل النوى الشائعة النواة الخطية ومتعددة الحدود ودالة الأساس الشعاعي (RBF)، exp(−γ‖x − x′‖²)، حيث تحدد γ مدى تأثير كل متجه دعم. يدرّب هذا المثال SVC في scikit-learn باستخدام نواة خطية وأخرى من نوع RBF على حلقتين متحدتي المركز:
from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
# Two concentric rings: no straight line separates the classes
X, y = make_circles(n_samples=500, factor=0.4, noise=0.1, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
for kernel in ("linear", "rbf"):
clf = SVC(kernel=kernel, C=1.0)
clf.fit(X_train, y_train)
print(f"{kernel}: test accuracy {clf.score(X_test, y_test):.2f}, support vectors {clf.n_support_.sum()}")تحقق النواة الخطية نتيجة 0.43 على النقاط المحجوبة، وهي أسوأ من التخمين، وتحتفظ بـ 360 نقطة من أصل 375 نقطة تدريب بوصفها متجهات دعم. أما نواة RBF فتفصل الحلقتين بشكل مثالي (1.00) باستخدام 42 متجه دعم فقط.
اختيار النواة والمعلمات الفائقة#
تعتمد المسافات والضربات النقطية على مقياس السمات، لذا تُجرى معايرة معيارية لمدخلات SVM أولًا. ويوصي الدليل العملي الذي أعدّه مؤلفو LIBSVM، وهي المكتبة التي يستند إليها SVC في scikit-learn، بتحجيم السمات والبدء بنواة RBF واختيار C وγ باستخدام البحث الشبكي مع التحقق المتقاطع. عندما يفوق عدد السمات عدد العينات بكثير، كما في النصوص، يكون أداء النواة الخطية مماثلًا تقريبًا، ويكون تدريبها أسرع بكثير. يزداد زمن تدريب SVM بالنواة بمعدل تربيعي على الأقل مع عدد العينات، لذا تُستبدل النماذج الدقيقة بالنواة بنماذج SVM خطية أو سمات نواة تقريبية عند تجاوز عشرات الآلاف من العينات.
SVM في الرؤية الحاسوبية#
جمعت الرؤية الحاسوبية التقليدية بين الميزات المصممة يدويًا ونماذج SVM الخطية. استخدم كاشف المشاة الذي طوره دلال وتريغز عام 2005 مدرجات التدرجات الموجهة (HOG) للتصنيف باستخدام نموذج SVM خطي، وصنّف كاشف الكائنات R-CNN لعام 2014 ميزات CNN لكل منطقة مقترحة باستخدام نموذج SVM خطي لكل فئة، إلى أن استبدلها Fast R-CNN عام 2015 بطبقة softmax تُدرّب مع الشبكة. تتعلم الكواشف الحديثة الميزات والمصنّف معًا، بينما لا تزال نماذج SVM تُستخدم بوصفها مصنّفات سريعة للـميزات الثابتة. ويُعد نموذج SVM خطي مدرّب على المتجهات التي يعيدها YOLO26 من model.embed()، أي تضمين واحد لكل صورة، مسبارًا خطيًا يضيف فئة صور جديدة من دون إعادة تدريب الشبكة.
التطبيقات#
- تصنيف النصوص: تحتوي متجهات تكرار الكلمات على عشرات الآلاف من الأبعاد المتناثرة، وتفصل SVM الخطية بينها بدقة لتصنيف الموضوعات والرسائل المزعجة والمشاعر، وهي ميزة برهن عليها Thorsten Joachims في تصنيف النصوص عام 1998.
- المعلوماتية الحيوية: تصنّف دراسات التعبير الجيني الأورام انطلاقًا من آلاف الجينات المقيسة وعشرات المرضى أو مئاتهم فقط؛ وفي مثل هذه الحالات يحد الهامش من فرط التكيّف، كما تقارن نوى السلاسل تسلسلات البروتينات مباشرةً.
- اكتشاف الحالات الشاذة: تتعلم SVM أحادية الفئة حدًا حول البيانات الطبيعية وحدها، وتعلّم النقاط الواقعة خارجه، ما يجعلها مناسبة لاكتشاف الاحتيال ومراقبة الآلات عندما تكون الأعطال نادرة جدًا بحيث يتعذر تصنيفها.
- الانحدار: يلائم انحدار متجهات الدعم دالة داخل نطاق عرضه ε، ويتجاهل الأخطاء الأصغر من ε، ولا يحتفظ بوصفها متجهات دعم إلا بالنقاط الواقعة على النطاق أو خارجه.
SVM مقارنة بالخوارزميات ذات الصلة#
- خوارزمية أقرب الجيران (KNN): تحتفظ بمجموعة التدريب كاملة وتقارن كل نقطة جديدة بجيرانها وقت التنبؤ، بينما لا يحتفظ SVM إلا بمتجهات الدعم.
- أشجار القرار والغابات العشوائية: تقسّم البيانات اعتمادًا على سمة واحدة في كل مرة، ولا تحتاج إلى معايرة السمات، وتتعامل مع أعمدة مختلطة من بيانات رقمية وفئوية، بخلاف SVM التي تحتاج إلى مدخلات رقمية معايرة.
- الشبكات العصبية: تتعلم تحويل السمات من البيانات بدلًا من تثبيته باستخدام نواة، ما يتيح لها التوسع إلى ملايين الصور، حيث تصبح SVM بالنواة بطيئة جدًا.
- الانحدار اللوجستي: يتعلم أيضًا حدًا خطيًا، لكنه يقلل خسارة اللوغاريتم على كل نقطة تدريب ويخرج احتمالات. أما SVM فيخرج مسافات موقّعة عن الحد، ولا ينتج SVC في scikit-learn احتمالات إلا باستخدام
probability=True، الذي يلائم معايرة Platt عبر تحقق متقاطع داخلي من 5 طيات.










