나는이 방식을 다음 증분 클러스터링 알고리즘을 우리는 새로운 데이터 포인트가 고려 될 때마다 점진적으로 업데이트 할 수 있습니다.증분 계층 구조는
트리의 각 내부 노드는 해당 노드 아래의 중심의 평균으로 표시됩니다. 주어진 중심점을 업데이트 할 때 (새로운 중심점이이 중심점에 지정되었으므로)이 중심 위에있는 모든 노드를 재구성해야합니다.
Let x a new data-point
c = searchClosestCenter(x, tree) // return the centroid closest to x
if(distance(x, c) > threshold)
x becomes a new cluster center (i.e. a new centroid)
AddCenterToTree(x, tree)
else
assign x to c (i.e. update the centroid by taking x)
UpdateTree(c) // update all nodes that are on top of c
방법이 기능은이 경우에 정의 할 수 있습니다 :
따라서 알고리즘은 무언가 같이된다? 거기에 더 좋은 해결책이 있습니까?
괜찮 으면서 R-tree 증분 (즉, 전체 계층 구조를 다시 작성하지 않고 잎을 추가/업데이트/제거 할 수 있습니까?)입니까? 그것은 내 경우에 사용하는 방법을 명확하지 않습니다 (내 두 번째 알고리즘 설명을 참조하십시오), C++ (어느 날 편리한) 구현을 찾았지만 전화 할 필요가있는 기능을 보려면 간단하지 않습니다. , 내 알고리즘에 따르면. – shn
이것은 하나의 헤더 파일 RTree.h에 구현 된 C++ 구현입니다. http://superliminal.com/sources/RTreeTemplate.zip – shn
예, R-tree는 변경을 위해 설계된 자체 균형 트리입니다. –