انتقل إلى المحتوى الرئيسي

جارٍ تحميل المختبر المرئي…

#knnالتعلّم المُشرَف

أقرب k جار: صنِّف بالشبه، اختر k، غيّر المسافة — وشاهد الحدّ ينعم أو يتشظّى.

ما ستُجرّبه

  1. أهلًا بك في #knn. على الأرض، سحابتان من النقاط الموسومة سلفًا: زرقاء ووردية. الكرة الصفراء هي نقطة جديدة غير موسومة، تقع بين السحابتين. خوارزمية أقرب k جار (k-NN) لا «تتعلّم»: لتصنيف هذه النقطة، تنظر إلى k من أقرب جيرانها وتتركهم يصوّتون. هنا k = 1: قطعة صفراء واحدة، وصنف أقرب نقطة، ليس إلّا. تكفي نقطة وردية شاذّة واحدة لقلب الحكم… وهذه بالضبط المشكلة التي سنعالجها.
  2. ماذا يقول هذا المصنِّف عند كلّ نقطة من المستوى؟ أظهِر خريطة القرار: /boundary. كلّ مربّع يأخذ لون الصنف الذي سيتنبّأ به k-NN عند تلك البقعة.
  3. اسأل سبعة جيران بدل واحد: /k 7. راقب الخريطة، والقطع، واللافتة فوق الكرة الصفراء.
  4. حرّك الاستعلام إلى المنطقة التي تختلط فيها السحابتان: /query 0.2 -0.4. القطع السبع تُعيد توجّهها، والدائرة الصفراء على الأرض هي «كرة» الجوار: نصف قطرها هو المسافة إلى الجار السابع.
  5. غيّر تعريف «القرب» نفسه: /distance manhattan. مسافة مانهاتن تجمع الفروق على x و y بدل جمعها تحت جذر تربيعي، مثل سيّارة أجرة لا تستطيع اختراق المباني.
  6. ادفع k عاليًا جدًّا: /k 25. خمسة وعشرون جارًا يمثّلون خُمس مجموعة البيانات.
  7. مفاضلة: أبقِ عددًا كبيرًا من الجيران، لكن أعطِ الأقربَ منهم وزنًا أكبر. اكتب /weighted — كلّ جار يصوّت بوزن 1/d.
  8. دورك الآن. /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: قراءة مصنِّف بأمانة، خاصّة عند اختلال توازن الفئات.