.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/covariance/plot_robust_vs_empirical_covariance.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. or to run this example in your browser via JupyterLite or Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_covariance_plot_robust_vs_empirical_covariance.py: ======================================= تقدير التغاير القوي مقابل التجريبي ======================================= تقدير أقصى احتمال للتغاير المعتاد حساس جدًا لوجود القيم المتطرفة في مجموعة البيانات. في مثل هذه الحالة، سيكون من الأفضل استخدام مقدر قوي للتغاير لضمان أن يكون التقدير مقاوماً للملاحظات "الخاطئة" في مجموعة البيانات. [1]_, [2]_ مقدر الحد الأدنى لمحدد التغاير ---------------------------------------- مقدر الحد الأدنى لمحدد التغاير هو مقدر قوي، عالي نقطة الانهيار (أي يمكن استخدامه لتقدير مصفوفة التغاير لمجموعات البيانات شديدة التلوث، حتى :math:` rac{n_ ext{samples} - n_ ext{features}-1}{2}` قيم متطرفة) للتغاير. الفكرة هي إيجاد :math:` rac{n_ ext{samples} + n_ ext{features}+1}{2}` ملاحظات يكون التغاير التجريبي لها هو المحدد الأصغر، مما ينتج عنه مجموعة فرعية "نقية" من الملاحظات التي يمكن من خلالها حساب التقديرات القياسية للموقع والتغاير. بعد خطوة تصحيح تهدف إلى تعويض حقيقة أن التقديرات تم تعلمها من جزء فقط من البيانات الأولية، ننتهي بتقديرات قوية لموقع مجموعة البيانات وتغايرها. تم تقديم مقدر الحد الأدنى لمحدد التغاير (MCD) بواسطة P.J.Rousseuw في [3]_. التقييم ---------- في هذا المثال، نقارن أخطاء التقدير التي تحدث عند استخدام أنواع مختلفة من تقديرات الموقع والتغاير على مجموعات بيانات ملوثة موزعة غاوسية: - المتوسط والتغاير التجريبي لمجموعة البيانات الكاملة، والتي تنهار بمجرد وجود قيم متطرفة في مجموعة البيانات - MCD القوي، الذي يحتوي على خطأ منخفض شريطة :math:`n_ ext{samples} > 5n_ ext{features}` - المتوسط والتغاير التجريبي للملاحظات المعروف أنها جيدة. يمكن اعتبار هذا بمثابة تقدير MCD "مثالي"، لذلك يمكن للمرء الوثوق بتنفيذنا من خلال المقارنة مع هذه الحالة. المراجع ---------- .. [1] Johanna Hardin, David M Rocke. The distribution of robust distances. Journal of Computational and Graphical Statistics. December 1, 2005, 14(4): 928-946. .. [2] Zoubir A., Koivunen V., Chakhchoukh Y. and Muma M. (2012). Robust estimation in signal processing: A tutorial-style treatment of fundamental concepts. IEEE Signal Processing Magazine 29(4), 61-80. .. [3] P. J. Rousseeuw. Least median of squares regression. Journal of American Statistical Ass., 79:871, 1984. .. GENERATED FROM PYTHON SOURCE LINES 53-188 .. image-sg:: /auto_examples/covariance/images/sphx_glr_plot_robust_vs_empirical_covariance_001.png :alt: تأثير القيم المتطرفة على تقدير الموقع, تأثير القيم المتطرفة على تقدير التغاير :srcset: /auto_examples/covariance/images/sphx_glr_plot_robust_vs_empirical_covariance_001.png :class: sphx-glr-single-img .. code-block:: Python # Authors: The scikit-learn developers # SPDX-License-Identifier: BSD-3-Clause import matplotlib.font_manager import matplotlib.pyplot as plt import numpy as np from sklearn.covariance import EmpiricalCovariance, MinCovDet # إعدادات المثال n_samples = 80 n_features = 5 repeat = 10 range_n_outliers = np.concatenate( ( np.linspace(0, n_samples / 8, 5), np.linspace(n_samples / 8, n_samples / 2, 5)[1:-1], ) ).astype(int) # تعريف المصفوفات لتخزين النتائج err_loc_mcd = np.zeros((range_n_outliers.size, repeat)) err_cov_mcd = np.zeros((range_n_outliers.size, repeat)) err_loc_emp_full = np.zeros((range_n_outliers.size, repeat)) err_cov_emp_full = np.zeros((range_n_outliers.size, repeat)) err_loc_emp_pure = np.zeros((range_n_outliers.size, repeat)) err_cov_emp_pure = np.zeros((range_n_outliers.size, repeat)) # العملية الحسابية for i, n_outliers in enumerate(range_n_outliers): for j in range(repeat): rng = np.random.RandomState(i * j) # إنشاء البيانات X = rng.randn(n_samples, n_features) # إضافة بعض القيم المتطرفة outliers_index = rng.permutation(n_samples)[:n_outliers] outliers_offset = 10.0 * ( np.random.randint(2, size=(n_outliers, n_features)) - 0.5 ) X[outliers_index] += outliers_offset inliers_mask = np.ones(n_samples).astype(bool) inliers_mask[outliers_index] = False # ملاءمة مقدر قوي للحد الأدنى لمحدد التغاير (MCD) مع البيانات mcd = MinCovDet().fit(X) # قارن التقديرات الأولية القوية مع الموقع والتغاير الحقيقيين err_loc_mcd[i, j] = np.sum(mcd.location_**2) err_cov_mcd[i, j] = mcd.error_norm(np.eye(n_features)) # قارن المقدرات المستفادة من مجموعة البيانات الكاملة بالمعلمات # الحقيقية err_loc_emp_full[i, j] = np.sum(X.mean(0) ** 2) err_cov_emp_full[i, j] = ( EmpiricalCovariance().fit(X).error_norm(np.eye(n_features)) ) # قارن مع تغاير تجريبي مستفاد من مجموعة بيانات نقية # (أي mcd "مثالي") pure_X = X[inliers_mask] pure_location = pure_X.mean(0) pure_emp_cov = EmpiricalCovariance().fit(pure_X) err_loc_emp_pure[i, j] = np.sum(pure_location**2) err_cov_emp_pure[i, j] = pure_emp_cov.error_norm(np.eye(n_features)) # عرض النتائج font_prop = matplotlib.font_manager.FontProperties(size=11) plt.subplot(2, 1, 1) lw = 2 plt.errorbar( range_n_outliers, err_loc_mcd.mean(1), yerr=err_loc_mcd.std(1) / np.sqrt(repeat), label="الموقع القوي", lw=lw, color="m", ) plt.errorbar( range_n_outliers, err_loc_emp_full.mean(1), yerr=err_loc_emp_full.std(1) / np.sqrt(repeat), label="متوسط مجموعة البيانات الكاملة", lw=lw, color="green", ) plt.errorbar( range_n_outliers, err_loc_emp_pure.mean(1), yerr=err_loc_emp_pure.std(1) / np.sqrt(repeat), label="متوسط مجموعة البيانات النقية", lw=lw, color="black", ) plt.title("تأثير القيم المتطرفة على تقدير الموقع") plt.ylabel(r"الخطأ ($||\mu - \hat{\mu}||_2^2$)") plt.legend(loc="upper left", prop=font_prop) plt.subplot(2, 1, 2) x_size = range_n_outliers.size plt.errorbar( range_n_outliers, err_cov_mcd.mean(1), yerr=err_cov_mcd.std(1), label="التغاير القوي (mcd)", color="m", ) plt.errorbar( range_n_outliers[: (x_size // 5 + 1)], err_cov_emp_full.mean(1)[: (x_size // 5 + 1)], yerr=err_cov_emp_full.std(1)[: (x_size // 5 + 1)], label="التغاير التجريبي لمجموعة البيانات الكاملة", color="green", ) plt.plot( range_n_outliers[(x_size // 5): (x_size // 2 - 1)], err_cov_emp_full.mean(1)[(x_size // 5): (x_size // 2 - 1)], color="green", ls="--", ) plt.errorbar( range_n_outliers, err_cov_emp_pure.mean(1), yerr=err_cov_emp_pure.std(1), label="التغاير التجريبي لمجموعة البيانات النقية", color="black", ) plt.title("تأثير القيم المتطرفة على تقدير التغاير") plt.xlabel("مقدار التلوث (%)") plt.ylabel("RMSE") plt.legend(loc="upper center", prop=font_prop) plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 2.801 seconds) .. _sphx_glr_download_auto_examples_covariance_plot_robust_vs_empirical_covariance.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/main?urlpath=lab/tree/notebooks/auto_examples/covariance/plot_robust_vs_empirical_covariance.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/covariance/plot_robust_vs_empirical_covariance.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_robust_vs_empirical_covariance.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_robust_vs_empirical_covariance.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_robust_vs_empirical_covariance.zip ` .. include:: plot_robust_vs_empirical_covariance.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_