apriori 算法
来源:互联网 发布:lol训练软件 编辑:程序博客网 时间:2024/05/14 16:06
这个算法其实没什么特别,最近一直在有这种感觉,当 入门某一门学科的时候,多多少少会接触一些算法,而 这些算法并不是很难理解,相比于之前学的算法来说,只是放到特定的学科背景下,并能解决一些问题 ,这里我只的 这们学科的入门级算法 。
在计算机科学以及数据挖掘领域中, 先验算法[1]是关联式规则中的经典算法之一。先验算法的设计目的是为了处理包含交易信息内容的数据库(例如,顾客购买的商品清单,或者网页常访清单。)而其他的算法则是设计用来寻找无交易信息(如Winepi算法和Minepi算法)或无时间标记(如DNA测序)的数据之间的联系规则。
在关联式规则中,一般对于给定的项目集合(例如,零售交易集合,每个集合都列出的单个商品的购买信息),算法通常尝试在项目集合中找出至少有C个相同的子集。先验算法采用自底向上的处理方法,即频繁子集每次只扩展一个对象(该步骤被称为候选集产生),并且候选集由数据进行检验。当不再产生符合条件的扩展对象时,算法终止。 参考: http://zh.wikipedia.org/wiki/%E5%85%88%E9%AA%8C%E7%AE%97%E6%B3%95
就比如这个算法,我姑且认为这是一个解决某问题的暴力算法 。
我现在对这个算法的理解是 : 对于 数据表 如 : id : value1 ,value1 2 ,value3 的数据库 ,算法要找出 至少出现K次的 value 的组合 。
如 数据挖掘课本 第151 页 所示
- T100 I1,I2,I5
T400 I1,I2,I4
T800 I1,I2,I3,I5
T900 I1,I2,I3 , 自己算 就知道 {I1,I2,I5} {I1,I2,I3} 出现两次 。
当然算法还不只是 做这个 ,这里要引出三个 概念 : 频繁项集 ,支持度,置信度。 上述说的条件 ,确切的说 是 用支持度 和置信度来限制。
那么 对于数据挖掘来说 ,应该如何做呢 ?
下面介绍暴力 即没有优化的算法:
集合 A = { I1,I2,I3 } (wordpress 的编辑器不给力啊 ,运行也慢)
- 扫描数据库 ,可以得到 set1{ {I1} {I2} {I3} } 的计数 这里可以根据支持度 和 置信度删除一些集合
- 由set1 可以得到 set2{ {I1,I2} {I1,I2} {I1,I3} { I2 ,I3} } ,扫描数据库 同样可以得到这个同时出现 subset 的计数,这里可以根据支持度 和 置信度删除一些集合 ,(这里因为只是简单的演示,就不删了)
- 这一步 自然就生成 set3{ { I1,I2,I3}} ,再次扫描数据库 ,这个得到 同时出现 这个集合的计数 。
- 在生成K 项集合的时候 ,如果 SETK {SUBSETK1 ,SUBSETK2 ······} 如果 SUBSETK1 的k-1项的子集 在生成k项集合 的那么子集中不存在,那么就删掉 这个SUBSETK1 。举例来说吧 (I1 ,I2) ,(I2,I3) ,(I3,I4) —> (I1,I2,I3) (I2,I3,I4) ; 这里(I2,I3,I4) 的子集 (I2,I3) (I3,I4) ,(I2,I4) ,其中 (I2,I4) 是不存在的,那么 (I2,I3,I4) 这个应该删掉 。其实很好理解 (I2,I4) 不符合条件 , (I2,I3,I4) 怎么可能会符合条件 。
- FP-TREE ,这是改进的数据结构,可以值扫描两次 就可以得到最大频繁项集 ;这个树的生成理论还是很好理解的,第一遍扫描数据库 得到1项集 ,然后对于数据库中的每个事物 ,{I1,I2,I3} ,这个插入到树中, 那么 计数最大的作为根的子节点,次大的元素作为最大元素的子节点 , 比如
(f:4, c:4, a:3, b:3, m:3, p:3 ) 然后在书中 计数+1 ,
那么生成
那么这样就转换成对树的搜索 。 而对树的搜索 ,可以从叶子节点开始 ,可以找到满足条件的最大频繁项集
我独立博客的地址 :http://www.fuxiang90.me/?p=609
- Apriori算法
- Apriori算法
- Apriori算法
- apriori 算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Apriori算法
- Fedor16之在线账户
- 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃。
- android图片处理方法
- 你手里期权值多少钱?写给上市公司的同学
- 如何修改Android模拟器的hosts文件
- apriori 算法
- 使用ld的wrap选项替换已有库函数
- 链接队列的基本算法
- WIN7 系统下 android 环境变量配置
- C\C++几个内存处理函数
- Android江湖(含CD光盘1张)
- C++程序设计教程_基于Visual.Studio.2008
- 关于initializer element is not constant错误
- 进程互斥与竞态