aprior算法

1. aprior算法

aprior算法是一种寻找数据之间关联性算法。用它在大数据中可以分析出一些有趣的结论。

2. 老韩家养了鸭没

村口老王和老李在村口聊天,聊天内容讲到村里人养了哪些家禽,清单如下。

人家家禽
老赵鸡,鸭
老钱鸡,牛,猪,狗
老孙牛,猪,猫,鸭
老李鸭,鸡,牛,猪
老周鸭,鸡,牛,猫

问题:住的比较远的老韩,他家养了鸡,他还会养什么呢?

老王观察到一个现象:村里大部分人养了鸡都会养鸭,于是老王说:“老韩家也会养鸭”。

上述老王的说法,可以用更为科学的aprior算法分析。

3. 概念

  1. 频繁项集:经常出现在一起的两个元素的集合。例如:{鸡,鸭}就是一个频繁项集。
  2. 关联规则:两个元素之间可能存在很强的关联关系。例如:养鸡和养鸭可能就存在很强的关联关系。我们记做规则:{鸡}-> {鸭}
  3. 支持度:一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。例如:{鸡}的支持度就是 4 / 5, {鸡, 鸭}的支持度就是3 / 5。
  4. 置信度: 置信度是表明抽样指标和总体指标的误差不超过一定范围的概率保证度。置信度是基于关联规则的,例如:关联规则为:{鸡}-> {鸭},那么:置信度 = {鸡,鸭} 的支持度 / {鸡} 的支持度。 (3/5) / (4/5) = 0.75。这就意味着在养鸡的家庭中75%都适用于这个规则。

4.aprior原理

上面分析后,道理大概都已经懂了。如果要在一串清单中找出各元素的关系。那么我们只需要做如下步骤:

  1. 找出包含所有元素的集合S。=>S = {鸡,鸭,牛,猪,狗,猫}
  2. 找出集合S的非空子集,非空子集个数 2^n - 1。 => s1 = {鸡}, s2 = {鸭} …, 总个数为 2^5 -1 = 31
  3. 计算每个子集的支持度。
  4. 找出频繁项集,即为支持度大的集合。
  5. 计算关联规则的置信度。

如果是这样计算,那么当数据量大的时候,运算量将会超级大。于是我们发现另一个有趣的结论:

如果某个项集是频繁项集,那么它所有的子集也是频繁的。即如果 {鸡,鸭} 是频繁的,那么 {鸡}, {鸭} 也一定是频繁的。

这结论用我们上面例子来讲:养{鸡,鸭}的人家多,那养{鸡}和养{鸭}的人家肯定也多。

这个结论有啥用?仔细一看确实没啥用,但是我们把它的逆否命题写出来就有用了。

如果一个集合不频繁,那么它的父集也一定不频繁。

道理很简单:养{牛}的人家少,那养{鸡,牛}的人家肯定也少。

5.aprior算法过程

看这个例子:

item
1 3 4
2 3 5
1 2 3 5
2 5

扫描出1项集:

setsup
{1}2
{2}3
{3}3
{4}1
{5}3

减除 sup < 50%的项集

setsup
{1}2
{2}3
{3}3
{5}3

扫描出2项集

setsup
{1, 2}1
{1, 3}2
{1, 5}1
{2, 3}2
{2, 5}3
{3, 5}2

减除 sup < 50%的项集

setsup
{1, 3}2
{2, 3}2
{2, 5}3
{3, 5}2

扫描出3项集

setsup
{2,3,5}2

所以最终的结果为频繁3项集为{2, 3, 5}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三和小钢炮

谢谢客官~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值