Обнаружение группы в наборах данных - PullRequest
7 голосов
/ 12 января 2010

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

Ответы [ 3 ]

5 голосов
/ 13 января 2010

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

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

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

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

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

3 голосов
/ 13 января 2010

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

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

2 голосов
/ 13 января 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...