2011-07-29 51 views

回答

12

這個想法是迭代地將你的雲點分成兩部分。換句話說,您將構建一個隨機二叉樹,其中每個分裂(具有兩個子項的節點)對應於將雲中的點分割爲2.

您從點雲開始。

  • 計算其矩心(重心)瓦特

  • 選擇雲

  • 的點中隨機CL的點相比瓦特時構建點Cr作爲CL的對稱點(分段CL-> w是相同W-> CR)

  • 獨立的兩個雲點,那些最接近爲Cr屬於subcloud R,和那些最接近CL屬於subcloud L

  • 重申,subclouds R和L

注:

可以丟棄隨機點一旦你使用它們。但是,保持所有子模塊的質心。

當你的子云包含正好一個點時停止。

如果您想要k個羣集,只需取k個質心,使其包含初始雲的所有點。如果你願意,你可以做更多更復雜的事情(最小化雲的變化等)。假設你想要4個集羣(爲了方便起見,兩個冪)然後你只需要將你的雲切成兩半,然後切割每個集羣在兩個subclouds。如果你想要8個簇,那麼再次將這些子云分成兩份。再次爲16個集羣。

如果你想K個K的集羣不是2的冪(比方說24),那麼看看最接近的二個冪。現在是16個。你還缺少8個集羣。每個「level-16-cluster」是「level-16-subcloud」的質心。你要做的是取8個「16級集羣」(例如隨機),並將它們分別替換爲兩個「子級」「32級集羣」。 (這兩個孩子的「32級集羣」對應於兩個「級別-32-subcloud」,加起來就是父級「level-16-subcloud」)

+0

感謝您的回答,現在更加清晰。但是我有兩件事我不明白 - 「在雲的點之間隨機選擇一個點」 - 意味着我需要選擇一個隨機向量? 第二件事 - 我不明白我需要爲K羣集做什麼? – Nir

+0

那麼,你有一堆你想要聚類的點,對吧?在雲中選擇一個點意味着......在雲中選擇一個點=)我不完全明白你的意思是隨機矢量......在雲中選擇點,而不是在整個空間中隨機選擇。我已經更新了K簇的帖子 – Fezvez

+0

我猜矢量mean point =]但是如果我的隨機選擇不好,並導致不均勻分裂簇呢?我雖然在做:我會選擇擁有最大SSE的集羣 - 你認爲什麼? – Nir