문제

신체 부위 사이의 각도에 따라 일부 이미지를 클러스터하려고합니다.

각 이미지에서 추출한 기능은 다음과 같습니다.

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

따라서 입력 데이터는 크기 1057x10의 행렬이며 1057은 이미지 수를 나타내고 10 개는 몸통이있는 신체 부품의 각도를 나타냅니다. 마찬가지로 테스트 세트는 821x10 행렬입니다.

입력 데이터의 모든 행이 88 개의 클러스터로 클러스터되기를 원합니다. 그런 다음이 클러스터를 사용하여 테스트 다타가 어떤 클러스터에 빠지는가?

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

두 가지 질문이 있습니다.

  1. 이 작업을 수행 할 수 있습니까? Matlab에서? Afaik Som은 시각적 클러스터링을위한 것입니다. 그러나 각 클러스터의 실제 클래스를 알아야하므로 나중에 어떤 클러스터가 속한 클러스터를 계산하여 테스트 데이터에 레이블을 지정할 수 있습니다.

  2. 더 나은 솔루션이 있습니까?

도움이 되었습니까?

해결책

자체 조직지도 (SOM) 감독되지 않은 변형으로 간주되는 클러스터링 방법입니다. 인공 신경망 (Ann). 사용합니다 경쟁 학습 네트워크를 훈련시키는 기술 (노드는 주어진 데이터에 가장 강력한 활성화를 표시하기 위해 경쟁합니다).

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

상호 연결된 노드 (정사각형 모양, 육각형, ..)의 그리드로 구성된 것처럼 SOM을 생각할 수 있습니다. 각 노드는 중량의 N-DIM 벡터 (클러스터하려는 데이터 포인트와 동일한 차원 크기)입니다.

아이디어는 간단합니다. SOM에 대한 입력으로 벡터를 주어 주면 노드를 찾습니다. 옷장 그런 다음 인접 노드의 가중치와 가중치를 업데이트하여 입력 벡터의 이름에 접근 할 수 있습니다 (따라서 자체 구성). 이 프로세스는 모든 입력 데이터에 대해 반복됩니다.

plotsompos

형성된 클러스터는 노드가 자신을 구성하고 비슷한 가중치를 가진 노드 그룹을 형성하는 방식에 의해 암시 적으로 정의됩니다. 시각적으로 쉽게 볼 수 있습니다.

plotsomnd

Som은와 비슷한 방식입니다 K- 평균 알고리즘 그러나 고정 된 수의 클러스터를 부과하지 않고 대신 데이터에 적응하려는 그리드의 노드의 숫자와 모양을 지정한다는 점에서 다릅니다.

기본적으로 훈련 된 SOM이 있고 새로운 테스트 입력 벡터를 분류하려면 그리드의 가장 가까운 거리 (유사성 측정) 노드에 할당합니다.가장 잘 어울리는 장치 bmu), 그리고 그 bmu 노드에 속하는 벡터의 [대다수] 클래스를 예측으로 제공하십시오.

plotsomhits

MATLAB의 경우 SOM을 구현하는 여러 도구 상자를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top