2009-11-06 7 views
9

본문 부분 간의 각도에 따라 일부 이미지를 클러스터링하려고합니다. 각 이미지로부터 추출MATLAB : SOM (Self-Organizing Map) 클러스터링에 필요한 도움

특징은 :

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

따라서 입력 데이터 사이즈 1057x10의 행렬, 여기서 화상의 수 1,057 스탠드와 몸통 본체 부의 각도 10 나타낸다. 마찬가지로 testSet은 821x10 매트릭스입니다.

88 개의 클러스터로 입력 데이터의 모든 행을 클러스터하고 싶습니다. 그런 다음이 클러스터를 사용하여 TestData가 속하는 클러스터를 찾습니다.

이전 작품에서 나는 매우 간단합니다 K-Means clustering을 사용했습니다. K-Means에게 88 개의 클러스터로 데이터를 클러스터하도록 요청합니다. 그리고 테스트 데이터의 각 행과 각 클러스터의 중심 사이의 거리를 계산 한 다음 가장 작은 값을 선택하는 다른 방법을 구현하십시오. 이것은 해당 입력 데이터 행의 클러스터입니다.

나는 두 가지 질문이 있습니다

(1) 그것이 MATLAB이 사용 SOM을 할 수 있습니까? AFAIK SOM은 시각적 클러스터링을위한 것입니다. 그러나 각 클러스터의 실제 클래스를 알아야만 나중에 해당 클러스터가 속한 클러스터를 계산하여 테스트 데이터에 레이블을 지정할 수 있습니다.

(2) 더 나은 해결책이 있습니까?

+1

입니까? SOM이란 무엇입니까? 당신의 문제는 무엇입니까? 이미지에서 신체 부위들 사이의 각도를 찾는 것입니까? 아니면 클러스터링 알고리즘입니까? –

답변

16

Self-Organizing Map (SOM)Artificial Neural Network (ANN)의 감독되지 않는 변형으로 간주되는 클러스터링 방법입니다. 그것은 (주어진 데이터에 가장 강한 활성화를 표시하는 노드가 그들 사이 경쟁) 네트워크를 양성하는 경쟁 학습 기술을 사용

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

가 상호 연결된 노드의 그리드로 구성되어있는 것처럼 당신은 SOM 생각할 수

(정사각형, 육각형, ..). 각 노드는 가중치의 N- 희미한 벡터 (클러스터하려는 데이터 포인트와 동일한 차원 크기)입니다.

아이디어는 간단합니다. 주어진 벡터가 SOM에 입력되면, 노드 closet을 찾은 다음 이웃 노드의 가중치와 가중치를 업데이트하여 입력 벡터의 가중치와 가중치를 업데이트합니다 (따라서 이름 자체 구성). 이 프로세스는 모든 입력 데이터에 대해 반복됩니다. 형성

plotsompos

클러스터는 암시 적으로 노드가 자신을 정리하고 비슷한 무게와 노드 그룹을 형성하는 방법에 의해 정의된다. 시각적으로 쉽게 볼 수 있습니다.

plotsomnd

SOM 대신 우리는 우리가 그것을 원하는 그리드의 노드의 수와 형태를 지정, 우리는 클러스터의 고정 된 수를 부과하지 않는 점에서 K-Means algorithm 유사하지만 서로 다른 방법에 우리의 데이터에 적응하십시오.당신이 훈련 된 SOM을 가지고, 당신은 새로운 테스트 입력 벡터를 분류 할 때

기본적으로, 당신은 단순히 그리드에 노드 가장 가까운 (유사성 조치로 거리) (최고의 매칭 단위 BMU)에 할당 해당 BMU 노드에 속하는 벡터의 [다수] 클래스를 예측하여 제공하십시오. 매스 웍스

  • Neural Network Toolboxclustering using SOM에 대한 used 할 수 있습니다합니다 (nctool 클러스터링 도구 참조)

    plotsomhits

    MATLAB를 들어, SOM을 구현하는 도구 상자의 번호를 찾을 수 있습니다. 정확히 88 개 클러스터를 원하는 이유는 무엇 체크 아웃 가치 또한

  • SOM Toolbox