2009-11-06 10 views
9

Próbuję zgrupować kilka obrazów w zależności od kątów między częściami ciała.MATLAB: pomoc potrzebna do grupowania samoporządkującej się mapy (SOM)

Cechy z każdego obrazu wyciągnięto to:

angle1 : torso - torso 
angle2 : torso - upper left arm 
.. 
angle10: torso - lower right foot 

Tak więc dane wejściowe macierzy o rozmiarze 1057x10, gdzie 1057 oznacza liczbę obrazów, a 10 dla kątów blachy z tułowia. Podobnie zestaw testowy to macierz 821x10.

Chcę, aby wszystkie wiersze danych wejściowych były grupowane za pomocą 88 klastrów. Potem użyję tych klastrów, aby znaleźć, do których klastrów wpada TestData?

W poprzedniej pracy użyłem K-Means clustering, co jest bardzo proste. Po prostu poprosiliśmy K-Means, aby zgrupował dane w 88 klastrach. I zaimplementuj inną metodę, która oblicza odległość między każdym wierszem w danych testowych i środkach każdego klastra, a następnie wybierz najmniejsze wartości. Jest to klaster odpowiedniego rzędu danych wejściowych.

Mam dwa pytania:

(1) Czy można to zrobić przy użyciu SOM w MATLAB-ie? AFAIK SOM służą do wizualnego grupowania. Ale muszę znać rzeczywistą klasę każdego klastra, aby później móc oznaczyć moje dane testowe, obliczając, do którego klastra należy.

(2) Czy masz lepsze rozwiązanie?

+1

Dlaczego chcesz dokładnie 88 klastrów? Czym jest SOM? Jaki jest twój problem - czy znajduje on kąty pomiędzy częściami ciała z obrazu, czy jest to algorytm skupienia? –

Odpowiedz

16

Self-Organizing Map (SOM) to metoda grupowania uważana za nienadzorowaną odmianę Artificial Neural Network (ANN). Wykorzystuje konkurencyjne uczenia technik trenować sieci (węzły konkurowania między sobą, aby wyświetlić najsilniejszy aktywację danemu danych)

www.lohninger.com/helpcsuite/kohonen_network_-_background_information.htm

Można myśleć o SOM jakby składa się z sieci połączonych ze sobą węzłów (kształt kwadratowy, sześciokątny, ..), gdzie każdy węzeł jest N-dim wektora wag (ten sam rozmiar wymiaru, co punkty danych, które chcemy zgrupować).

Pomysł jest prosty; podając wektor jako dane wejściowe do SOM, znajdujemy do niego węzeł szafy, a następnie aktualizujemy jego ciężary i ciężary sąsiednich węzłów tak, że zbliżają się one do wektora wejściowego (stąd nazwa samoorganizująca się). Ten proces jest powtarzany dla wszystkich danych wejściowych.

plotsompos

Skupiska uformowane pośrednio od tego, jak węzły organizowania się i tworzą grupę węzłów o podobnej wadze. Można je łatwo zobaczyć wizualnie.

plotsomnd

SOM są w sposób podobny do K-Means algorithm ale różni się tym, że nie nakładają stałą liczbę klastrów, zamiast tego określić liczbę i kształt węzłów w siatce, że chcemy go dostosuj się do naszych danych.

Zasadniczo, gdy masz wyszkolony SOM i chcesz zaklasyfikować nowy testowy wektor wejściowy, po prostu przypisz go do najbliższego węzła (miara dystansu jako miary podobieństwa) w tabeli (Jednostka najlepszego dopasowania BMU), i przewidzieć jako predykcję klasę [większości] wektorów należących do tego węzła BMU.

plotsomhits

Dla MATLAB, można znaleźć wiele skrzynek narzędziowych, które wdrażają SOM: