“是什么意思?”;Inf";在S_Dbw中输出在R commander中?

“是什么意思?”;Inf";在S_Dbw中输出在R commander中?,r,cluster-analysis,R,Cluster Analysis,我在R commander中运行了包含S_Dbw和SD有效性索引的clv包,用于集群目的。(http://cran.r-project.org/web/packages/clv/index.html) 我使用S_Dbw索引评估了DBSCAN、K-Means、Kohonen算法的聚类结果。但对于所有这三种算法,S_Dbw都是“Inf” 是“无限”的意思吗?为什么我要面对“Inf”。我的聚类结果有什么问题吗 通常,当S_Dbw索引结果为“Inf”时,IEEE浮点标准将Inf和-Inf分别定义为正无穷

我在R commander中运行了包含S_Dbw和SD有效性索引的clv包,用于集群目的。(http://cran.r-project.org/web/packages/clv/index.html)

我使用S_Dbw索引评估了DBSCAN、K-Means、Kohonen算法的聚类结果。但对于所有这三种算法,S_Dbw都是“Inf”

是“无限”的意思吗?为什么我要面对“Inf”。我的聚类结果有什么问题吗


通常,当S_Dbw索引结果为“Inf”时,IEEE浮点标准将
Inf
-Inf
分别定义为正无穷大和负无穷大。这意味着您的结果太大,无法用给定的位数表示。

在比较不同算法与此类索引时要小心

原因是索引本身就是一个算法。对于每个索引,一个特定的聚类必然是“最佳”的。索引和实际聚类算法之间的主要区别在于,索引不会告诉您如何找到“最佳”解决方案

一些例子:k-均值最小化从集群成员到集群中心的距离。单链路分层聚类将找到分区之间具有最佳最小距离的分区。DBSCAN将找到数据集的分区,其中所有密度连接点都在同一分区中。因此,DBSCAN是最佳的—如果您使用适当的度量

真的。不要因为一个算法在某个特定度量中的得分高于另一个,就认为该算法工作得更好。通过这种方式,您可以发现一个特定的算法与一个特定的度量更相关。在概念层面上,将其视为度量和算法之间的一种关联

使用一种方法来比较同一算法的不同结果是不同的。显然,一个算法本身不应该有什么好处。在参数方面可能仍然存在类似的效果。例如,当增加k时,k-means中的簇内距离显然应该减小

事实上,许多测量值在DBSCAN结果上甚至没有明确定义。因为DBSCAN有噪声点的概念,索引不支持

不要假设测量结果会告诉你什么是“正确的”或“正确的”。更不用说有用或新的东西了。因为你应该使用聚类分析,不是为了找到一个特定度量的数学最优值,而是为了了解一些关于你的数据的新的有用的东西。这可能不是某个度量值


回到指数上来。它们通常完全是围绕k-means设计的。通过对S_Dbw的简短观察,我有一个印象,即当一个“簇”由单个对象(例如DBSCAN中的噪声对象)组成时,该值将变为无穷大-又名:未定义。似乎这个指数的作者没有考虑这个角落的情况下,但只使用在玩具数据集,在这种情况下没有出现。R实现无法修复这一问题,如果不从原始索引转移,而是将其转换为另一个索引。处理噪声对象和单例远非小事。我还没有看到一个索引不会以这样或那样的方式失败——通常,像“所有对象都是噪声”这样的解决方案要么得分完美,要么通过将每个噪声对象放在最近的非单例集群中,每个集群都可以得到微小的改进。如果你希望你的算法能够说“这个对象不属于任何集群”,那么我不知道任何合适的索引。

粗略地说,
Inf
意味着无限。您应该发布一个可复制的示例,以帮助社区了解您的特定代码为什么会生成
Inf
:我的结果太大是好是坏?例如,在我的数据集中(13000条记录,有10个属性),对于大于100的聚类数,S_dbw得到“Inf”,但对于小于100的聚类数,它得到一个实际值。我认为,从我的实验结果来看,S_Dbw可能无法处理大量集群,因为它无法处理100多个集群的所有集群。您必须仔细阅读软件包文档,如果失败,请联系作者(尊敬的!他们不会为此获得报酬)。如果您运行的是32位R,那么也可以尝试64位R,因为这将在它们达到顶点之前为您提供更大的浮动。