k-means聚类中的保持集的目的是什么?

时间:2017-07-02 21:26:45

标签: python algorithm cluster-analysis k-means

Link to the MIT problem set

以下是我目前的想法 - 请指出我错在哪里:)

我相信:坚持套装的目的是为了陪衬, 相比之下,对于训练集 - 证明了 k-means消除了每一轮的错误。

为此,保持集在开始时显示错误 - ning,即它不会重新计算每个簇的质心 在每个集群之后,处于每个集群的中心 已分配点。它只是停止,错误是 计算

训练集,最初80%的分数 - 使用randomPartition()进行分区 - 只需通过 整个k-means函数,然后返回错误 这一点。)

我可能错了:问题可能只是 请求另一个k-means运行,但是设置较小。 此外,计算训练集与保持的误差的方法 看起来和我一模一样。他们可能不是。 另外,我听说过涉及特征选择的事情。

根据目前的信念我正在考虑的当前方法: 复制k-means函数,并修改副本 这样它就会在初始后返回簇,maxDistance 跑。将此功能用于保持集。

1 个答案:

答案 0 :(得分:2)

群集的目标是对类似的数据点进行分组。但是,您如何知道您分组的类似数据点是否正确分组?你怎么判断你的结果?因此,您可以将可用数据分为两组:训练和坚持。

以此为比喻。

将训练集作为练习题进行考试。你练习练习题,尽力做到最好并提高你的技能。

您可以将坚持设定为实际检查。如果你在练习题(训练集)上做得很好,那么你可能会在考试中表现良好(坚持设定)。

现在你知道你在练习和考试(当然是在尝试之后)的表现如何,你可以根据这些表现来推断你的整体表现并判断什么是好的(集群的数量是多少好或有多好)。

因此,您将在训练数据上应用聚类算法,而不是在保持数据上应用聚类算法,并找出聚类中心(聚类的代表)。对于保留数据,您只需使用从算法中找到的聚类中心,并将数据点分配给中心最近的聚类。根据某些性能指标(在您的情况下为平方距离误差)计算您在训练和保持数据方面的表现。最后,将这些指标与不同的k值进行比较,以获得良好的判断力。还有更多内容,但为了配置,它似乎已经足够了。

在实践中,还有许多其他方法。但其中大部分的关键思想都是一样的。有一个统计社区,您可以在其中找到更多类似的问题:https://stats.stackexchange.com/

参考文献:

https://en.wikipedia.org/wiki/Cross-validation_(statistics)#Holdout_method