聚类算法只是对数据进行预处理,
它要达到的目的是使目标函数最小。
目标函数是:类内方差/类间方差最小,
目标函数的本意是:类内看起来很相似,类间看起来很不相似。
不同的数据集有不同的空间形状,各类的形状也不同,
而目标函数说明:聚类要得到的超球,
这好像导致了矛盾。
原因有以下几点:
1.数据集是粗糙的(应该是超球形才对,因为有某些共性的东西使他们向这个共性中心靠拢)。
2.那些非共性的东西使超球畸化(我们需要对粗糙数据集进行球化,这点很重要,也很难)。
如果我们的算法表达不出超球化的聚类结果,
那聚类就毫无意。
共性可能很直观(直接体现在超球形分布上),
可能很隐蔽(需要线性(PCA等),非线性变换(谱聚类,SOM等)),
可能容易被忽略(所占数值比例很小等)。
K-means是那么直接,
它只能找到那些有直观共性的数据集;
SOM、GA等算法精准度上表现不错,
它 们在找共性方面比较智能,
机理不能被数学化且耗时。