حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid
طبّق نوى RBF ومتعددة الحدود على مجموعة بيانات غير قابلة للفصل خطيًا، وافهم أن النوى تسقط البيانات ضمنيًا في أبعاد أعلى
حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid درس مجاني في Machine Learning Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Machine Learning Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Machine Learning Academy 4 دروس في المجموع.
المشكلة: البيانات غير الخطية
لا تكون العديد من مسائل التصنيف الواقعية قابلة للفصل خطيًا — إذ لا يمكن لأي خط مستقيم (أو مستوى فائق) فصل الفئات بشكل صحيح. فعلى سبيل المثال، لا يمكن فصل البيانات المرتبة في حلقات متحدة المركز باستخدام أي حد خطي. يتمثل أحد الأساليب في إنشاء سمات جديدة يدويًا (مثل x² وx×y) تجعل الفئات قابلة للفصل خطيًا في الفضاء الموسّع. تنفّذ حيلة النواة ذلك تلقائيًا وبصورة ضمنية، من دون حساب الإحداثيات في الفضاء عالي الأبعاد على الإطلاق.
خرائط السمات: رفع البيانات إلى أبعاد أعلى
تحوّل خريطة السمات φ(x) متجه الإدخال إلى تمثيل ذي أبعاد أعلى. فعلى سبيل المثال، تحول φ([x₁, x₂]) = [x₁², √2·x₁x₂, x₂²] البيانات ثنائية الأبعاد إلى بيانات ثلاثية الأبعاد. بعد هذا التحويل، قد تصبح الفئات المتداخلة في بعدين قابلة للفصل خطيًا في ثلاثة أبعاد. بعد ذلك يعثر SVM على مستوى فائق ذي هامش أقصى في الفضاء المحوَّل. ويكون حد القرار المناظر في الفضاء ثنائي الأبعاد الأصلي منحنيًا، مما يمنح SVM القدرة على إجراء تصنيف غير خطي.
حيلة النواة: تجنّب خرائط السمات الصريحة
يُعد حساب φ(x) صراحةً مكلفًا، بل مستحيلًا أحيانًا (إذ تنتج بعض خرائط السمات متجهات ذات أبعاد لا نهائية). وتتمثل الفكرة الأساسية في أن الصياغة الثنائية لـ SVM تحتاج فقط إلى الجداءات النقطية φ(xᵢ)·φ(xⱼ)، وليس إلى متجهات السمات الفردية. وتحسب دالة النواة K(xᵢ, xⱼ) هذا الجداء النقطي مباشرةً من المدخلات الأصلية، من دون إنشاء φ(xᵢ) على الإطلاق. هذه هي حيلة النواة: حساب جداءات نقطية مكلفة في أبعاد عالية بتكلفة منخفضة في فضاء الإدخال.
النواة متعددة الحدود
تُعرَّف النواة متعددة الحدود بالصيغة K(xᵢ, xⱼ) = (γ · xᵢ·xⱼ + r)^d، حيث تمثل d درجة多 الحدود، وتمثل γ عامل التحجيم، وتمثل r معلمة coef0. تنشئ نواة متعددة الحدود من الدرجة 2 ضمنيًا جميع التفاعلات الثنائية (x₁x₂) والحدود التربيعية (x₁²). أما الدرجات الأعلى فتنشئ حدودًا أكثر تعقيدًا، لكنها تزيد خطر فرط التكيّف. في scikit-learn، استخدموا SVC(kernel='poly', degree=3).
from sklearn.svm import SVC
from sklearn.datasets import make_moons
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = make_moons(n_samples=300, noise=0.15, random_state=42)
for degree in [2, 3, 5]:
model = make_pipeline(StandardScaler(), SVC(kernel='poly', degree=degree, C=5))
score = cross_val_score(model, X, y, cv=5).mean()
print(f'Polynomial degree={degree}: CV accuracy={score:.4f}')نواة RBF: الأداة الأساسية الافتراضية
تُعرَّف نواة دالة الأساس الشعاعي (RBF)، التي تُسمى أيضًا النواة الغاوسية، بالصيغة K(xᵢ, xⱼ) = exp(-γ · ||xᵢ - xⱼ||²). وهي تقيس التشابه بناءً على المسافة: إذ تكون قيمة النواة للنقاط المتقاربة قريبة من 1، وللنقاط البعيدة قريبة من 0. وترتبط نواة RBF بخريطة سمات لا نهائية الأبعاد، مما يمنح SVM قدرة تعبيرية غير محدودة. وهي النواة الافتراضية في SVC ضمن scikit-learn، وتعمل جيدًا على معظم مجموعات البيانات عند ضبط C وγ بشكل مناسب.
from sklearn.svm import SVC
from sklearn.datasets import make_moons
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = make_moons(n_samples=300, noise=0.15, random_state=42)
model = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=1.0, gamma='scale'))
scores = cross_val_score(model, X, y, cv=5)
print('RBF SVM CV accuracy:', round(scores.mean(), 4))معلمة Gamma في نواة RBF
تتحكم المعلمة gamma في مدى تأثير مثال تدريبي واحد. تجعل قيمة gamma صغيرة تأثير كل نقطة ممتدًا لمسافة بعيدة، فيكون حد القرار أملسًا ويعاني النموذج من نقص التكيّف (تحيز مرتفع). أما قيمة gamma كبيرة فتجعل التأثير يتلاشى بسرعة، فيلتف الحد بإحكام حول نقاط التدريب الفردية (تباين مرتفع وفرط تكيّف). القيم الافتراضية في scikit-learn هي: gamma='scale' (تستخدم 1/(n_features × X.var())) أو gamma='auto' (تستخدم 1/n_features). اضبطوا C وgamma معًا دائمًا.
from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = load_breast_cancer(return_X_y=True)
for gamma in [0.0001, 0.001, 0.01, 0.1, 1]:
model = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=10, gamma=gamma))
score = cross_val_score(model, X, y, cv=5).mean()
print(f'gamma={gamma}: CV accuracy={score:.4f}')نواة Sigmoid
تُعرَّف نواة sigmoid بالصيغة K(xᵢ, xⱼ) = tanh(γ · xᵢ·xⱼ + r)، وهي تشبه دالة التنشيط في شبكة عصبية من طبقتين. ولا تكون دائمًا نواة صالحة (موجبة شبه محددة) لجميع قيم المعلمات، مما يعني أن تحسين SVM قد لا يتقارب إلى قيمة صغرى عالمية. ونادرًا ما تكون نواة sigmoid الخيار الأفضل عمليًا — إذ تتفوق عليها RBF في الغالب — لكنها قد تكون مفيدة عندما تكون قابلية تفسير التشبيه بالشبكات العصبية مهمة.
اختيار النواة عمليًا
إرشادات عملية لاختيار النواة: استخدموا linear عندما يكون لديكم عدد كبير من السمات (مثل النصوص والبيانات الجينومية)، أو عندما تكون البيانات عالية الأبعاد أصلًا — إذ لا حاجة إلى إضافة أبعاد أخرى باستخدام النوى؛ استخدموا RBF كخيار افتراضي للبيانات الجدولية منخفضة إلى متوسطة الأبعاد — فهي الأكثر مرونة وغالبًا ما تكون الأفضل؛ استخدموا polynomial عندما يكون لديكم سبب واضح للاعتقاد بأن تفاعلات السمات متعددة الحدود مهمة؛ وتجنبوا sigmoid إلا عند إجراء التجارب. قارنوا دائمًا بين النوى باستخدام التحقق المتقاطع على مجموعة البيانات الخاصة بكم.
تعقيد SVM ذي النواة وقابليته للتوسع
يتمثل الضعف الرئيسي لـ SVM ذي النواة في قابلية التوسع. إذ يتطلب التدريب حل مسألة برمجة تربيعية يتراوح تعقيدها بين O(n²) وO(n³) بالنسبة إلى عدد أمثلة التدريب. ومع وجود 100,000 مثال، قد يستغرق SVM بنواة RBF ساعات أو قد تنفد الذاكرة. وتشمل الحلول: (1) استخدام LinearSVC للنوى الخطية، إذ يتوسع ليشمل ملايين الأمثلة؛ (2) استخدام أساليب النوى التقريبية مثل Nystroem أو RBFSampler التي تنشئ خرائط سمات صريحة منخفضة الأبعاد؛ (3) الانتقال إلى التعزيز التدرجي أو الشبكات العصبية عند التعامل مع مجموعات بيانات كبيرة جدًا.
مقارنة النوى على مجموعة البيانات نفسها
الطريقة الصحيحة لاختيار نواة هي مقارنتها جميعًا باستخدام التحقق المتقاطع على مجموعة البيانات الخاصة بكم. فمجموعات البيانات المختلفة تفضّل نوى مختلفة. ولا تستفيد المسألة القابلة للفصل خطيًا من RBF. أما المسألة ذات البنية المحلية المعقدة فقد تحتاج إلى RBF بقيمة gamma كبيرة. ابدؤوا دائمًا بالنواة الخطية كخط أساس، ثم جرّبوا RBF مع بحث شبكي على C وgamma. وإذا لم تتفوق إحداهما على الأخرى بشكل ملحوظ، فاختاروا النواة الخطية لقابليتها للتفسير وسرعتها.
from sklearn.svm import SVC
from sklearn.datasets import load_digits
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = load_digits(return_X_y=True)
for kernel in ['linear', 'poly', 'rbf']:
model = make_pipeline(StandardScaler(), SVC(kernel=kernel, C=10))
score = cross_val_score(model, X, y, cv=3).mean()
print(f'Kernel={kernel:8s}: CV accuracy={score:.4f}')نظرية ميرسر والنوى الصالحة
لا يمكن استخدام كل دالة كنواة. يجب أن تستوفي النواة الصالحة شرط ميرسر: يجب أن تكون متماثلة (K(x,y) = K(y,x)) وأن تنتج مصفوفة غرام موجبة شبه محددة لأي مجموعة من المدخلات. ويضمن ذلك أن النواة تمثل جداءً نقطيًا صالحًا في فضاء سمات ما، مما يجعل مسألة تحسين SVM محدبة (أي ذات قيمة صغرى عالمية واحدة). ويمكن تعريف نوى مخصصة لتسلسلات DNA أو الرسوم البيانية أو النصوص وتمريرها إلى SVC(kernel='precomputed')، ما دامت تستوفي نظرية ميرسر.
تحقق سريع
اختبروا فهمكم لحيلة النواة التي تناولها هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس: تحسب دوال النواة ضمنيًا الجداءات النقطية في فضاءات سمات عالية الأبعاد، وتُعد نواة RBF الخيار الافتراضي الأكثر تنوعًا، إذ تتحكم gamma في نصف قطر التأثير، ولا تتوسع SVMs ذات النواة لتتعامل مع مجموعات البيانات الكبيرة، لذا ينبغي التفكير أولًا في النوى الخطية أو الأساليب التقريبية. ننتقل بعد ذلك إلى استكشاف ضبط C وgamma معًا باستخدام البحث الشبكي.
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid» مجاني؟
نعم — نص درس «حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Machine Learning Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Machine Learning Academy 4 دروس في المجموع.
ماذا ستتعلم في «حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid»؟
طبّق نوى RBF ومتعددة الحدود على مجموعة بيانات غير قابلة للفصل خطيًا، وافهم أن النوى تسقط البيانات ضمنيًا في أبعاد أعلى تتمرن على Machine Learning Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Machine Learning Academy؟
لا تُشترط خبرة سابقة. Machine Learning Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Machine Learning Academy هذا؟
نعم. كل درس في Machine Learning Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مصنّف الهامش الأقصى: متجهات الدعم والمستوى الفائق
- SVM بهامش مرن ومعامل C
- حيلة النواة: نوى RBF ومتعددة الحدود وSigmoid
- ضبط C وGamma باستخدام بحث شبكي