آلة المتجهات الداعمة (SVM)
الدرس 18 من 19 في دورة مقدمة في تعلم الآلة على Coddy.
آلة المتجهات الداعمة (Support Vector Machine - SVM) هي خوارزمية تعلم آلي خاضعة للإشراف قوية ومتعددة الاستخدامات تُستخدم لمهام التصنيف والانحدار. ومع ذلك، فهي تُستخدم بشكل أكثر شيوعًا في مشكلات التصنيف. توفر SVMs دقة عالية وتعمل بشكل جيد مع مساحة ميزات عالية الأبعاد، مما يجعلها مناسبة لتطبيقات تتراوح من التعرف على الصور إلى المعلوماتية الحيوية.

المصدر: ويكيبيديا
الهدف الرئيسي لخوارزمية SVM هو العثور على المستوي الفائق الأمثل (Hyperplane) - في الفضاء ثنائي الأبعاد، هذا عبارة عن خط - الذي يفصل بين الفئات بشكل أفضل في مساحة الميزات. يمثل نموذج SVM الأمثلة كنقاط في الفضاء، مرسومة بطريقة تجعل أمثلة الفئات المنفصلة مقسمة بفجوة واضحة واسعة قدر الإمكان.
- المستوي الفائق (Hyperplane): هذا هو في الأساس حد القرار الذي يفصل بين الفئات. في الأبعاد الثنائية، يكون هذا المستوي الفائق خطًا، ولكن في الأبعاد الأعلى، يمكن أن يكون أكثر تعقيدًا.
- المتجهات الداعمة (Support Vectors): هذه هي نقاط البيانات الأقرب إلى المستوي الفائق، وهي ضرورية في تحديد موضع المستوي الفائق. يتأثر مصنف SVM بشدة بهذه النقاط، ومن هنا جاء اسم آلة
Support Vector. - الهامش (Margin): هو الفجوة بين خطين على أقرب نقاط بيانات من فئات مختلفة. يمكن اعتباره مقياسًا منفصلاً بين الفئات. يعد ضمان أن يكون الهامش واسعًا قدر الإمكان هدفًا رئيسيًا في تدريب SVM.
أنواع SVM:
- SVM الخطي (Linear SVM): عندما تكون البيانات قابلة للفصل خطيًا، يمكننا استخدام خط مستقيم واحد لفصل الفئات. يستخدم هذا السيناريو SVM الخطي.
- SVM غير الخطي (Non-linear SVM): عندما لا تكون البيانات قابلة للفصل خطيًا، تستخدم SVM ما يسمى بخدعة النواة (kernel trick) لتحويل مساحة الإدخال إلى مساحة ذات أبعاد أعلى حيث يمكن استخدام مستوي فائق لإجراء الفصل. تتضمن خدعة النواة تحويل البيانات إلى بُعد آخر يحتوي على هامش واضح بين فئات البيانات. يسمح لـ SVM بحل المشكلات غير الخطية. تشمل النوى الشائعة ما يلي:
- النواة الخطية (Linear Kernel): تُستخدم عندما تكون البيانات قابلة للفصل خطيًا.
- النواة متعددة الحدود (Polynomial Kernel): تحول مساحة الميزات الأصلية إلى مساحة ميزات متعددة الحدود بدرجة محددة.
- نواة غاوس (Gaussian Kernel): مفيدة للبيانات غير الخطية التي تتجمع في مجموعات. تقوم برسم مساحة الميزات في أبعاد أعلى.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلتستخدم آلات المتجهات الداعمة (SVMs) دوال النواة (kernel functions) لتحويل البيانات إلى فضاء ذو أبعاد أعلى حيث يسهل تصنيفها. تُعرف هذه العملية باسم "خدعة النواة" (kernel trick). وهي تسمح لآلات المتجهات الداعمة بحل مشكلات التصنيف والانحدار غير الخطية بكفاءة.
هنا، سنستكشف النواة متعددة الحدود (polynomial kernel) التي تسمح بحدود منحنية في البيانات. فهي ترفع البيانات إلى درجة محددة d. وتعتبر هذه النواة مفيدة بشكل خاص عندما تكون العلاقة بين تسميات الفئات والسمات علاقة متعددة الحدود.
المصدر: ويكيبيديا
أنشئ دالة باسم polynomial_kernel تستقبل قائمتين (x، y)، ودرجة (d)، ومعاملاً (c) وتُرجع النواة متعددة الحدود.
← (حاصل الضرب النقطي لمنقول
x في y زائد c) مرفوعاً للقوة d.
جرّب بنفسك
import numpy as np
def polynomial_kernel(x, y, d, c):
x_arr = np.array(x)
y_arr = np.array(y)
# اكتب كودك هناجميع دروس مقدمة في تعلم الآلة
6نماذج أخرى
الانحدار اللوجستيالانحدار الخطيشجرة القرارآلة المتجهات الداعمة (SVM)اختبار قصير حول النماذجتدرّب بنفسك: مترجم Python عبر الإنترنت