Вопрос или проблема
Я анализирую портфель из aproximadamente 225 акций и получил данные для каждой из них, основываясь на их “коэффициенте цена/прибыль”, “рентабельности активов” и “росте прибыли на акцию”. Я хотел бы сгруппировать эти акции по их атрибутам на 3 или 4 группы. Однако в наборе данных есть существенные выбросы. Вместо того чтобы полностью их удалять, я хотел бы оставить их в наборе. Какой алгоритм машинного обучения лучше всего подойдет для этого? Мне сказали, что K-средние не сработают так хорошо, так как выбросы искажают центроиды определенной группы. Буду рад любым предложениям!
Вы можете попробовать подход иерархической кластеризации. В качестве примера, можно первоначально найти K кластеров для точек данных. Затем для каждого из K кластеров можно найти произвольное количество кластеров из точек данных внутри кластера, чтобы дополнительно уточнить кластеризацию.
DBSCAN — это метод кластеризации на основе плотности, который предназначен для применения в случаях с шумом. Пользователь контролирует минимальный размер кластера, который, надеюсь, может быть определен исходя из задачи, а кластеры, которые меньше этого, игнорируются как шум.
Я предлагаю попробовать разбиение на локальной глубине PaLD. Этот метод, как правило, показывает лучшие результаты по сравнению с большинством других современных алгоритмов кластеризации (например, DBSCAN), когда плотность сильно варьируется в каждом кластере. Если вы пользователь R, эта библиотека доступна на CRAN. Вот ссылка на репозиторий GitHub https://github.com/cran/pald. Некоторые люди работают над обобщенной версией этого алгоритма, чтобы справиться с неопределенностью, и она, вероятно, будет доступна как библиотека R в будущем.
Ответ или решение
Какой алгоритм машинного обучения лучше всего подходит для кластеризации данных с выбросами?
В процессе анализа портфолио из 225 акций по таким параметрам, как коэффициент "Цена/Прибыль", "Возврат на активы" и "Рост прибыли на акцию", вы сталкиваетесь с проблемой наличия выбросов в данных. При этом важно сохранить данные с выбросами, чтобы не потерять потенциально важную информацию.
В таком случае наиболее эффективным подходом будет использование алгоритма кластеризации DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Ниже приведены подробности, почему этот вариант был бы оптимальным, а также альтернативные методы, которые также можно рассмотреть в данной ситуации.
Почему именно DBSCAN?
-
Структура данных: DBSCAN — это алгоритм, основанный на плотности, который позволяет идентифицировать кластеры разной формы и размера, особенно в данных с разнообразной плотностью. Он эффективно справляется с выбросами, рассматривая их как шум, что помогает сохранить полезную информацию в вашем наборе данных.
-
Гибкость: У DBSCAN есть два основных параметра —
eps
(максимальное расстояние между двумя точками, чтобы они считались частью одного кластера) иmin_samples
(минимальное количество точек, необходимых для формирования кластера). Этот уровень контроля позволяет вам точно настраивать алгоритм под ваш набор данных, включая внимание к выбросам. -
Сохранение выбросов: В отличие от алгоритмов, таких как K-средние, где выбросы могут искажать центры кластеров, DBSCAN не требует предварительной инициализации центров и эффективно игнорирует менее плотные области, что делает его идеальным для вашей задачи.
Альтернативные подходы
Хотя DBSCAN является замечательным вариантом, есть и другие методы, которые можно рассмотреть:
-
Иерархическая кластеризация: Этот метод позволяет строить дерево кластеров, что может быть полезно для понимания структуры данных. Вы можете сначала провести иерархическую кластеризацию, а затем сгруппировать данные в 3 или 4 кластера. Однако этот метод может требовать большего времени на вычисления, особенно с большим набором данных.
-
K-Means с предобработкой: Хотя вы уже упомянули, что K-средние имеют недостатки в условиях выбросов, вы можете использовать предварительную обработку с использованием методов, таких как Z-оценка или межквартильный размах, чтобы удалить или сгладить их влияние перед применением K-средних. Однако этот подход может потенциально привести к потере важной информации.
-
Метод Partitioning at Local Depth (PaLD): Этот алгоритм хорошо работает для данных с разной плотностью и уступает место многим традиционным методам кластеризации, включая DBSCAN. Он может предоставить более качественные результаты, если в ваших данных присутствуют значительные вариации в плотности.
Заключение
Подводя итог, если вы планируете провести эффективную кластеризацию вашего набора данных с выбросами, алгоритм DBSCAN является самым подходящим выбором. Несмотря на преимущества иные методы, такие как иерархическая кластеризация и PaLD, могут также оказаться полезными, в зависимости от ваших конкретных требований к анализу и структурированию данных.
Выбор подходящего алгоритма — это шаг на пути к получению ценной информации из вашего анализа. Успехов в вашей работе с данными!