先验算法-频繁项集生成
Apriori Algorithm- frequent item set generation
我正在使用 Apriori 算法在已识别的频繁项集上识别 customer.Based 的频繁项集我想在客户将新项目添加到他的购物清单时提示向客户推荐项目,作为频繁项集我得到的结果如下;
[1],[3],[2],[5]
[2.3],[3,5],[1,3],[2,5]
[2,3,5]
我的问题是,如果我只考虑 [2,3,5] 集来向客户提出建议,我错了吗?即,如果客户将项目 3 添加到他的购物清单中,我会推荐项目 2 和项目 5。如果客户将项目 1 添加到购物清单中,则不会提出任何建议,因为我只考虑集合 [2,3,5],而项目 1 是在那个集合中不可用。我想知道我的逻辑(仅考虑集合[2,3,5])是否足以为用户提出建议
没有。推导推荐规则需要更多努力。
仅仅因为 [2,3,5] 是频繁出现的 而不是 就意味着 2 -> 3,5 是一个好的规则。
考虑 2 是一个非常受欢迎的产品,但 3,5 只是勉强频繁的情况。考虑一个加油站。 [gas, coffee, bagel] 可能是一个频繁项集,但很少有购买 gas 的顾客也会购买 coffee 和 bagel(置信度低)。
你做想考虑2,3 -> 5这样的规则,因为它们可能更高的置信度。 IE。如果客户买汽油和咖啡,建议买百吉饼。
频率不足以推荐! 考虑在 80% 的情况下购买 2 和 3。 60% 的情况下购买了 2、3、5。天真地,在 8 次中有 6 次,客户也会购买 5 次,这是 75% 正确的!但这 不 意味着 5 是一个很好的推荐!因为 5 可能占总数的 80%,所以如果他买了 2 和 3,他实际上买 5 的可能性降低了 5%,我们这里有负相关。这就是为什么 你也需要看看升力。或者其他类似的措施,还有很多。
你应该根据项集相对于其子项集的频率如何来找出规则。例如
- 如果 (2,3,5) 的频率接近 (3,5) 的频率,规则将是 (3,5) -> 2
- 如果 (2,3,5) 的频率接近 (3) 的频率,则规则为 3 -> (2,5)
- 如果 (2,3) 的频率接近 (2) 的频率,则规则为 2 -> 3
这意味着不仅可以使用最大频繁项集来制定规则,还可以使用其子频繁项集。如果你能考虑项目集相对于其他项目集的频率有多接近,规则会更精确。
我正在使用 Apriori 算法在已识别的频繁项集上识别 customer.Based 的频繁项集我想在客户将新项目添加到他的购物清单时提示向客户推荐项目,作为频繁项集我得到的结果如下;
[1],[3],[2],[5]
[2.3],[3,5],[1,3],[2,5]
[2,3,5]
我的问题是,如果我只考虑 [2,3,5] 集来向客户提出建议,我错了吗?即,如果客户将项目 3 添加到他的购物清单中,我会推荐项目 2 和项目 5。如果客户将项目 1 添加到购物清单中,则不会提出任何建议,因为我只考虑集合 [2,3,5],而项目 1 是在那个集合中不可用。我想知道我的逻辑(仅考虑集合[2,3,5])是否足以为用户提出建议
没有。推导推荐规则需要更多努力。
仅仅因为 [2,3,5] 是频繁出现的 而不是 就意味着 2 -> 3,5 是一个好的规则。
考虑 2 是一个非常受欢迎的产品,但 3,5 只是勉强频繁的情况。考虑一个加油站。 [gas, coffee, bagel] 可能是一个频繁项集,但很少有购买 gas 的顾客也会购买 coffee 和 bagel(置信度低)。
你做想考虑2,3 -> 5这样的规则,因为它们可能更高的置信度。 IE。如果客户买汽油和咖啡,建议买百吉饼。
频率不足以推荐! 考虑在 80% 的情况下购买 2 和 3。 60% 的情况下购买了 2、3、5。天真地,在 8 次中有 6 次,客户也会购买 5 次,这是 75% 正确的!但这 不 意味着 5 是一个很好的推荐!因为 5 可能占总数的 80%,所以如果他买了 2 和 3,他实际上买 5 的可能性降低了 5%,我们这里有负相关。这就是为什么 你也需要看看升力。或者其他类似的措施,还有很多。
你应该根据项集相对于其子项集的频率如何来找出规则。例如
- 如果 (2,3,5) 的频率接近 (3,5) 的频率,规则将是 (3,5) -> 2
- 如果 (2,3,5) 的频率接近 (3) 的频率,则规则为 3 -> (2,5)
- 如果 (2,3) 的频率接近 (2) 的频率,则规则为 2 -> 3
这意味着不仅可以使用最大频繁项集来制定规则,还可以使用其子频繁项集。如果你能考虑项目集相对于其他项目集的频率有多接近,规则会更精确。