如何测试我的二进制数据聚类是否重要

机器算法验证 聚类 统计学意义 二进制数据
2022-03-23 01:33:51

我正在做购物车分析我的数据集是一组交易向量,以及所购买的产品。

在交易上应用 k-means 时,我总会得到一些结果。随机矩阵可能还会显示一些簇。

有没有办法测试我发现的聚类是否重要,或者这很可能是一个巧合。如果是,我该怎么做。

4个回答

关于购物车分析,我认为主要目标是个性化客户最常购买的产品组合。association rules代表了这里最自然的方法(实际上它们实际上是为此目的而开发的)。分析客户购买的产品组合,以及这些组合重复的次数,得出“如果条件,则结果”类型的规则以及相应的兴趣度测量。您还可以考虑Log-linear models以调查所考虑变量之间的关联。

现在关于集群,这里有一些可能会派上用场的信息:

起初考虑Variable clustering变量聚类用于评估共线性、冗余,并将变量分成可以作为单个变量评分的聚类,从而减少数据。查找varclus函数(R 中的包 Hmisc)

集群稳定性评估:函数clusterboot{R package fpc}

用于集群验证的基于距离的统计信息:函数cluster.stats{R package fpc}

正如 mbq 所提到的,使用轮廓宽度来评估最佳集群数量。这个关于轮廓宽度,另请参见optsil函数。

通过差距统计估计数据集中的集群数量

要计算差异指数和距离测量,请参阅dsvdisvegdist

EM 聚类算法可以通过交叉验证来决定创建多少个聚类,(如果您不能先​​验地指定要生成多少个聚类)。虽然 EM 算法保证收敛到最大值,但这是一个局部最大值,不一定与全局最大值相同。为了更好地获得全局最大值,整个过程应该重复几次,对参数值进行不同的初始猜测。整体对数似然图可用于比较获得的不同最终配置:只需选择局部最大值中的最大值即可您可以在开源项目WEKA中找到 EM 集群器的实现

也是一个有趣的链接。

也在这里搜索Finding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

最后,您可以使用clusterfly探索聚类结果

这是一种使用蒙特卡罗来显示结果是否正确的方法。

我们的零假设 H_0 是我们的数据集没有有趣的聚类。我们的替代假设 H_1 是我们的数据集包含一个有趣的聚类。

因此,我们认为有趣的是,比具有相同行和列边距的随机数据集的聚类结构更有趣。当然可以选择其他约束,但是放松约束会使我们的结果过于笼统,而缩小约束会使聚类固定很多,因此我们的结果会自动变得微不足道。正如我们将看到的,由于现有的随机化方法,边距是一个不错的选择。

让我们将聚类误差(聚类内距离的平方)定义为我们的测试统计量,T 来自Π_0。我们原始数据集的值为t

我们对这个分布一无所知,除了我们可以从中抽取样本。这使其成为蒙特卡洛的理想人选。

现在我们从 Π_0 中抽取n (iid) 个随机样本,并使用公式 p_emp = 1 / (n+1) * (Σ_i=1-n I(t_i >= t) + 1)计算经验p值

随机抽样可以通过交换随机化来完成。简单来说,搜索一个正方形,其中两个对角为 1,另外两个角为 0。然后对角进行翻转。这是保持列和行的边距。该过程重复足够多次,直到数据集足够随机化(这将需要一些实验)。有关这方面的更多信息,请参阅 Gionis 等人的通过交换随机化评估数据挖掘结果。人。

一种方法是定义数据的分布并将聚类误差作为检验统计量 t。

例如,如果我们将具有相同行和列边距的所有数据集视为我们的数据分布,那么我们可以从该分布中取出 n 个随机矩阵 Xi 并计算它们的聚类误差。然后我们可以通过公式计算经验p值

有类似剪影的东西,它在一定程度上定义了决定集群质量的统计数据(例如,它用于优化 k)。现在一个可能的蒙特卡洛将如下所示:您生成许多与原始数据相似的随机数据集(例如通过在每列中的行之间混洗值),聚类并获得平均轮廓的分布,然后可用于测试显着性真实数据中的剪影。我仍然管理我从未尝试过这个想法。

平均轮廓指数不足以验证我们的聚类。具有较小平均轮廓指数的聚类可能比较大的聚类具有更好的质量;对第一个集群的所有成员都具有高 SIL 指数但其他集群的 SIL 值为负且平均 SIL 指数仍然为正且高的情况进行成像。那么在集群中拥有高而稀有的 SIL 索引有什么好处呢?拥有高 p 值有什么好处?