Обнаружение группы в наборах данных

Примите группу точек данных, такой как один напечатанный здесь (этот график не характерен для моей проблемы, но просто используемый в качестве подходящего примера):

Осматривая точечную диаграмму визуально, довольно очевидно, что точки данных формируют две 'группы' с некоторыми случайными точками, которые, очевидно, не принадлежат также.

Я ищу алгоритм, который позволил бы мне:

  • запустите с набора данных двух или больше размеров.
  • обнаружьте такие группы от набора данных без предварительных знаний о том, сколько (или если таковые имеются) могло бы быть там
  • после того как группы были обнаружены, 'спросите' модель групп, если новая точка выборки, кажется, соответствует какой-либо из групп
7
задан Community 8 February 2017 в 14:19
поделиться

3 ответа

Существует много вариантов, но если вы заинтересованы в вероятности того, что новая точка данных относится к конкретной смеси, я бы использовал вероятностный подход, такой как модель гауссовской смеси, либо оценивается максимальной вероятностью или байерами.

Оценка максимальной вероятности моделей смесей реализуется в Matlab .

Ваше требование о том, что количество компонентов неизвестно, делает вашу модель более сложной. Доминирующий вероятностный подход состоит в том, чтобы поставить процесс Дирихле до распределения и оценки смеси некоторых байесовского метода. Например, см. в этом документе на бесконечных моделях гауссовской смеси . Модель смеси DP даст вам вывод по количеству компонентов и компоненты, к которым принадлежат каждый элементы, что именно то, что вы хотите. В качестве альтернативы вы можете выполнить выбор модели по количеству компонентов, но это вообще менее элегантно.

Существует много реализации моделей моделей смеси DP, но они могут быть не так удобны. Например, вот реализация MATLAB .

Ваш график предполагает, что вы являетесь пользователем R. В этом случае, если вы ищете расфасованные решения, ответ на ваш вопрос лежит на этой представлении задачи для кластерного анализа .

5
ответ дан 7 December 2019 в 01:21
поделиться

Согласитесь с рекомендацией unwind для аварийного сигнала (), но не забудьте установить другой аварийный сигнал () после завершения работы с блоком периодической обработки.

-121--4268586-

Словарь < > внутренне организован как список списков. Вы не приблизитесь к предельному значению (2GB/8) ^ 2 на 64-разрядном компьютере.

-121--1325909-

Вам нужен один из алгоритмов кластеризации. Все они могут быть определены в 2 группы:

  1. вы указываете количество групп (кластеров) - 2 кластера в вашем примере
  2. алгоритм попытаться угадать правильное количество кластеров самостоятельно

Если вы хотите алгоритм 1-го типа, то K-Means - это то, что вам действительно нужно.

Если требуется алгоритм 2-го типа, возможно, потребуется один из алгоритмов иерархической кластеризации. Я никогда не реализовывал их. Но я вижу простой способ улучшить K-средства таким образом, что нет необходимости указывать количество кластеров.

2
ответ дан 7 December 2019 в 01:21
поделиться

Я думаю, что вы ищете что-то вдоль линий алгоритма кластеризации K-означает алгоритм кластеризации .

Вы должны быть в состоянии найти адекватные реализации в большинстве языков общего назначения.

3
ответ дан 7 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: