2010-01-12 9 views
7

Załóżmy grupę punktów danych, takich jak jeden wykreślona tutaj (ten wykres nie jest specyficzne dla mojego problemu, ale po prostu użyte jako odpowiedni przykład):Grupa wykrywanie w danych ustawia

Sprawdzanie graf punktu rozproszenia wizualnie jest dość oczywiste, że punkty danych tworzą dwie "grupy", z pewnymi przypadkowymi punktami, które oczywiście nie należą do żadnej z nich.

Szukam algorytmu, który pozwoli mi:

  • początek ze zbioru danych z dwóch lub większej liczby wymiarów.
  • wykrywanie takich grup z zestawu danych bez wcześniejszej wiedzy na temat tego, ile (lub jeśli w ogóle) może tam być
  • po wykryciu grup, "zapytaj" modelu grup, jeśli nowy punkt próbki wydaje się pasować do dowolna z grup

Odpowiedz

5

Istnieje wiele możliwości wyboru, ale jeśli jesteś zainteresowany prawdopodobieństwem, że nowy punkt danych należy do konkretnej mieszaniny, użyłbym podejścia probabilistycznego, takiego jak modelowanie mieszaniny Gaussian, oszacowane według prawdopodobieństwa maksymalnego lub Bayesa.

Maksymalne oszacowanie prawdopodobieństwa mixtures models is implemented in Matlab.

Twoje wymaganie, że liczba składników jest nieznana, sprawia, że ​​Twój model jest bardziej złożony. Dominujące podejście probabilistyczne polega na uprzednim umieszczeniu procesu Dirichleta w rozkładzie mieszaniny i oszacowaniu za pomocą pewnej metody bayesowskiej. Na przykład zobacz this paper on infinite Gaussian mixture models. Model mieszania DP da ci wnioskowanie o liczbie komponentów i komponentów, do których należą poszczególne elementy, a dokładnie tego, czego potrzebujesz. Alternatywnie można dokonać wyboru modelu na liczbę komponentów, ale generalnie jest to mniej eleganckie.

Istnieje wiele modeli modeli mieszanych DP, ale mogą one nie być tak wygodne. Na przykład tutaj jest Matlab implementation.

Twój wykres sugeruje, że jesteś użytkownikiem R. W takim przypadku, jeśli szukasz rozwiązań w opakowaniach jednostkowych, odpowiedź na twoje pytanie leży w tym Task View for cluster analysis.

2

Potrzebujesz jednego z algorytmów grupowania. Wszystkie z nich można podzielić na 2 grupy:

  1. określić liczbę grup (klastrów) - 2 klastry w swoim przykładzie
  2. algorytm próbują odgadnąć prawidłową liczbę klastrów sama

Jeśli chcesz algorytmu pierwszego typu, a następnie K-średnich jest to, czego naprawdę potrzebujesz.

Jeśli potrzebujesz algorytmu drugiego typu, prawdopodobnie potrzebujesz jednego z hierarchicznych algorytmów grupowania. Nigdy nie wdrożyłem żadnego z nich. Ale widzę łatwy sposób na poprawę K-środków w taki sposób, że nie będzie konieczne określanie liczby klastrów.