Apriori 算法学习
来源:互联网 发布:app用户数据分析维度 编辑:程序博客网 时间:2024/06/06 04:49
近来小看关联分析的Apriori算法,参考《数据挖掘:概念与技术3rd》,作此篇。
1. 基础概念
-支持度(Support):support( A => B ) = P(A U B)-置信度(Confidence): confidence(A => B ) = P( B | A )-项集(itemset) : 包含K个项的项集成为K项集-频繁项集(frequent itemset) : 如果项集 I 满足最小支持度阈值, 则 I 是频繁项集
2. 算法简介
2.1 简介
Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。
首先,通过扫描事务记录,找出所有的频繁1项集,记做L1,利用L1找频繁2项集L2,使用L2找L3,如此下去,直到不能再找到任何频繁k项集。
为了提高频繁项集逐层产生的效率,一种称为先验性质(Apriori property)的重要性质用于压缩搜索空间.
先验性质:频繁项集的所有非空子集也一定是频繁的.
2.2 流程
考察使用Lk-1找出Lk,主要有连接步和剪枝步:
(1)连接步: 为了找出Lk, 通过将Lk-1与自身连接产生候选K项集的集合, 记为Ck. 记li[j]表示li的第j项. Apriori算法假定事务和项集中的项按字典顺序排序. 对于(k-1)项集li, 使得li[1] < li[2] < … < li[k-1]. 如果lk-1的前(k-2)个项相同, 则它是可连接的. 连接Lk-1 连接 Lk-1, 结果{l1[1], l1[2], …, l1[k-1], l2[k-1]}.
(2)剪枝步: Ck是Lk的超集, 即Ck的成员可以是也可以不是频繁的. 任何非频繁的(k-1)项集都不是频繁k项集的子集. 因此, 如果一个候选k项集的(k-1)项子集不在Lk-1中,则该候选也不可能是频繁的, 从而从Ck中删除.
3. 具体例子
该例子截图为书中截图.
3.1样例数据:
3.2流程:
3.3由L2产生C3并剪枝:
4.伪代码
伪代码未采用书中代码,摘自wikipedia.
5. 后话
C++代码简单实现: https://github.com/old-windbell/owbML
- 机器学习--Apriori算法
- Apriori 算法学习
- apriori算法的学习
- Apriori算法学习笔记
- Apriori算法学习(一)
- Apriori和FPgrowth算法学习
- 【机器学习算法】之Apriori
- 无监督学习-apriori算法
- Apriori算法学习笔记(一)
- Apriori算法学习笔记(二)
- 数据挖掘算法学习之Apriori算法
- 机器学习算法(九):Apriori算法
- 机器学习(八)Apriori算法学习
- 机器学习(八)Apriori算法学习
- Weka学习 Apriori算法if( !m_car)
- Weka 学习 Apriori 附一 AprioriTID算法
- 机器学习经典算法10-Apriori
- 机器学习实战笔记9(Apriori算法)
- struct time定义
- 给定一个正整数数组,找所有元素组合起来最大的值(答案)
- C#值类型
- 阻止OSX休眠
- 进程、线程小结(2)
- Apriori 算法学习
- Linux下date命令,格式化输出,时间设置
- android listview & toolbar形成的一种炫酷效果(外加一个圆形图片的实现)
- 秦淮八绝
- CSS 选择器
- IPMsg之Wstr类
- 5.19
- 第五章t3
- Linux引导流程解析(2)