.. _lda_qda: ========================================== تحليل التمييز الخطي والتربيعي ========================================== .. currentmodule:: sklearn تحليل التمييز الخطي (:class:`~discriminant_analysis.LinearDiscriminantAnalysis`) وتحليل التمييز التربيعي (:class:`~discriminant_analysis.QuadraticDiscriminantAnalysis`) هما مُصنفان كلاسيكيان، مع، كما تُشير أسماؤهما، سطح قرار خطي وتربيعي، على التوالي. هذه المُصنِّفات جذابة لأن لها حلولاً ذات شكل مُغلق يمكن حسابها بسهولة، وهي متعددة الفئات بطبيعتها، وقد أثبتت فعاليتها في الممارسة العملية، وليس لديها معلمات فائقة لضبطها. .. |ldaqda| image:: ../auto_examples/classification/images/sphx_glr_plot_lda_qda_001.png :target: ../auto_examples/classification/plot_lda_qda.html :scale: 80 .. centered:: |ldaqda| يُظهر الرسم حدود القرار لتحليل التمييز الخطي و تحليل التمييز التربيعي. يُوضح الصف السفلي أن تحليل التمييز الخطي لا يمكنه تعلم سوى الحدود الخطية، بينما يمكن لتحليل التمييز التربيعي تعلم حدود تربيعية وبالتالي فهو أكثر مرونة. .. rubric:: أمثلة * :ref:`sphx_glr_auto_examples_classification_plot_lda_qda.py`: مقارنة بين LDA و QDA على البيانات الاصطناعية. تقليل الأبعاد باستخدام تحليل التمييز الخطي =========================================================== يمكن استخدام :class:`~discriminant_analysis.LinearDiscriminantAnalysis` لـ إجراء تقليل أبعاد خاضع للإشراف، عن طريق إسقاط بيانات الإدخال على فضاء فرعي خطي يتكون من الاتجاهات التي تُعظم الفصل بين الفئات (بمعنى دقيق تمت مناقشته في قسم الرياضيات أدناه). بُعد الإخراج أقل بالضرورة من عدد الفئات، لذلك هذا بشكل عام تقليل قوي جدًا للأبعاد، و لا معنى له إلا في إعداد متعدد الفئات. يتم تطبيق هذا في أسلوب `transform`. يمكن تعيين الأبعاد المطلوبة باستخدام معلمة ``n_components``. ليس لهذه المعلمة أي تأثير على أسلوبي `fit` و `predict`. .. rubric:: أمثلة * :ref:`sphx_glr_auto_examples_decomposition_plot_pca_vs_lda.py`: مقارنة بين LDA و PCA لتقليل أبعاد مجموعة بيانات Iris. .. _lda_qda_math: الصيغة الرياضية لمُصنِّفات LDA و QDA ======================================================= يمكن اشتقاق كل من LDA و QDA من نماذج احتمالية بسيطة تُنمذج التوزيع الشرطي للفئة للبيانات :math:`P(X|y=k)` لكل فئة :math:`k`. يمكن بعد ذلك الحصول على التنبؤات باستخدام قاعدة Bayes، لكل عينة تدريب :math:`x \in \mathcal{R}^d`: .. math:: P(y=k | x) = \frac{P(x | y=k) P(y=k)}{P(x)} = \frac{P(x | y=k) P(y = k)}{ \sum_{l} P(x | y=l) \cdot P(y=l)} ونختار الفئة :math:`k` التي تُعظم احتمالية هذا اللاحق. بشكل أكثر تحديدًا، بالنسبة لتحليل التمييز الخطي والتربيعي، يتم نمذجة :math:`P(x|y)` كتوزيع غاوسي متعدد المتغيرات بكثافة: .. math:: P(x | y=k) = \frac{1}{(2\pi)^{d/2} |\Sigma_k|^{1/2}}\exp\left(-\frac{1}{2} (x-\mu_k)^t \Sigma_k^{-1} (x-\mu_k)\right) حيث :math:`d` هو عدد الميزات. QDA --- وفقًا للنموذج أعلاه، فإن لوغاريتم اللاحق هو: .. math:: \log P(y=k | x) &= \log P(x | y=k) + \log P(y = k) + Cst \\ &= -\frac{1}{2} \log |\Sigma_k| -\frac{1}{2} (x-\mu_k)^t \Sigma_k^{-1} (x-\mu_k) + \log P(y = k) + Cst, حيث يُقابل المصطلح الثابت :math:`Cst` المقام :math:`P(x)`، بالإضافة إلى المصطلحات الثابتة الأخرى من التوزيع الطبيعي. الفئة المتوقعة هي الفئة التي تُعظم هذا اللاحق اللوغاريتمي. .. note:: **العلاقة مع غاوسي ساذج بايز** إذا افترض المرء في نموذج QDA أن مصفوفات التغاير المشترك قطرية، فسيتم افتراض أن المدخلات مستقلة بشكل شرطي في كل فئة، والمُصنف الناتج يُعادل مُصنف غاوسي ساذج بايز :class:`naive_bayes.GaussianNB`. LDA --- LDA هي حالة خاصة من QDA، حيث يُفترض أن التوزيعات العادية لكل فئة تشترك في نفس مصفوفة التغاير المشترك: :math:`\Sigma_k = \Sigma` للجميع :math:`k`. هذا يُقلل اللاحق اللوغاريتمي إلى: .. math:: \log P(y=k | x) = -\frac{1}{2} (x-\mu_k)^t \Sigma^{-1} (x-\mu_k) + \log P(y = k) + Cst. يُقابل المصطلح :math:`(x-\mu_k)^t \Sigma^{-1} (x-\mu_k)` `مسافة Mahalanobis `_ بين العينة :math:`x` والمتوسط :math:`\mu_k`. تُخبر مسافة Mahalanobis مدى قرب :math:`x` من :math:`\mu_k`، مع مُراعاة تباين كل ميزة أيضًا. وبالتالي يمكننا تفسير LDA على أنه تعيين :math:`x` إلى الفئة التي يكون متوسطها الأقرب من حيث مسافة Mahalanobis، مع مُراعاة احتمالات الفئة السابقة أيضًا. يمكن أيضًا كتابة اللاحق اللوغاريتمي لـ LDA [3]_ على النحو التالي: .. math:: \log P(y=k | x) = \omega_k^t x + \omega_{k0} + Cst. حيث :math:`\omega_k = \Sigma^{-1} \mu_k` و :math:`\omega_{k0} = -\frac{1}{2} \mu_k^t\Sigma^{-1}\mu_k + \log P (y = k)`. تُقابل هذه الكميات السمتين `coef_` و `intercept_`، على التوالي. من الصيغة أعلاه، من الواضح أن LDA لديه سطح قرار خطي. في حالة QDA، لا توجد افتراضات على مصفوفات التغاير المشترك :math:`\Sigma_k` للتوزيعات العادية، مما يؤدي إلى أسطح قرار تربيعية. انظر [1]_ لمزيد من التفاصيل. الصيغة الرياضية لتقليل أبعاد LDA ======================================================== لاحظ أولاً أن متوسطات K :math:`\mu_k` هي متجهات في :math:`\mathcal{R}^d`، وتقع في فضاء فرعي أفيني :math:`H` بـ بُعد :math:`K - 1` على الأكثر (نقطتان تقعان على خط، 3 نقاط تقع على مستوى، إلخ.). كما ذُكر أعلاه، يمكننا تفسير LDA على أنه تعيين :math:`x` إلى الفئة التي يكون متوسطها :math:`\mu_k` الأقرب من حيث مسافة Mahalanobis، مع مُراعاة احتمالات الفئة السابقة أيضًا. بدلاً من ذلك، يُعادل LDA أولاً *تكوير* البيانات بحيث تكون مصفوفة التغاير المشترك هي الهوية، ثم تعيين :math:`x` إلى أقرب متوسط من حيث مسافة إقليدية (مع مُراعاة مُسبقات الفئة). حساب مسافات إقليدية في هذا الفضاء ذي الأبعاد d يُعادل أولاً إسقاط نقاط البيانات في :math:`H`، وحساب المسافات هناك (لأن الأبعاد الأخرى ستُساهم بالتساوي في كل فئة من حيث المسافة). بمعنى آخر، إذا كان :math:`x` أقرب إلى :math:`\mu_k` في الفضاء الأصلي، فسيكون هذا هو الحال أيضًا في :math:`H`. هذا يُظهر أنه، ضمنيًا في مُصنف LDA، هناك تقليل للأبعاد عن طريق الإسقاط الخطي على فضاء ذي أبعاد :math:`K-1`. يمكننا تقليل البُعد أكثر، إلى :math:`L` مُختار، عن طريق الإسقاط على الفضاء الفرعي الخطي :math:`H_L` الذي يُعظم تباين :math:`\mu^*_k` بعد الإسقاط (في الواقع، نحن نُجري شكلًا من أشكال PCA لمتوسطات الفئات المُحوَّلة :math:`\mu^*_k`). هذا :math:`L` يُقابل معلمة ``n_components`` المُستخدمة في أسلوب :func:`~discriminant_analysis.LinearDiscriminantAnalysis.transform`. انظر [1]_ لمزيد من التفاصيل. الانكماش ومُقدِّر التغاير المشترك ================================== الانكماش هو شكل من أشكال التنظيم يُستخدم لتحسين تقدير مصفوفات التغاير المشترك في الحالات التي يكون فيها عدد عينات التدريب صغيرًا مُقارنةً بعدد الميزات. في هذا السيناريو، يكون تغاير العينة التجريبي مُقدِّرًا ضعيفًا، ويُساعد الانكماش في تحسين أداء التعميم لـ المُصنف. يمكن استخدام انكماش LDA عن طريق تعيين معلمة ``shrinkage`` لـ فئة :class:`~discriminant_analysis.LinearDiscriminantAnalysis` إلى "auto". هذا يُحدد تلقائيًا معلمة الانكماش المثلى بطريقة تحليلية باتباع النظرية التي قدمها Ledoit و Wolf [2]_. لاحظ أن الانكماش لا يعمل حاليًا إلا عند تعيين معلمة ``solver`` إلى 'lsqr' أو 'eigen'. يمكن أيضًا تعيين معلمة ``shrinkage`` يدويًا بين 0 و 1. في على وجه الخصوص، تُقابل القيمة 0 عدم الانكماش (مما يعني أن مصفوفة التغاير المشترك التجريبية ستُستخدم) وتُقابل القيمة 1 الانكماش الكامل (مما يعني أنه سيتم استخدام المصفوفة القطرية للتباينات كـ تقدير لمصفوفة التغاير المشترك). سيؤدي تعيين هذه المعلمة إلى قيمة بين هذين الطرفين إلى تقدير إصدار مُنكمش من مصفوفة التغاير المشترك. قد لا يكون مُقدِّر التغاير المشترك المُنكمش لـ Ledoit و Wolf دائمًا هو الخيار الأفضل. على سبيل المثال، إذا كان توزيع البيانات طبيعيًا، فإن مُقدِّر تقريب انكماش أوراكل :class:`sklearn.covariance.OAS` يُعطي متوسط خطأ تربيعي أصغر من ذلك الذي تُعطيه صيغة Ledoit و Wolf المُستخدمة مع shrinkage="auto". في LDA، يُفترض أن البيانات غاوسية بشكل شرطي على الفئة. إذا كانت هذه الافتراضات صحيحة، فإن استخدام LDA مع مُقدِّر OAS للتغاير المشترك سيُعطي دقة تصنيف أفضل مما لو تم استخدام Ledoit و Wolf أو مُقدِّر التغاير المشترك التجريبي. يمكن اختيار مُقدِّر التغاير المشترك باستخدام معلمة ``covariance_estimator`` لفئة :class:`discriminant_analysis.LinearDiscriminantAnalysis`. يجب أن يحتوي مُقدِّر التغاير المشترك على أسلوب :term:`fit` و سمة ``covariance_`` مثل جميع مُقدِّرات التغاير المشترك في وحدة :mod:`sklearn.covariance`. .. |shrinkage| image:: ../auto_examples/classification/images/sphx_glr_plot_lda_001.png :target: ../auto_examples/classification/plot_lda.html :scale: 75 .. centered:: |shrinkage| .. rubric:: أمثلة * :ref:`sphx_glr_auto_examples_classification_plot_lda.py`: مقارنة مُصنِّفات LDA مع مُقدِّر التغاير المشترك التجريبي و Ledoit Wolf و OAS. خوارزميات التقدير ===================== يتطلب استخدام LDA و QDA حساب اللاحق اللوغاريتمي الذي يعتمد على مُسبقات الفئة :math:`P(y=k)`، ومتوسطات الفئة :math:`\mu_k`، و مصفوفات التغاير المشترك. محلل 'svd' هو المحلل الافتراضي المُستخدم لـ :class:`~sklearn.discriminant_analysis.LinearDiscriminantAnalysis`، وهو المحلل الوحيد المتاح لـ :class:`~sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis`. يمكنه إجراء كل من التصنيف والتحويل (لـ LDA). نظرًا لأنه لا يعتمد على حساب مصفوفة التغاير المشترك، فقد يكون محلل 'svd' مُفضلًا في الحالات التي يكون فيها عدد الميزات كبيرًا. لا يمكن استخدام محلل 'svd' مع الانكماش. بالنسبة لـ QDA، يعتمد استخدام محلل SVD على حقيقة أن مصفوفة التغاير المشترك :math:`\Sigma_k`، بحكم التعريف، تساوي :math:`\frac{1}{n - 1} X_k^tX_k = \frac{1}{n - 1} V S^2 V^t` حيث يأتي :math:`V` من SVD للمصفوفة (المُتمركزة): :math:`X_k = U S V^t`. اتضح أنه يمكننا حساب اللاحق اللوغاريتمي أعلاه دون الحاجة إلى حساب :math:`\Sigma` صراحةً: حساب :math:`S` و :math:`V` عبر SVD لـ :math:`X` يكفي. بالنسبة لـ LDA، يتم حساب SVDs اثنين: SVD لمصفوفة الإدخال المُتمركزة :math:`X` و SVD لمتجهات المتوسط حسب الفئة. محلل 'lsqr' هو خوارزمية فعالة تعمل فقط من أجل التصنيف. إنه يحتاج إلى حساب مصفوفة التغاير المشترك :math:`\Sigma` صراحةً، ويدعم الانكماش ومُقدِّرات التغاير المُخصصة. يحسب هذا المحلل المعاملات :math:`\omega_k = \Sigma^{-1}\mu_k` عن طريق الحل لـ :math:`\Sigma \omega = \mu_k`، وبالتالي تجنب الحساب الصريح للمعكوس :math:`\Sigma^{-1}`. يعتمد محلل 'eigen' على تحسين نسبة التشتت بين الفئات إلى نسبة التشتت داخل الفئة. يمكن استخدامه لكل من التصنيف و التحويل، ويدعم الانكماش. ومع ذلك، يحتاج محلل 'eigen' إلى حساب مصفوفة التغاير المشترك، لذلك قد لا يكون مُناسبًا للحالات التي تحتوي على عدد كبير من الميزات. .. rubric:: المراجع .. [1] "عناصر التعلم الإحصائي", Hastie T., Tibshirani R., Friedman J., القسم 4.3، ص 106-119، 2008. .. [2] Ledoit O, Wolf M. Honey, لقد قلصت مصفوفة تغاير العينة. The Journal of Portfolio Management 30(4), 110-119, 2004. .. [3] R. O. Duda, P. E. Hart, D. G. Stork. تصنيف الأنماط (الطبعة الثانية)، القسم 2.6.2.