1

我编写了数据挖掘先验算法,它在小型测试数据上运行良好,但在更大的数据集上运行它时遇到问题。

我正在尝试生成经常一起购买的物品的规则。

我的小测试数据是 5 笔交易和 10 种产品。

我的大测试数据是 1100 万笔交易和大约 2700 种产品。

问题:最小支持和过滤非频繁项。假设我们对频率为 60% 或更高的项目感兴趣。 frequency = 0.60;

当我Min-support以 60% 的频率计算一个小数据集时,算法将删除所有购买次数少于 3 次的商品。Min-support = numberOfTransactions * frequency;

但是当我尝试对大型数据集做同样的事情时,算法将在第一次迭代后过滤几乎所有项目集,只有几个项目能够满足这样的平面。

所以我开始把那架飞机越来越低,运行算法很多次。但甚至没有 5% 的人给出预期的结果。我必须将频率百分比降低到 0.0005 才能获得至少 50% 的第一次迭代中涉及的项目。

您如何看待目前的情况,因为它是人工生成的,因此可能是数据问题?(微软冒险作品版)或者是我的代码或最小支持计算问题?

也许您可以提供任何其他解决方案或更好的方法来做到这一点?

谢谢!

4

2 回答 2

0

也许这就是您的数据的样子。

如果您有很多不同的项目,而每次交易的项目很少,那么项目同时发生的机会就很低。

是否验证了结果,是否修剪错误,或者算法是否正确,以及您的参数是否错误?

你真的能说出一个 Apriori 修剪但不应该修剪的项集吗?

问题是,是的,选择参数很困难。不,先验不能使用自适应阈值,因为这不能满足单调性要求。您必须对所有项目集大小使用相同的阈值。

于 2013-02-13T20:24:13.750 回答
0

实际上,这完全取决于您的数据。对于一些真实的数据集,我必须将支持阈值设置为低于 0.0002 才能获得一些结果。对于其他一些数据集,我使用了 0.9。这真的取决于你的数据。

顺便说一句,Apriori 和 FPGrowth 存在变体,可以同时考虑多个最小支持,为不同的项目使用不同的阈值。例如,CFP-Growth 或 MIS-Apriori。还有一些专门用于挖掘稀有项集或稀有关联规则的算法。如果你对这个话题感兴趣,你可以查看我的软件,它提供了一些算法:http ://www.philippe-fournier-viger.com/spmf/

于 2013-06-06T03:29:52.257 回答