2014-05-11 62 views
0

我們可以使用分層凝聚聚類用於以此格式對數據進行聚類嗎?分層凝聚聚類

"beirut,proff,email1" 
"beirut,proff,email2" 
"swiss,aproff,email1" 
"france,instrc,email2" 
"swiss,instrc,email2" 
"beirut,proff,email1" 
"swiss,instrc,email2" 
"france,aproff,email2" 

如果不是,那麼使用字符串值對數據進行聚類的兼容聚類算法是什麼?

謝謝你的幫助!

回答

0

任何類型的聚類都需要距離度量。如果所有你願意處理你的琴絃的方式是把它們看作彼此相等或者不相等,那麼你能做的最好的就是現場明智的漢明距離......也就是說,「abc ,def,ghi「和」uvw,xyz,ghi「是2,並且」abw,dez,ghi「之間的距離也是2.如果您想在特定字段中聚類相似的字符串 - 比如說」斯洛伐克「和「斯洛文尼亞」是因爲名稱相似,或者「波蘭」和「烏克蘭」是因爲它們相互接壤,所以您會使用更復雜的指標。給定一個距離度量標準,層次聚集聚類應該可以正常工作。

但是,所有這些都假設聚類就是你真正想要做的。您的數據集看起來像是一種奇怪的用於聚類的用例。

+0

實際上,有許多聚類算法不*使用距離度量。 –

+0

Anony-Mousse:你可以給我舉個例子,請在聚類算法中不要使用距離度量? –

0

分層聚類是一個相當靈活的聚類算法。除了某些聯繫(Ward?),它對「距離」沒有任何要求 - 它也可能是相似的,通常負值也會起作用,您不需要三角不等式等。

其他算法 - 比如k-means - 則更加有限。 K-means最小化方差;所以它只能處理(平方)歐幾里德距離;它需要能夠計算均值,因此數據需要處於一個連續的,固定的維度向量空間中;而稀疏可能是一個問題。

可能更靈活的一種算法是廣義DBSCAN。本質上,它需要二元決策「x是y的鄰居」(例如小於ε的距離)以及測量「核心點」(例如密度)的謂詞。你可以想出任意複雜的謂詞,這可能不再是單一的「距離」了。

無論哪種方式:如果您可以測量這些記錄的相似性,那麼hiearchical clustering應該工作。問題是,如果你可以從數據中獲得足夠的相似性,而不僅僅是3位:「具有相同的電子郵件」,「具有相同的名稱」,「具有相同的位置」--3位不會提供有趣的等級。