㈠ 数据挖掘- 关联分析算法
关联分析,顾名思义就是找出哪几项之间是有关联关系的,举个例子:
以上是五个购物记录,从中我们可以发现,购买了尿布的人其中有3个购买了啤酒,那么久我们可以推测,尿布和啤酒之间有较强的关联关系,尽管他们之间看起来并没有什么联系,也就是能得到规则:
因为购物分析能较好地描述关联分析,所以又被叫做 购物篮分析 。
为了较好的描述这个分析的各种名词,我们把上面的表格重新设计一下:
把每一个购物订单中,涉及到的商品都变成1,没涉及到的变成0,也就是将各个商品的购买记录 二元化 。
当然肯定也有多个分类的情况。
那么面包,牛奶这些就叫数据集的 项 ,而他们组合起来的子集就叫做 项集 。可以为空,空集是不包含任何项的项集,如果一个项集包含k个子项,就叫做k-项集。
订单12345叫做 事务 ,某个项集在所有事务中出现多少次,叫做项集的 支持度计数 。
在上面的表格中,项集{啤酒、尿布、牛奶}的支持度计数为2,因为有两个事务(3、4)包含这一项集。
用 支持度 和 置信度 来衡量,假定存在规则 ,其中X和Y是 不相交 的项集,则支持度为:
其中N是数据集中的事务个数,相当于表示该规则在数据集中出现了多少次。
置信度为:
置信度的意思就是,在出现X的情况下,有多少次同时出现了Y,代表这个关联规则的频繁程度。
注意置信度的分母是 ,因此这个评价可能会存在一定的问题。
关联分析的核心目标就是找出支持度大于等于某个阈值, 同时 置信度大于等于某个阈值的所有规则,这两个阈值记为 和 。
为了更有效率的完成这个过程,通常把关联规则算法分为两步:
可以看出来,首先要求得频繁项集,这步骤的开销很大,但是只需要考虑支持度就可以了,第二步只考虑置信度就可以了。
下面就可以分两步来解析算法:
首先我们可以把项集联想成一个树形结构,每层代表着不同的k-项集,依层递增,非叶子节点来自于他的几个父节点的并集,如图:
我们肯定不能通过传统的方式,遍历这些节点,算出支持度,然后筛选掉不满足最小支持度的那些,这样开销太大,因此我们引入先验原理,来辅助剪枝。
这个原理不难想象,假如一个项集{a,b}是非频繁项集,那么{a,b,c}肯定也是,因为ab是,在{a,b,c}中与之关联的c必须在ab出现之后才存在,因此他的支持度肯定不会大于{a,b}。
频繁的就是支持度大于等于最小支持度的项集,非频繁就是小于的。
我们可以利用这一定理,把非频繁项集的超集一并从树中减去,这样就能大大的降低计算次数,如图:
虚线圈上的,就是在{a,b}确定是非频繁项集之后,剪掉的超集,这些是不用计算的。
根据这个原理,可以说一下Apriori算法。
根据上面说的先验原理,Apriori算法先从项集宽度最低的1开始,遍历所有的项集支持度,找出频繁项集(因为第一层在找出支持度之前),之后根据先验原理,挑选任意两个频繁项集组成2-频繁项集(很简单,如果挑非频繁的,那组成的项集就不是频繁项集了),再用2-项集挑选3-项集,直到挑选不出更高层次的项集为止,把这些项集作为 候选项集 ,如图:
图中1-项集中,啤酒,面包,尿布,牛奶的支持度大于等于3(设 为3),则由他们组成2-项集,继续筛选满足支持度不小于3的项集,再由2-项集生成3-项集,这就是 Apriori 算法筛选频繁项集的基本步骤。总结如下:
上面提到了用k-1项集生成k-项集,那么如何才能最有效率的产生k-项集呢,这里用了 的方法,也就是找到一对(k-1)-项集,当他们的前(k-2)项都相同时,进行合并,合并之后的结果就是{ },因为前k-2项是相同的。
举个例子:
上面说了如何产生候选项集,接下来就是如何更有效率的确定支持度计数了,同样,如果遍历一个一个查的话效率是很低的,我们可以用枚举的方法遍历每个事务包含的项集,以查找3-项集为例,如图:
因为我们要查3-项集,因此树状结构就分到3-项集为止。
因为3-项集的开头第一个项肯定在1,2,3之间,我们就设定这三个数为三个分支,无论到哪个节点,都严格按照这个来分(1在左,2在中,3在右),在下面的层次中如何碰到比123更大的,则再向右分,就可以得到图中的关于事务t的所有3-项集。
有了所有项集的列表,我们可以用候选项集去匹配这些项集,从而看t中是否包含候选项集,如果包含,则支持度+1。
可以使用Hash树来进行匹配,从而实现支持度计数。
如下图,就是一个Hash树的例子,每个内部节点都使用Hash函数 来确定应当沿着当前节点的哪个分支向下,所以1,4,7就到了同一分支。
我们对于单个事务,可以遍历Hash树,设事务为t,则保证所有包含属于事务t的候选3-项集的叶节点至少访问一次。
由于我们之前已经通过树的方式枚举出了t中所有的3-项集,那么我们跟这个Hash一走分支,找到对应3-项集的就+1支持度,即可算出每个候选项集的支持度。
提取规则相应的比较简单,设有 频繁项集Y ,我们忽略前件为空和后件为空的规则,每个频繁项集能产生 个关联规则,提取方法就是将Y划分为两个 非空 的子集X和Y-X,使得 满足 置信度阈值 也就是最小置信度。
同样的,提取规则也有一个原理:
参考频繁项集的寻找过程,我们可以利用树形结构对规则进行剪枝。
树的每层对应规则后件中的项数,如图:
假设规则{ } { }不满足置信度阈值的要求,那么可以丢弃后件包含{a}的所有规则,如上图所示。
至此我们经历了寻找频繁项集和提取规则的过程,基本Apriori算法就算完成了,不过还有一些需要考虑的细节。
在实际应用过程中,往往频繁项集产生的数量可能很大,所以很难表示,我们需要寻找一种方法,找到一些有代表性的频繁项集,以保证其描述性。
通常有如下两种方法:
如图:
这种表示很明显降低了需要表示项集的个数,我们需要别的候选项集,直接取极大频繁项集的子集就行,任意一个肯定都是。
但是这么做,表示不出他们子集的支持度,所以就需要再遍历数据集,确定非极大频繁项集的支持度,不是很方便。
所以我们还可以用闭频繁项集来表示。
先来看闭项集的概念:
那么闭频繁项集的概念就很好理解了:
如图,我们假设 是40%。
这种做法可以保证支持度和描述性。
之前举的例子都是二元分类的,要么1要么0,下面看多分类的,我们很容易想到可以用独热编码解决这个问题,把所有分类二元化,但是这样就存在一个问题,有的属性值可能会不够频繁,没办法成为频繁项集。
所以最好是把多分类的项根据实际情况进行分类化,不要针对每个属性都设置独热编码。
或者将不太频繁的属性值合并为一个称作其他的类别。
所以面对多分类属性,我们要做的就是:
独热编码二元化-针对这些值进行一定的合并,或者分类或者并为其他 - 删除冗余的项 - 避免包含多个来自同一属性的项的候选集(例如{ },被写到了一个候选集中,但是实际上这种情况不可能发生,由于独热编码进行的二元化而产生了这种情况,需要避免。)
我们也会遇到一些连续属性,可以通过以下几种方式处理:
这种做法有一个问题就是分类的效果取决于区间的个数和跨度,如果取不好很难得到理想的结果。
如果要验证统计出的值是否具有统计意义,可以参考假设检验中针对不同比较的不同公式,这里不再举例。
把mini-Apriori算法中的支持度代入到Apriori算法的支持度中即可。
举个例子:
想要衡量模型的好与坏,肯定要有一个评估指标,我们可以根据业务实际去评价,这是主管评价,叫做 主观兴趣度度量 ,这个显然要结合业务,所以我们要看看一些客观指标。
指标的评价往往依赖于相依表,这个相依表有点类似于混淆矩阵:
其中A,B代表在事务中出现,!A,!B代表没有在事务中出现,空列空行例如 代表A的支持度计数, 表示包含B但是不包含A的事务的个数。
最基本的就是置信度和支持度了,但是这两种指标都很难做到客观评价模型,会受到多种因素的影响。
我们可以用 兴趣因子 来衡量模型:
首先我们引入 提升度 的概念,它用于计算规则置信度和 规则后件 中项集的支持度之间的比率,
对于二元变量,提升度等价于另一种称作兴趣因子的客观度量,定义为:
其中N是事务个数。
如果
但是兴趣因子有一定局限性,看上图,{p,q}和{r,s}的兴趣因子分别为1.02和4.08,虽然p和q同时出现在88%的文档中,但是他们的兴趣因子接近于1,表明他们相互独立,另一方面,{r,s}的兴趣因子闭{p,q}的高,但是r和s很少出现在一个文档中,这种情况下,置信度要比兴趣因子更可信,置信度表明p和q之间的联系94.6%远高于r和s之间。
另外还可以引入 相关系数 ,逻辑类似于向量的相关系数:
相关度的值从-1到1,如果变量相互独立,则Φ=0。
他的局限性在于在食物中把同时出现和同时不出现视为同等重要,这往往不符合实际规律,同时对于倾斜的变量很难度量。
IS度量 可以用于处理非对称二元变量,定义如下:
IS数学上等价于二元变量的余弦度量。
但是IS取决于A和B的支持度,所以存在与置信度度量类似的问题——即使是不相关或者负相关的模式,度量值也可能相当大。
支持度,全置信度,可以应用于较大的项集,兴趣因子,IS、PS、Jaccard系数等使用多维相依表中的频率,可以扩展到多个变量。
针对大多数项具有较低或中等的频率,但是少数项具有很高频率的数据集。
交叉支持模式是一个项集 ,他的支持度比率是:
小于用户指定的阈值 。
需要保证全置信度小于上面的支持度比率,而全置信度是:
其中 .
全置信度能够确保项集中的项之间是强关联的,例如,假定一个项集X的全置信度是80%,如果X中的一个项出现在某个事物中,则X中其他的项至少也有80%的几率属于同一个事务,这种强关联模式又称 超团模式 。
本文主要讲述数据挖掘分析领域中,最常用的四种数据分析方法:描述型分析、诊断型分析、预测型分析和指令型分析。
当刚涉足数据挖掘分析领域的分析师被问及,数据挖掘分析人员最重要的能力是什么时,他们给出了五花八门的答案。
其实我想告诉他们的是,数据挖掘分析领域最重要的能力是:能够将数据转化为非专业人士也能够清楚理解的有意义的见解。
使用一些工具来帮助大家更好的理解数据分析在挖掘数据价值方面的重要性,是十分有必要的。其中的一个工具,叫做四维分析法。
简单地来说,分析可被划分为4种关键方法。
下面会详细介绍这四种方法。
1. 描述型分析:发生了什么?
最常用的四种大数据分析方法
这是最常见的分析方法。在业务中,这种方法向数据分析师提供了重要指标和业务的衡量方法。
例如,每月的营收和损失账单。数据分析师可以通过这些账单,获取大量的客户数据。了解客户的地理信息,就是“描述型分析”方法之一。利用可视化工具,能够有效的增强描述型分析所提供的信息。
2. 诊断型分析:为什么会发生?
最常用的四种大数据分析方法
描述性数据分析的下一步就是诊断型数据分析。通过评估描述型数据,诊断分析工具能够让数据分析师深入地分析数据,钻取到数据的核心。
良好设计的BI dashboard能够整合:按照时间序列进行数据读入、特征过滤和钻取数据等功能,以便更好的分析数据。
3. 预测型分析:可能发生什么?
最常用的四种大数据分析方法
预测型分析主要用于进行预测。事件未来发生的可能性、预测一个可量化的值,或者是预估事情发生的时间点,这些都可以通过预测模型来完成。
预测模型通常会使用各种可变数据来实现预测。数据成员的多样化与预测结果密切相关。
在充满不确定性的环境下,预测能够帮助做出更好的决定。预测模型也是很多领域正在使用的重要方法。
4. 指令型分析:需要做什么?
最常用的四种大数据分析方法
数据价值和复杂度分析的下一步就是指令型分析。指令模型基于对“发生了什么”、“为什么会发生”和“可能发生什么”的分析,来帮助用户决定应该采取什么措施。通常情况下,指令型分析不是单独使用的方法,而是前面的所有方法都完成之后,最后需要完成的分析方法。
例如,交通规划分析考量了每条路线的距离、每条线路的行驶速度、以及目前的交通管制等方面因素,来帮助选择最好的回家路线。
结论
最后需要说明,每一种分析方法都对业务分析具有很大的帮助,同时也应用在数据分析的各个方面。
㈢ 数据挖掘方法入门——关联分析
自然界中,某件事情发生时,其他事件也会发生,这种联系称为关联。关联分析就是为了寻找事物之间的一些有趣的关联关系。
最让人熟知的就是购物篮分析,商场在分析用户经常同时购买“啤酒、尿布“、“篮球”、“篮球服”等商品组合,于是将其放在一起以促进销售。这种关联关系的分析,不仅应用与网站设计者可以根据访客日志数据,发现访客浏览习惯和网站页面间的关系。
拿某个商场的交易数据中进行分析,数据集中有限的项目经过排列组合以后可以产生大量的关联规则,但是,只有一小部分的规则会是用户感兴趣的,因此需要引入一个“兴趣度”的概念帮助用户评估得到的关联规则。
而与兴趣度评估相关的度量包括:简洁性、正确性、实用性、新颖性
1)简洁性:太复杂的规则会让用户的兴趣度降低,也难以解释和理解
2)正确性:令人信服的程度有多高。
正确性的判断指标是置信度,表示这个规则正确的概率有多大。即在某一项x出现的前提下,另外一项y出现的频率是多少。
置信度confident(x=>y)=p(y|x)
3)实用性:判断该规则再次出现的可能性有多大,即这个指标的覆盖率。
实用性的判断指标是支持度,支持度越大说明规则应用越广泛,即xy同时出现的频率.
支持度support(x=>y)= p(x U y)
4)新颖性:判断规则是否已经被导出的另外一个规则作蕴含。
在这4个指标中,置信度和实用性是用来评判一条规则是强关联规则的依据。
强关联规则:同时满足用户定义的最小支持度阈值和最小置信度阈值的关联规则
弱关联规则:不满足最小支持度阈值和最小置信度阈值的关联规则
5)改善度:
期望可信度是在x没有影响的作用下y出现的频率,p(i)
改善度则是评估x的出现对y的出现的影响性。p(y|x)/p(x)越大,则改善度越高,说明x的出现对y的可能影响就越大。
1)布尔规则和量化规则
(1)布尔规则:性别=女=》职业=老师
(2)量化规则:性别=女=》平均收入=2300
量化关联规则可以直接对原始数据进行处理,或先对数值型属性进行分区间进行动态分割
2)单层规则和多层关联规则
在单层规则中,所有的项不考虑现实数据的多层性,而在实际应用中,涉及不同的抽象层发现的多层关联规则则是一种更有用的关联规则,因为属性之间存在一种层次关系。
(1)不涉及不同抽象层的项的规则称为单层关联规则
adidas篮球=》nike篮球服
(2)较高层次和较低层次之间规则称为多层关联规则
adidas篮球=》篮球服
3)单维规则和多维规则
(1)单维关联规则:处理同一个属性或维度内的联系。
adidas篮球=》nike篮球服
(2)多维关联规则:多个属性或维度之间的联系。
用户的年龄和购买物品
㈣ 大数据掘金之中的数据分析方法不哪些
数据挖掘最常见的十种方法:
1、基于历史的MBR分析(Memory-Based Reasoning;MBR)
基于历史的MBR分析方法最主要的概念是用已知的案例(case)来预测未来案例的一些属性(attribute),通常找寻最相似的案例来做比较。
2、购物篮分析(Market Basket Analysis)
购物篮分析最主要的目的在于找出什么样的东西应该放在一起?商业上的应用在借由顾客的购买行为来了解是什么样的顾客以及这些顾客为什么买这些产品,找出相 关的联想(association)规则,企业借由这些规则的挖掘获得利益与建立竞争优势。举例来说,零售店可借由此分析改变置物架上的商品排列或是设计 吸引客户的商业套餐等等。
3、决策树(Decision Trees)
决策树在解决归类与预测上有着极强的能力,它以法则的方式表达,而这些法则则以一连串的问题表示出来,经由不断询问问题最终能导出所需的结果。典型的决策 树顶端是一个树根,底部有许多的树叶,它将纪录分解成不同的子集,每个子集中的字段可能都包含一个简单的法则。此外,决策树可能有着不同的外型,例如二元 树、三元树或混和的决策树型态。
4、遗传算法(Genetic Algorithm)
遗传算法学习细胞演化的过程,细胞间可经由不断的选择、复制、交配、突变产生更佳的新细胞。基因算法的运作方式也很类似,它必须预先建立好一个模式,再经 由一连串类似产生新细胞过程的运作,利用适合函数(fitness function)决定所产生的后代是否与这个模式吻合,最后仅有最吻合的结果能够存活,这个程序一直运作直到此函数收敛到最佳解。基因算法在群集 (cluster)问题上有不错的表现,一般可用来辅助记忆基础推理法与类神经网络的应用。
5、聚类分析(Cluster Detection)
这个技术涵盖范围相当广泛,包含基因算法、类神经网络、统计学中的群集分析都有这个功能。它的目标为找出数据中以前未知的相似群体,在许许多多的分析中,刚开始都运用到群集侦测技术,以作为研究的开端。
6、连接分析(Link Analysis)
连接分析是以数学中之图形理论(graph theory)为基础,借由记录之间的关系发展出一个模式,它是以关系为主体,由人与人、物与物或是人与物的关系发展出相当多的应用。例如电信服务业可藉 连结分析收集到顾客使用电话的时间与频率,进而推断顾客使用偏好为何,提出有利于公司的方案。除了电信业之外,愈来愈多的营销业者亦利用连结分析做有利于 企业的研究。
7、OLAP分析(On-Line Analytic Processing;OLAP)
严格说起来,OLAP分析并不算特别的一个数据挖掘技术,但是透过在线分析处理工具,使用者能更清楚的了解数据所隐藏的潜在意涵。如同一些视觉处理技术一般,透过图表或图形等方式显现,对一般人而言,感觉会更友善。这样的工具亦能辅助将数据转变成信息的目标。
8、神经网络(Neural Networks)
神经网络是以重复学习的方法,将一串例子交与学习,使其归纳出一足以区分的样式。若面对新的例证,神经网络即可根据其过去学习的成果归纳后,推导出新的结果,乃属于机器学习的一种。数据挖掘的相关问题也可采类神经学习的方式,其学习效果十分正确并可做预测功能。
9、判别分析(Discriminant Analysis)
当所遭遇问题它的因变量为定性(categorical),而自变量(预测变量)为定量(metric)时,判别分析为一非常适当之技术,通常应用在解决 分类的问题上面。若因变量由两个群体所构成,称之为双群体 —判别分析 (Two-Group Discriminant Analysis);若由多个群体构成,则称之为多元判别分析(Multiple Discriminant Analysis;MDA)。
10、罗吉斯回归分析(Logistic Analysis)
当判别分析中群体不符合正态分布假设时,罗吉斯回归分析是一个很好的替代方法。罗吉斯回归分析并非预测事件(event)是否发生,而是预测该事件的机 率。它将自变量与因变量的关系假定是S行的形状,当自变量很小时,机率值接近为零;当自变量值慢慢增加时,机率值沿着曲线增加,增加到一定程度时,曲线协 率开始减小,故机率值介于0与1之间。