Оценка плотности проходит грань между неконтролируемым обучением, проектированием признаков и моделированием данных. Некоторыми из наиболее популярных и полезных методов оценки плотности являются смешанные модели, такие как гауссовские смеси (GaussianMixture), и подходы на основе соседей, такие как оценка плотности ядра (KernelDensity). Гауссовские смеси более подробно обсуждаются в контексте кластеризации, потому что этот метод также полезен в качестве неконтролируемой схемы кластеризации. Хотя в приведенном выше примере для простоты используется одномерный набор данных, оценка плотности ядра может выполняться в любом количестве измерений, хотя на практике проклятие размерности приводит к ухудшению производительности в больших измерениях.
Пример где класс KernelDensity используется для демонстрации принципов оценки плотности ядра в одном измерении.
На первом плоте показана одна из проблем использования гистограмм для визуализации плотности точек в 1D. Интуитивно гистограмму можно представить как схему, в которой единичный «блок» расположен над каждой точкой регулярной сетки. Однако, как показывают две верхние панели, выбор сетки для этих блоков может привести к совершенно разным представлениям об основной форме распределения плотности. Если вместо этого мы центрируем каждый блок по точке, которую он представляет, мы получаем оценку, показанную на нижней левой панели. Это оценка плотности ядра с ядром «цилиндр».
Scikit-learn реализует эффективную оценку плотности ядра с использованием структуры Ball Tree или KD Tree с помощью оценщика KernelDensity. Все доступные ядра показаны на втором плоте.На третьем плоте сравниваются оценки плотности ядра для распределения 100 выборок в 1 измерении. Хотя в этом примере используются одномерные распределения, оценка плотности ядра также легко и эффективно расширяется до более высоких измерений.