الـ clustering — K-Means
مفيش labels. مفيش مدرّس. بس البيانات والبنية. الـ unsupervised learning (التعلم غير الخاضع للإشراف) بيكشف تجمّعات مستخبية — والـ K-Means هو الـ algorithm اللي فتح الباب لألف تقسيمة.
الـ clustering من غير labels
الـ clustering (التجميع) بيقسم البيانات لمجموعات بحيث التشابه جوه المجموعة يبقى عالي والتشابه بين المجموعات يبقى واطي. مش محتاج ground truth — البنية بتطلع من البيانات نفسها.
assign ← update ← وعيد
- الـ initialization — حط K نقط مرجعية (عشوائي أو بـ K-Means++)
- الـ assignment — كل نقطة بتنضم لأقرب نقطة مرجعية (centroid)
- الـ update — احسب كل نقطة مرجعية من جديد كمتوسط المجموعة
- الفحص — وقّف لو الـ assignments متغيّرتش
- التقارب مضمون؛ بيتقارب لـ local minimum
تقليل الـ inertia
الـ K-Means بيقلّل مجموع مربعات المسافات جوه كل مجموعة من كل نقطة للنقطة المرجعية بتاعتها. inertia (قصور ذاتي) أقل = مجموعات أشد ومتماسكة أكتر.
اختيار K
- الـ elbow method (طريقة الكوع) — ارسم الـ inertia قصاد K؛ ودوّر على نقطة اللفّة
- الـ silhouette score — بيقيس التماسك قصاد الفصل لكل نقطة
- المدى من −1 (مجموعة غلط) لـ +1 (مثالي)؛ كبّرها على K
- معرفة المجال غالبًا أوثق
- ولا مقياس فيهم حاسم — اتعامل معاهم كإرشادات
الـ silhouette score
a(i) = متوسط المسافة لنقط نفس المجموعة. b(i) = متوسط المسافة لأقرب مجموعة تانية. s(i) قريبة من +1 معناها تجميع كويس؛ وقريبة من 0 معناها على الحدود.
الـ K-Means++
الـ initialization العشوائية بتخاطر بـ local minima وحشة. والـ K-Means++ بيزرع النقط المرجعية بإنه يختار كل نقطة جديدة باحتمال متناسب مع مربع مسافتها من أقرب نقطة مرجعية موجودة — بيفرّشها بذكاء.
الـ K-Means بيفشل إمتى
- افتراض الشكل الكروي — مبيلاقيش مجموعات منحنية أو ممطوطة
- الأحجام المتساوية — المجموعات الكبيرة بتتقسم والصغيرة بتندمج
- الحساسية للـ outliers — نقطة متطرفة واحدة بتشد النقطة المرجعية بعيد
- K مطلوبة من الأول — لازم تخمّن أو تدوّر
- إقليدي بس — مش مناسب للبيانات الفئوية أو النصية
الـ mini-batch K-Means
الـ K-Means العادي بيحمّل كل البيانات في كل iteration. أما الـ mini-batch K-Means فبيحدّث النقط المرجعية على subsample عشوائية في كل خطوة — زي SGD بس للـ clustering. أسرع بكتير على ملايين النقط.
الـ scaling قبل الـ clustering
الـ K-Means بيستخدم المسافة الإقليدية. feature قيمها كبيرة بتسيطر على كل حسابات المسافة. اعمل scaling دايمًا لمتوسط صفر وvariance واحد قبل ما تشغّل K-Means.
الـ K-Means بيلمع فين
- تقسيم العملاء — تجميع المستخدمين حسب تصرّفاتهم
- ضغط الصور — تقليل الألوان لـ K قيمة ممثّلة
- تجميع المستندات — اكتشاف المواضيع في مجموعات نصوص كبيرة
- الـ anomaly detection — النقط البعيدة عن أي نقطة مرجعية هي outliers
- الـ feature engineering — الانتماء للمجموعة كـ feature جديدة
اتعلّمت إيه
الـ K-Means بيكرّر assign←update عشان يقلّل الـ inertia. والـ K-Means++ بيزرع بذكاء. والـ elbow والـ silhouette بيساعدوا تختار K. والـ mini-batch بيكبر للملايين. الجاي: الـ hierarchical clustering وDBSCAN — clustering من غير K متحدّد من الأول.