我已经运行了包含S_Dbw和SD有效性索引的clv包,用于在R commander中进行聚类。 (http://cran.r-project.org/web/packages/clv/index.html)
我使用S_Dbw索引评估了来自DBSCAN,K-Means,Kohonen算法的聚类结果。但对于所有这三种算法,S_Dbw都是“Inf”。
是“无限”的含义吗?为什么我要面对“Inf”。我的群集结果有问题吗?
一般来说,什么时候S_Dbw索引结果为“Inf”?
答案 0 :(得分:3)
将不同的算法与这样的索引进行比较时要小心。
原因是索引本身就是一个算法。一个特定的聚类必然是每个索引的“最佳”。索引和实际聚类算法之间的主要区别在于索引不会告诉您如何找到“最佳”解决方案。
一些例子:k-means最小化了从集群成员到集群中心的距离。单链路层次聚类将找到分区之间具有最佳最小距离的分区。好吧,DBSCAN会找到数据集的分区,其中所有密度连接点都在同一个分区中。因此,如果您使用适当的措施,DBSCAN是最佳的。
严重。不要假设因为一个算法在特定度量中得分高于另一个算法意味着算法效果更好。您通过这种方式找到的所有内容都是特定算法与特定度量相关的更多(cor-)。在概念层面上将其视为度量与算法之间的一种相关性。
使用度量来比较相同算法的不同结果是不同的。那么显然一个算法本身不应该有好处。对参数可能仍然有类似的影响。例如,当你增加k时,k-means 中的簇内距离显然会下降。
事实上,许多措施在DBSCAN结果上都没有明确定义。因为DBSCAN具有噪声点的概念,索引所做的不 AFAIK。
不假设该指标会显示“真实”或“正确”的指示。甚至更少,有用或新。因为您应该使用聚类分析而不是找到特定度量的数学最优值,而是要了解有关数据的新内容和有用的内容。这可能不是一些衡量标准。
回到指数。它们通常完全围绕k-means设计。从简短的S_Dbw看,我的印象是一个“集群”的时刻由一个单个对象(例如DBSCAN中的噪声对象)组成,该值将变为无穷大 - aka:undefined。似乎该索引的作者没有考虑这个角落的情况,而只是在没有出现这种情况的玩具数据集上使用它。 R实现无法修复此问题,无需转移原始索引,而是将其转换为另一个索引。处理噪音对象和单身人士远非微不足道。我还没有看到一个不会以某种方式失败的索引 - 通常,诸如“所有对象都是噪声”之类的解决方案要么得分完美,要么通过将每个噪声对象放到最近的位置来平凡地改进每个聚类非单一群集。如果您希望您的算法能够说“此对象不属于任何群集”,那么我不知道任何适当的索引。
答案 1 :(得分:1)
IEEE浮点标准分别将Inf
和-Inf
定义为正无穷大和负无穷大。这意味着您的结果太大而无法以给定的位数表示。