#pca — التعلّم غير المُشرَف
تحليل المكوّنات الرئيسية: أوجِد المحاور التي تتغيّر عليها البيانات أكثر ما يكون، أسقِط، اضغط — وقِس ما فُقد.
ما ستُجرّبه
- مرحبًا بك في #pca. على الشاشة، تُشكّل 200 نقطة زرقاء سحابة ممدودة على هيئة سيجار، مائلة في الفضاء. تنطلق ثلاثة أسهم من مركزها: وردي، أصفر، أخضر. هذه هي المكوّنات الرئيسية (principal components): الاتّجاه الذي تتغيّر عليه السحابة أكثر ما يكون، ثمّ أقلّ قليلًا، ثمّ لا شيء تقريبًا. طول كلّ سهم يتتبّع الانحراف المعياري للنقاط على ذلك الاتّجاه (√λ). السؤال المبدئي: في أيّ اتّجاه يتغيّر هذا السيجار أكثر ما يكون؟ يجيب PCA بثلاثة محاور وثلاثة أعداد، دون أيّ تسميات. اسحب بالفأرة لرؤية السحابة بأبعادها.
- يحمل كلّ سهم حصّة من التباين الكلّي للسحابة: λ1 / (λ1 + λ2 + λ3) للأوّل، وهكذا. أظهر هذه النسب بجوار رؤوس الأسهم:
/variance. - أبقِ على المكوّنين الأوّلَين فقط:
/components 2. يظهر مستوى نيلي: هو مستوى (PC1، PC2)، ذاك الذي يحوي أكبر تباين من بين كلّ المستويات الممكنة. هناك سنسطّح السحابة. - سطّح السحابة:
/project. تنزلق كلّ نقطة نحو ظلّها على المستوى: من 3 إحداثيات، تحتفظ بـ2 فقط. - إلى أين ذهبت المعلومات المفقودة؟ أظهرها:
/reconstruct. تربط قطع رمادية كلّ نقطة أصلية بإعادة بنائها. - أبعِد السحابة عن نقطة الأصل:
/shift 2. تتبع الأسهم السحابة دون تغيير اتّجاهها: PCA المُركَّز لا يعتمد على موقع السحابة. - غيّر شكل السحابة:
/stretch z 3. ينتقل انحراف z المعياري من 0.35 إلى 3: يصبح الاتّجاه «الأنحف» للسيجار هو الأطول. - أقصى ضغط:
/components 1. يتحوّل المستوى إلى خطّ (PC1) ولكلّ نقطة الآن إحداثيّة واحدة. - دورك:
/rotate 90(تدور السحابة، وتتبعها الأسهم)،/noise 0.6(تُضخّم الضوضاء λ3: المكوّن «عديم الجدوى» لم يعد كذلك تمامًا)،/seed 42(سحبة أخرى، ومحاور شبه متطابقة)،/shift 3ثمّ/center(خطأ عدم التركيز، على أتمّه)،/components 3(عودة إلى ثلاثة أبعاد: خطأ صفر)،/resetللبدء من جديد. التالي: #t-sne-umap، حيث يصبح تقليل الأبعاد غير خطّي، و#embeddings-3d، حيث تُنزَل متّجهات ذات مئات الأبعاد إلى ثلاثة كي ننظر إليها.
أوامر القناة
/components <1|2|3>— عدد المكوّنات المحتفَظ بها: خطّ (1)، مستوى (2) أو الكلّ (3)./project— يُزلق كلّ نقطة إلى إسقاطها (أو يعيدها)./reconstruct— إظهار أو إخفاء قطع نقطة ↔ إسقاط (الخطأ)./variance— إظهار أو إخفاء التباين المفسَّر بجوار كلّ سهم./stretch <x|y|z> <factor=0.2..4>— يغيّر الانحراف المعياري للسحابة على أحد المحاور (قبل التدوير)./rotate <angle=0..180>— يدوّر السحابة حول المحور (1، 1، 0)./shift <distance=0..3>— يبعد مركز السحابة عن نقطة الأصل (نحو الأعلى)./center— تشغيل/إيقاف تركيز البيانات قبل حساب التغاير./noise <0..1>— الانحراف المعياري للضوضاء المتساوية المضافة إلى كلّ إحداثيّة./seed <1..99>— يُعيد سحب 200 نقطة ببذرة أخرى، بالمعاملات نفسها./reset— العودة إلى السحابة الأولى: 3 مكوّنات، مُركَّزة، بلا إسقاط.
المسرد
- تحليل المكوّنات الرئيسية (PCA)
- طريقة غير مراقَبة تجد الاتّجاهات المتعامدة التي تتغيّر عليها البيانات أكثر ما يكون، ثمّ ترتّبها بالتباين المتناقص. تُستعمل لتقليل الأبعاد، والضغط، وتصوير البيانات مع الاحتفاظ بأكبر قدر ممكن من المعلومات.
- المكوّن الرئيسي
- اتّجاه (متّجه وحدة) في فضاء البيانات يبلغ عنده التباين أقصاه، بشرط أن يكون متعامدًا مع المكوّنات السابقة. في المشهد: الأسهم الوردية (PC1)، والصفراء (PC2)، والخضراء (PC3)، وطولها متناسب مع √λ.
- التباين المفسَّر
- حصّة التباين الكلّي التي يحملها مكوّن: λi / (λ1 + λ2 + λ3). النسب التراكمية تُظهر كم تحتفظ من المعلومات بـk مكوّنًا — وهذا ما يحدّد اختيار k.
- مصفوفة التغاير
- مصفوفة مربّعة (3×3 هنا) عنصرها (i، j) يقيس كيف تتغيّر الإحداثيّتان i وj معًا حول المتوسّط؛ يحوي قطرها التباينات. يقوم PCA بقطرنَتها: متّجهاتها الذاتية هي المكوّنات الرئيسية.
- القيمة والمتّجه الذاتيّان
- متّجه ذاتي v لمصفوفة C يحقّق C·v = λ·v: لا تمدّده المصفوفة إلّا بمعامل λ. بالنسبة للتغاير، المتّجهات الذاتية هي المكوّنات، وكلّ قيمة ذاتية هي تباين البيانات على ذلك المحور. نحسبها هنا بتدويرات ياكوبي؛ عمليًّا، يُفضَّل تحليل القيم المفردة (SVD) للمصفوفة المُركَّزة لكونه أكثر استقرارًا عدديًّا.
- الإسقاط
- استبدال نقطة بأقرب نقطة من فضاء جزئي (خطّ، مستوى): تحتفظ بإحداثياتها على امتداد المكوّنات المُبقاة وترمي الباقي. في المشهد، يُزلق
/projectكلّ نقطة على المستوى أو الخطّ النيلي. - تقليل الأبعاد
- الانتقال من d إحداثيّة لكلّ نقطة إلى k < d مع الحفاظ على بنية البيانات قدر الإمكان. PCA هو التقليل الخطّي المرجعي؛ وt-SNE وUMAP نظيرَاه غير الخطّيَّين.
- تركيز البيانات
- طرح المتوسّط من كلّ نقطة قبل حساب التغاير. بدون تركيز، نُحلّل XᵀX / n ويشير «المكوّن الأوّل» نحو المتوسّط بدل أن يصف شكل السحابة: الخطأ الكلاسيكي الذي يعرضه
/center. - خطأ إعادة البناء
- متوسّط مربّع المسافة بين كلّ نقطة وإعادة بنائها انطلاقًا من k مكوّنًا. بالنسبة لـ PCA المُركَّز، يساوي بالضبط مجموع القيم الذاتية المُبعَدة (λ3 إذا كان k = 2). قطع
/reconstructالرمادية تُظهره نقطةً نقطةً. - الضغط مع فقدان
- تقليل حجم البيانات مع قبول فقد جزء منها بشكل قابل للقياس. الاحتفاظ بـ k مكوّنًا من d يعني تخزين k عدد لكلّ نقطة بدلًا من d: PCA ضغط مع فقدان، وفقدُه هو بالضبط خطأ إعادة البناء.
قنوات أخرى في التعلّم غير المُشرَف
- #k-means — التجميع بلا تسميات: مراكز تتحرّك، قصور ذاتي يهبط، اختيار k — والأشكال التي يفشل عليها k-means.
- #pca — تحليل المكوّنات الرئيسية: أوجِد المحاور التي تتغيّر عليها البيانات أكثر ما يكون، أسقِط، اضغط — وقِس ما فُقد.
- #hierarchical-clustering — ادمج النقاط اثنتَين اثنتَين حتّى لا يبقى إلّا واحدة: المخطّط الشجريّ، ومعايير الوصلة، وارتفاع القطع الذي يحدّد عدد العناقيد.
- #dbscan — التجميع بحسب الكثافة: إبسيلون، MinPts، نقاط النواة والحافّة والضوضاء — الخوارزميّة التي تجد الأشكال الاعتباطيّة وتتجاهل المتطفّلين.
- #anomaly-detection — اكتشِف ما لا يُطابق شيئًا: z-score / ماهالانوبيس، Isolation Forest، LOF — ثلاث طرق لقول «هذه النقطة غريبة».
- #t-sne-umap — ارسم خريطة الأبعاد العالية: t-SNE وUMAP يفتحان بيانات ذات 10 أبعاد إلى خريطة قابلة للقراءة في بُعدَين — الحيرة، الجيران، ومغالطات القراءة.