الـ dimensionality reduction
ألف feature بيبانوا كتير. بس في الأبعاد العالية، البيانات دايمًا قليلة — المسافات بتفقد معناها والـ models بتتكعبل. اتعلّم إزاي تضغط الـ noise وتحتفظ بالـ signal. ده الـ dimensionality reduction (تقليل الأبعاد).
الـ curse of dimensionality
كل ما الأبعاد تكبر، الحجم بينفجر. النقط بتتفرّق بعيد لدرجة إن البحث عن أقرب جار والـ clustering بيعطّلوا. ونسبة أقرب مسافة لأبعدها بتقرّب من 1 — كل نقطة بتبان قريبة بنفس القدر. ودي الـ curse of dimensionality (لعنة الأبعاد).
PCA: أكبر variance
الـ PCA بيلاقي الاتجاهات اللي فيها أكبر variance في البيانات — المحاور اللي النقط متفرّشة عليها أكتر. اعمل projection على أعلى k محاور منهم وهتحتفظ بأكتر معلومات في k بُعد.
- كل اتجاه هو principal component (مكوّن رئيسي)
- الـ components متعامدة — مفيش تكرار
- بتتحسب عن طريق الـ eigenvectors (المتجهات الذاتية) بتاعة الـ covariance matrix
الـ projection على أعلى eigenvectors
اعمل centering للبيانات، احسب الـ covariance matrix، خد أعلى k eigenvectors. اعمل projection للبيانات عليهم. والـ eigenvalues بتقولك كل component بيمسك variance قد إيه.
نسبة الـ explained variance
ارسم الـ explained variance التراكمي وإنت بتزوّد components. وقّف عند الكوع — اللي بعده الـ components الزيادة بتبطّل تساهم بشكل ملموس. وغالبًا 95% من الـ variance محتاجة components أقل بكتير من الـ features.
خطي بس، من غير منحنيات
- الـ PCA بيفترض فضاء خطي — لا manifolds ولا منحنيات
- مبيقدرش يفصل clusters على سطح منحني
- حسّاس للمقياس: اعمل normalization للـ features دايمًا الأول
- الحل: استخدم طرق غير خطية للبنيات المعقّدة
t-SNE: embedding بالجيرة
الـ t-SNE بيحوّل المسافات العالية الأبعاد لـ احتمالات، وبعدين بيلاقي ترتيب في بُعدين بيطابق الاحتمالات دي. النقط اللي شبه بعض بتفضل قريبة؛ واللي بعيدة بتتزق بعيد. وبيكشف بنية clusters مستخبية عن الـ PCA.
تقليل الـ KL divergence
الـ t-SNE بيصغّر الـ KL divergence (تباعد KL) بين التوزيع P العالي الأبعاد والتوزيع Q اللي أبعاده قليلة. وبيستخدم Student-t kernel في Q (ديول تقيلة) عشان يمنع الزحمة في الـ embedding.
للرسم بس، مش للـ preprocessing
- المحاور مالهاش معنى مطلق — شكل الـ cluster بس هو اللي يهم
- المسافات بين الـ clusters مش محفوظة
- مينفعش تعمل embedding لنقط جديدة بعد التدريب
- بطيء: O(n² log n) — حد عند ~100,000 نقطة
- استخدم PCA لـ 50 بُعد الأول، وبعدين t-SNE
UMAP: أسرع وأمين أكتر
- مبني على هندسة ريمانية والطوبولوجيا الجبرية
- بيحافظ على البنية المحلية والعامة مع بعض
- وقت شبه خطي — بيكبر لملايين النقط
- يقدر يعمل embedding لنقط جديدة بعد التدريب
- أهم الـ parameters: n_neighbors (محلي/عام) وmin_dist
PCA ولا t-SNE ولا UMAP؟
- PCA — الـ preprocessing، البنية الخطية، دايمًا الأول
- t-SNE — بيانات صغيرة/متوسطة، رسم clusters متلزّقة
- UMAP — بيانات ضخمة، بنية عامة، embedding لنقط جديدة
- خطوات الشغل: PCA ← 50 بُعد ← UMAP/t-SNE ← رسم 2D
اتعلّمت إيه
الـ PCA خطي ودايمًا خطوتك الأولى. والـ t-SNE بيكشف بنية الـ clusters المحلية للرسم. والـ UMAP أسرع، بيحافظ على البنية العامة، وبيكبر أكتر. الوحدة الخامسة خلصت.