#knn — التعلّم المُشرَف
أقرب k جار: صنِّف بالشبه، اختر k، غيّر المسافة — وشاهد الحدّ ينعم أو يتشظّى.
ما ستُجرّبه
- أهلًا بك في #knn. على الأرض، سحابتان من النقاط الموسومة سلفًا: زرقاء ووردية. الكرة الصفراء هي نقطة جديدة غير موسومة، تقع بين السحابتين. خوارزمية أقرب k جار (k-NN) لا «تتعلّم»: لتصنيف هذه النقطة، تنظر إلى
kمن أقرب جيرانها وتتركهم يصوّتون. هناk = 1: قطعة صفراء واحدة، وصنف أقرب نقطة، ليس إلّا. تكفي نقط ة وردية شاذّة واحدة لقلب الحكم… وهذه بالضبط المشكلة التي سنعالجها. - ماذا يقول هذا المصنِّف عند كلّ نقطة من المستوى؟ أظهِر خريطة القرار:
/boundary. كلّ مربّع يأخذ لون الصنف الذي سيتنبّأ به k-NN عند تلك البقعة. - اسأل سبعة جيران بدل واحد:
/k 7. راقب الخريطة، والقطع، واللافتة فوق الكرة الصفراء. - حرّك الاستعلام إلى المنطقة التي تختلط فيها السحابتان:
/query 0.2 -0.4. القطع السبع تُعيد توجّهها، والدائرة الصفراء على الأرض هي «كرة» الجوار: نصف قطرها هو المسافة إلى الجار السابع. - غيّر تعريف «القرب» نفسه:
/distance manhattan. مسافة مانهاتن تجمع الفروق على x و y بدل جمعها تحت جذر تربيعي، مثل سيّارة أجرة لا تستطيع اختراق المباني. - ادفع k عاليًا جدًّا:
/k 25. خمسة وعشرون جارًا يمثّلون خُمس مجموعة البيانات. - مفاضلة: أبقِ عددًا كبيرًا من الجيران، لكن أعطِ الأقربَ منهم وزنًا أكبر. اكتب
/weighted— كلّ جار يصوّت بوزن1/d. - دورك الآن.
/dataset moonsثمّ/k 1لمشاهدة k-NN يلتفّ حول حدّ منحنٍ دون أن يتعلّمه أبدًا (الخريطة تبقى ظاهرة؛/boundaryيُخفيها)؛/dataset overlapلحالة لن يحقّق فيها أيّ k المعجزات (راقب leave-one-out)؛/classes 3على/dataset blobsلتصويت ثلاثيّ؛/distance chebyshevلكرة مربّعة؛/noise 0.9و/seed 42لسحبات أخرى؛/resetللبدء من جديد. التالي: #svm-margins، حيث يُتعلَّم الحدّ بدل استنتاجه من الجيران، و#classification-metrics للحكم على هذه التنبّؤات فيما يتجاوز الدقّة.
أوامر القناة
/k <1..25>— عدد الجيران المستشارين للتصويت./query <x=-2..2> <y=-2..2>— يحرّك الكرة الصفراء المراد تصنيفها./distance <euclidean|manhattan|chebyshev>— يغيّر كيف يُقاس «القرب»./boundary— يُظهر أو يُخفي خريطة القرار (شبكة 40 × 40)./weighted— يبدّل بين تصويت الأغلبية والتصويت الموزون بـ 1/d./dataset <blobs|moons|overlap>— يغيّر مجموعة النقاط./classes <2|3>— سحابتان أو ثلاث سحب غاوسية (مجموعة blobs فقط)./noise <0..1>— تشتّت السحب: 0 = واضحة، 1 = مختلطة تمامًا./seed <1..99>— سحبة عشوائية أخرى للنقاط، بنفس الإعدادات./reset— يعود إلى blobs، k = 1، المسافة الإقليدية، والاستعلام (−0.4, 0).
المسرد
- أقرب k جار (k-NN)
- طريقة تصنيف تعطي لنقطة الصنفَ الأكثر تكرارًا بين k من أقرب جيرانها في مجموعة التدريب. لا يُعدَّل نموذج: البيانات هي النموذج. تعمل جيّدًا في الأبعاد ال منخفضة؛ في الأبعاد العالية تبدو المسافات كلّها متشابهة (لعنة الأبعاد) ويفقد مفهوم الجار معناه.
- المسافة الإقليدية (Euclidean distance)
- المسافة على خطّ مستقيم:
√(Δx² + Δy²). النقاط على مسافة r من مركز تشكّل دائرة. حسّاسة لاختلاف المقاييس: طبِّع بياناتك قبل استخدامها. - مسافة مانهاتن (Manhattan distance)
- مجموع الفروق المطلقة:
|Δx| + |Δy|، مثل سيّارة أجرة تتبع شبكة الشوارع. النقاط على مسافة r تشكّل مُعيّنًا. أقلّ حساسيةً لانحرافات كبيرة على متغيّر واحد من الإقليدية. - مسافة تشيبيشيف (Chebyshev distance)
- أكبر الفروق المطلقة:
max(|Δx|, |Δy|)، عدد حركات الملك في الشطرنج. النقاط على مسافة r تشكّل مربّعًا. الإحداثيّ الأبعد فقط هو ما يهمّ. - تصويت الأغلبية (majority vote)
- قاعدة قرار k-NN: كلّ جار يلقي صوتًا لصنفه، ويفوز الصنف صاحب أكبر عدد أصوات. k فرديّة تتجنّب التعادلات في مسائل الصنفين؛ خلاف ذلك يحسم التعادلَ فاصلٌ ما — مثلًا أقرب جار.
- التصويت الموزون (weighted vote)
- صيغة يصوّت فيها كلّ جار بوزن يتناقص مع مسافته، غالبًا
1/d. الجيران القريبون جدًّا يزنون أكثر من البعيدين: يمكنك اختيار k كبيرة دون أن يُغرق الصنفُ العامّ الأكثريّ البنيةَ المحلّية. - حدّ القرار (decision boundary)
- الخطّ (أو ا لسطح) في المستوى حيث يتغيّر الصنف المتوقّع. بالنسبة إلى k-NN لا يُحسب صراحةً أبدًا: يُكشف بتصنيف كلّ نقطة من شبكة. مشرشر عند k = 1، وأكثر نعومةً كلّما نمت k.
- المعامل الفائق k (hyperparameter)
- عدد الجيران المستشارين، يُثبَّت قبل التدريب ولا يُتعلَّم. k صغيرة: انحياز منخفض، تباين مرتفع (الخريطة تحتضن الضوضاء). k كبيرة: حدّ ناعم، لكن انحياز مرتفع (ضعف توافق). يُختار بالتحقّق المتبادل، مثلًا leave-one-out.
- leave-one-out
- تحقّق متبادل متطرّف: كلّ نقطة تُصنَّف بالنموذج المبنيّ على كلّ ما عداها، ثمّ تُعدّ الإجابات الصحيحة. بالنسبة إلى k-NN لا كلفة له (يكفي استبعاد النقطة من جيرانها) ويُستخدم لاختيار k.
- التعلّم الكسول (lazy learning)
- عائلة من الطرق، منها k-NN، لا تبني نموذجًا وقت التدريب: تخزّن الأمثلة وتؤجّل كلّ الحساب إلى وقت التنبّؤ. تدريب فوري، وتنبّؤ مكلف (مسافة واحدة لكلّ مثال مخزّن).
قنوات أخرى في التعلّم المُشرَف
- #live-training — ستّ خوارزميات تتعلّم أمام عينيك كفيديو: REC، عدّاد زمني، تعليقات توضيحية، مؤشّرات مباشرة. المشاهدة مجانية؛ تعديل النموذج بريميوم.
- #linear-regression — مطابقة خطّ: المربّعات الصغرى، البواقي، MSE، R² والنزول التدرّجي — اللبنة الأو لى لكلّ نموذج تعلّم مُوجَّه.
- #logistic-regression — التصنيف إلى فئتين: السيغمويد، حدّ القرار، العتبة والخسارة اللوغاريتمية — ولماذا لا يكفي الخطّ دائمًا.
- #decision-trees — شجرة تنحت المستوى إلى مستطيلات: جيني، الإنتروبيا، العمق، التقليم — وفرط التعلّم الذي تراه بأمّ عينيك.
- #knn — أقرب k جار: صنِّف بالشبه، اختر k، غيّر المسافة — وشاهد الحدّ ينعم أو يتشظّى.
- #svm-margins — آلات متّجهات الدعم: أوسع هامش ممكن، المعامل C، ونواة RBF التي تُقوِّس الحدّ.
- #classification-metrics — الدقّة، الاستدعائيّة، F1، مصفوفة الالتباس، ROC وAUC: قراءة مصنِّف بأمانة، خاصّة عند اختلال توازن الفئات.