下面我们就以Apriori算法为例
来具体的讲一讲
关联规则到底是怎么挖出来的
Apriori算法是关联规则里头
最经典的一个挖掘算法
也是现在最靠谱的一个挖掘算法
因为它是数出来的
所以没有一些不确定的信息
数出来的最靠谱
那么具体怎么数
一般包括两个步骤
第一个找频繁K项集
第二个根据频繁K项集来找频繁K+1项集
如此循环逐渐地找更长的频繁项集
那么具体我们来看一下
首先我们来看一个表
这个表里头有两列
第一列是Tid
第二列是Items
那么Tid就是交易号
Items就是他买的东西
总共四条记录
第一条买了A C D
第二条买了B C E
第三条买了A B C E
第四条买了B E
第一步就是根据这个表来挖掘单向频繁集
说白了就是数出来
然后看一下A被买了2次
B被买了3次
C被买了3次
D被买了1次
E被买了3次
那么根据最小支持度的原则
砍掉一些不频繁的项集
这个D买了1次不频繁砍掉它
于是我们得到了一项频繁集
刚才这个表是一项侯选集
删掉D之后得到一项频繁集
就是A B C E
它们分别被买了2次 3次 3次 3次
然后我们根据一项频繁集
来找二项侯选集
也就是说一项频繁集里头A B C E
再跟上其它的一些项
比如说AC AB AE
然后B后面跟着BC BE
C后面跟着CE
这里头产生了二项侯选集
有这么六条
再根据最小支持度原则
砍掉一些不频繁的二项集
比如说AB就出现一次砍掉
AE就出现一次砍掉
那么留下来的AC 2次
BC 2次 BE 3次 CE 2次
就是二项频繁集
这就从二项侯选集到了二项频繁集
依此类推
再根据二项频繁集找三项侯选集
三项侯选集里头我们找到了
ABC还有BCE
然后再根据最小支持度
砍掉一个ABC
剩下BCE 买了2次
这就是三项频繁集
关联规则就是这么一步一步被挖出来的
把这个表看懂了
那么关联规则的基本算法也就基本明白了
但是Apriori算法有一个特别大的缺点
就是复杂度太高
尤其是当频繁项级特别长的时候
那么每加一次就要扫一次数据库
这个时候当你的频繁项集特别长的时候
数据库的承载力
这还真不一定受得了
为了改进它的这一个巨大的缺点
有很多人对Apriori做了一些改进算法
其中最著名的就是FP-树
FP-树的细节我们不再讲了
还是比较复杂的
有兴趣的同学可以自己查些资料看一下
也可以线下交流
但是大家需要记住的
就是FP-树的一个巨大的优点
就是它克服了Apriori算法的复杂度问题
既有了这个算法的靠谱性问题
就是得出来的结果是数出来的
非常可靠
又有了算法复杂度低的这么一个优点
关联规则挖掘是不是已经完美了
也不尽然
我们说了算法虽然完美
但是挖出来的知识规则
要用到实际业务中好使
才是真正的好算法
那么关联规则算法在用的时候
只有两个指标
支持度和可信度
结果出现了一些问题
大家来看一个例子
这是一个有10000个样本的数据
没有一条一条列出来
但是有一些合计的数据
大家看一下就是
既买游戏又买录像的人总共有4000个
然后买录像不买游戏的有3500个
不买录像但是买游戏的有2000个
不买游戏也不买录像的有500个
有这么一个表
这样的话我们可以根据这个表来算出
下面这条规则的支持度和置信度
就是从买游戏到买录像
它的支持度和置信度
支持度比较好算
既买游戏又买录像的总共有4000人
总共有10000个人
那么支持度就是40%
它的置信度
我们要用它俩的交集的支持度4000
除以前项的支持度
前项就是买游戏的支持度
买游戏的总共有6000个人
所以拿4000除以6000是三分之二
这个可信度就是66.6%
那么从买游戏到买录像的置信度66.6%
已经不算少了
但实际上我们来看
买录像的人数总共有7500个
占总共的75%
实际上更高
比66%要多
也就是说实际上买录像带
和买游戏它俩是负相关的
这就产生了一个问题
也就是说置信度有时候
并不那么靠谱
那么这个问题怎么解决
我们又发明了一个新的指标 提升度
提升度的具体算法就是
A∩B的概率除以A的概率
再除以B的概率
这是A到B的提升度
这个概率公式也可以把它稍微变一下形
变成B在A下的条件概率
除以B单独出现的概率
这样的话业务上更容易理解
就是在A出现的同时出现B的概率
比上B它单独出现的概率
如果是大于1的话
那么说明相关性是比较高的
也就是说A出现的话
B出现的概率会更高
如果这个比例是小于1的话
那么说明A出现的话B再出现的概率
其实是更小的
所以这就有了一个提升度的指标
也为我们分析相关性
A和B的相关性提供了一个很好的指标
就是Lift 提升度
A到B的提升度如果是大于1的话
表明A与B正相关
如果小于1的话表明A与B是负相关的
刚才的例子我们算一下A到B的提升度是0.89
所以录像带和游戏之间
是存在负相关性的
那么由此关联规则的挖掘方法
还有它的指标已经基本上讲完
大家对关联规则应该有了一个
比较明确和清晰的认识
对于它的应用场景还有应用哪些指标
来满足我们的业务需求
应该也有一些自己的判断
那么讲了以上这些关联规则的挖掘算法
还有它的相应指标之后
希望大家对关联规则有一个
比较清晰整体的认识
它是一个比较靠谱的挖掘算法
它又有比较灵活的三个指标
供大家所使用
以后怎么样在业务上使用关联规则
需要大家自己去判断