Нужно ли стандартизировать ваши данные перед кластером? В примере scikit learn
о DBSCAN, здесь они делают это в строке:
X = StandardScaler().fit_transform(X)
Но я не понимаю, зачем это нужно. В конце концов, кластеризация не предполагает какого-либо конкретного распределения данных - это неконтролируемый метод обучения, поэтому его целью является изучение данных.
Зачем было бы необходимо преобразовывать данные?
Ответы:
Нормализация не всегда требуется, но это редко вредит.
Некоторые примеры:
К-значит :
Пример в Matlab:
(К вашему сведению: как я могу определить, является ли мой набор данных кластеризованным или некластеризованным (т. Е. Образующим один кластер )
Распределенная кластеризация :
Искусственная нейронная сеть (входы) :
Искусственная нейронная сеть (входы / выходы)
Интересно, что изменение единиц измерения может даже привести к появлению совершенно другой структуры кластеризации: Кауфман, Леонард и Питер Дж. Руссеув. «Поиск групп в данных: введение в кластерный анализ». (2005).
Кауфман и соавт. Продолжаем с некоторыми интересными соображениями (стр. 11):
источник
Стандартизация данных рекомендуется, потому что в противном случае диапазон значений в каждой функции будет действовать как вес при определении способа кластеризации данных, что обычно нежелательно.
Например, рассмотрим стандартную метрику для большинства алгоритмов кластеризации (включая DBSCAN в sci-kit learn)
euclidean
, иначе называемую нормой L2. Если одна из ваших функций имеет диапазон значений, значительно больший, чем у других, кластеризация будет полностью подчиняться этой функции. Чтобы проиллюстрировать это, посмотрите на простой пример ниже:Отсюда следует, что в евклидовых расстояниях между нестандартизированными версиями преобладает третий столбец, поскольку его диапазон значений намного больше, чем в двух других. Однако, когда данные стандартизированы, это больше не становится проблемой и взвешивает каждый объект как равный при расчете расстояния между каждой точкой данных.
источник
Стандартизация не обязательна, независимо от того, требуется она или нет, может зависеть от выбранного вами показателя расстояния.
Например, если вы выберете расстояние Махаланобиса, то разделение будет основано на количестве стандартных точек, разделяющих точки, а не на абсолютном расстоянии между ними, так как это метрика, инвариантная к масштабу.
Как и в случае многих вещей в машинном обучении, нет точного и быстрого ответа, и единственный способ узнать наверняка - это применить различные методы, позволяющие получить наиболее подходящие результаты для ваших данных.
источник
В некоторых случаях я нашел полезным определить функцию «оценки бизнеса», определяющую «важность» измерений, используемых для кластеризации. Например, для группирования покупателей по зеленому продукту, если яблоки в два раза дороже апельсинов, количество яблок увеличится вдвое.
источник