我正在做购物车分析我的数据集是一组交易向量,以及所购买的产品。
在交易上应用 k-means 时,我总会得到一些结果。随机矩阵可能还会显示一些簇。
有没有办法测试我发现的聚类是否重要,或者这很可能是一个巧合。如果是,我该怎么做。
我正在做购物车分析我的数据集是一组交易向量,以及所购买的产品。
在交易上应用 k-means 时,我总会得到一些结果。随机矩阵可能还会显示一些簇。
有没有办法测试我发现的聚类是否重要,或者这很可能是一个巧合。如果是,我该怎么做。
关于购物车分析,我认为主要目标是个性化客户最常购买的产品组合。这association rules
代表了这里最自然的方法(实际上它们实际上是为此目的而开发的)。分析客户购买的产品组合,以及这些组合重复的次数,得出“如果条件,则结果”类型的规则以及相应的兴趣度测量。您还可以考虑Log-linear models
以调查所考虑变量之间的关联。
现在关于集群,这里有一些可能会派上用场的信息:
起初考虑Variable clustering
。变量聚类用于评估共线性、冗余,并将变量分成可以作为单个变量评分的聚类,从而减少数据。查找varclus
函数(R 中的包 Hmisc)
集群稳定性评估:函数clusterboot
{R package fpc}
用于集群验证的基于距离的统计信息:函数cluster.stats
{R package fpc}
正如 mbq 所提到的,使用轮廓宽度来评估最佳集群数量。看这个。关于轮廓宽度,另请参见optsil函数。
通过差距统计估计数据集中的集群数量
要计算差异指数和距离测量,请参阅dsvdis和vegdist
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 值有什么好处?