先验算法(Apriori algorithm) - 机器学习算法

Apriori is an algorithm for frequent item set mining and association rule learning over transactional databases. It proceeds by identifying the frequent individual items in the database and extending them to larger and larger item sets as long as those item sets appear sufficiently often in the database. The frequent item sets determined by Apriori can be used to determine association rules which highlight general trends in the database: this has applications in domains such as market basket analysis.

在计算机科学以及数据挖掘领域中, 先验算法是关联式规则中的经典算法之一。先验算法的设计目的是为了处理包含交易信息内容的数据库(例如,顾客购买的商品清单,或者网页常访清单。)而其他的算法则是设计用来寻找无交易信息(如Winepi算法和Minepi算法)或无时间标记(如DNA测序)的数据之间的联系规则。

在关联式规则中,一般对于给定的项目集合(例如,零售交易集合,每个集合都列出的单个商品的购买信息),算法通常尝试在项目集合中找出至少有C个相同的子集。先验算法采用自底向上的处理方法,即频繁子集每次只扩展一个对象(该步骤被称为候选集产生),并且候选集由数据进行检验。当不再产生符合条件的扩展对象时,算法终止。

先验算法采用广度优先搜索算法进行搜索并采用树结构来对候选项目集进行高效计数。它通过长度为{\displaystyle k-1}的候选项目集来产生长度为{\displaystyle k}的候选项目集,然后从中删除包含不常见子模式的候选项。根据向下封闭性引理,该候选项目集包含所有长度为{\displaystyle k}的频繁项目集。之后,就可以通过扫描交易数据库来决定候选项目集中的频繁项目集。

虽然先验算法具有显著的历史地位,但是其中的一些低效与权衡弊端也进而引致了许多其他的算法的产生。候选集产生过程生成了大量的子集(先验算法在每次对数据库进行扫描之前总是尝试加载尽可能多的候选集)。并且自底而上的子集浏览过程(本质上为宽度优先的子集格遍历)也直到遍历完所有 {\displaystyle 2^{|S|}-1} 个可能的子集之后才寻找任意最大子集S。

例子

一个大型超级市场根据最小存货单位(SKU)来追踪每件物品的销售数据。从而也可以得知哪里物品通常被同时购买。通过采用先验算法来从这些销售数据中建立频繁购买商品组合的清单是一个效率适中的方法。假设交易数据库包含以下子集{1,2,3,4},{1,2},{2,3,4},{2,3},{1,2,4},{3,4},{2,4}。每个标号表示一种商品,如“黄油”或“面包”。先验算法首先要分别计算单个商品的购买频率。下表解释了先验算法得出的单个商品购买频率。

商品编号 购买次数
1 3
2 6
3 4
4 5

然后我们可以定义一个最少购买次数来定义所谓的“频繁”。在这个例子中,我们定义最少的购买次数为3。因此,所有的购买都为频繁购买。接下来,就要生成频繁购买商品的组合及购买频率。先验算法通过修改树结构中的所有可能子集来进行这一步骤。然后我们仅重新选择频繁购买的商品组合:

商品编号 购买次数
{1,2} 3
{2,3} 3
{2,4} 4
{3,4} 3

并且生成一个包含3件商品的频繁组合列表(通过将频繁购买商品组合与频繁购买的单件商品联系起来得出)。在上述例子中,不存在包含3件商品组合的频繁组合。最常见的3件商品组合为{1,2,4}和{2,3,4},但是他们的购买次数为2,低于我们设定的最低购买次数。

算法的局限

因此Apriori算法中的一些低效与权衡弊端也进而引致了许多其他的算法的产生,例如FP-growth算法。候选集产生过程生成了大量的子集(先验算法在每次对数据库进行扫描之前总是尝试加载尽可能多的候选集)。并且自底而上的子集浏览过程(本质上为宽度优先的子集格遍历)也直到遍历完所有 {\displaystyle 2^{|S|}-1} 个可能的子集之后才寻找任意最大子集S。

原文地址:https://www.cnblogs.com/osfipin/p/8151261.html

时间: 2024-10-13 05:17:39

先验算法(Apriori algorithm) - 机器学习算法的相关文章

数据挖掘算法-Apriori Algorithm(关联规则)

http://www.cnblogs.com/jingwhale/p/4618351.html Apriori algorithm是关联规则里一项基本算法.是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法.关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis),因为“购物蓝分析”很贴切的表达了适用该算法情景中的一个子集. 关于这个算法有一个非常有名的故事:"尿布

[Algorithm] 机器学习算法常用指标总结

考虑一个二分问题,即将实例分成正类(positive)或负类(negative).对一个二分问题来说,会出现四种情况.如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive).相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative). TP:正确肯定的数目: FN:漏报,没有正确找到的匹配的数目: FP:误报,给出的匹

程序员初学机器学习算法

英文原文:4 Self-Study Machine Learning Projects 学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术.类库和方法.这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你的兴趣及对知识的渴望,来激励你从实际例子学起,然后再步入对算法的数学理解. 通过本文你可以学习到程序员

关联规则算法(The Apriori algorithm)详解

一.前言 在学习The Apriori algorithm算法时,参考了多篇博客和一篇论文,尽管这些都是很优秀的文章,但是并没有一篇文章详解了算法的整个流程,故整理多篇文章,并加入自己的一些注解,有了下面的文章.大部分应该是copy各篇博客和翻译了论文的重要知识. 关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物蓝分析 (market basket analysis).例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶.这其中最有名的例子就是"尿布和啤酒

经典的十个机器学习算法

1.C4.5 机器学习中,决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系.树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的 属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值.决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输 出. 从数据产生决策树的机器学习技术叫做决策树学习, 通俗说就是决策树. 决策树学习也是数据挖掘中一个普通的方法.在这里,每个决策树都表述了一种树型结构,他由他的分支来对该类型的对象依靠属性进行分类.每

机器学习算法之旅

在理解了我们须要解决的机器学习问题之后,我们能够思考一下我们须要收集什么数据以及我们能够用什么算法.本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,非常有帮助. 机器学习领域有非常多算法,然后每种算法又有非常多延伸,所以对于一个特定问题,怎样确定一个正确的算法是非常困难的.本文中我想给你们两种方法来归纳在现实中会遇到的算法. 学习方式 依据怎样处理经验.环境或者不论什么我们称之为输入的数据,算法分为不同种类.机器学习和人工智能课本通常先考虑算法能够适应的学习方式. 这里仅仅讨论几个基

机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.

流行的机器学习算法概述

本文我们会概述一些流行的机器学习算法. 机器学习算法很多,并且它们自身又有很多延伸.因此,如何确定解决一个问题的最好算法是很困难的. 下面我们先说基于学习方式对算法的分类和算法之间的相似性,让大家有个整体意识:接着再陈述各类算法. 一.基于学习方式对算法的分类 根据如何处理经验.环境或者任何我们称之为输入的数据,算法分为不同种类.机器学习和人工智能课本通常先考虑算法可以适应的学习方式. 这里只讨论几个主要的学习风格或学习模型,并且有几个基本的例子.这种分类或者组织的方法很好,因为它迫使你去思考输

机器学习算法之旅【转】

在理解了我们需要解决的机器学习问题之后,我们可以思考一下我们需要收集什么数据以及我们可以用什么算法.本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助. 机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的.本文中我想给你们两种方法来归纳在现实中会遇到的算法. 学习方式 根据如何处理经验.环境或者任何我们称之为输入的数据,算法分为不同种类.机器学习和人工智能课本通常先考虑算法可以适应的学习方式. 这里只讨论几个主要的学习风格或