python机器学习的关联分析(Apriori)都有哪些算法,应用场景都是什么

2021-04-07 10:46发布

4条回答
小磊子
2楼 · 2021-04-08 09:27

本篇主要讲机器学习中的关联分析和Apriori算法,主要内容包括基本概念,场景应用,算法优缺点,实施步骤及Python实现等。

1、基本概念

关联分析是就是从大规模的数据集中寻找物品隐含关系(频繁模式,相关性或因果结构),关联分析的目的就是寻找频繁项集和发现关联规则。因此引入两个支持度和置信度来衡量着关联分析是否成功。

支持度是指数据集中包含该项集的记录占比;P(X) = count(X)/总数。

置信度是指在给定X条件下,Y发生的概率;P(Y|X)=count(X,Y)/count(X)。

因为关联分析主要目的是寻找频繁项集,如果通过暴力寻找,结果是几何性增长运算量大。如有A、B、C三个事物,其集合项就会有{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}等7中类型。包含N个物品的数据项集,其结果为2^n-1。为减少频繁项集的计算引入了Apriori算法。

Apriori原理是,如果某项集是频繁的,那么它的子集也是频繁的。反过来也是成立的。如图所示,如果{2,3}是非频繁的,那么其{0,2,3}{1,2,3}{0,1,2,3}都是非频繁项集。

同时在寻找关联规则中,如果前项可信度较低,那么其作为后项的可信度也会低,因此将后期不用在进行计算。

另外,Apriori在拉丁语中是指“来自以前”,因此它会使用先验知识,这在贝叶斯中的先验概率有异曲同工之处。

2、场景应用

(1):购物篮分析,通过分析商品销售记录,参考哪些商品经常一起出售,理解用户购物行为,能够应用到市场营销,物品摆放,库存管理,商品定价等环节。其中著名的商业应用实例就是啤酒和尿布的关系。

(2):共同词分析:对于给定的搜索词,发现推文中频繁出现的单词集合。

(3):流行趋势分析:从新闻网站点击浏览中分析新闻流行趋势,分析哪些类型新闻将被用户浏览到。

(4):搜索引擎推荐:在用户输入查询时推荐同时相关的查询词项。如今日头条的推荐搜索,相关词搜索等。

3、优缺点

该算法的优点是代码容易实现,结果容易理解,并能够直接应用于商业决策中。

该算法的缺点是在大数据集上运算速度可能比较慢。

4、实施步骤

Apriori算法的主要步骤包括:

(1)根据数据集生成候选项,首先生成单物品候选项集;

(2)设定最小支持度和最小置信度;

(3)过滤掉数据项集占比低于最小支持度的项,形成频繁项;

(4)根据(3)形成的频繁项集结果,进行项集之间的组合形成新的项集集合;

(5)重复(3)-(4),直到没有新的项集满足最小支持度;

(6)根据(5)形成的最终频繁集合,计算频繁集合所含物品之间的置信度,过滤掉小于最小置信度的项集;

(7)根据(6)结果,生成关联规则,并计算其置信度。

5、Python实现

【1.示例数据】

本样本示例共包含4个数据,分别是:[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]

【2.生成候选项】

生成的候选项共有5个,分别是[1,], [2], [3], [4],[5]

【3.生成频繁项】

本次设定的最小支持度为0.5,其中频繁项L =[1,], [2], [3], [5],表示该四项的支持度>=0.5;另外S 集合给出了各项的支持度。

【4.频繁项组合】

在第(3)基础上,通过频繁项的组合共有9项符合大于最小支持度,见Lk项,包括4项1个数字,4项2个数字和1项3个数字集合的项集,可见后边的频繁都是前边项组合来的。另外Sk给出了各项的支撑度。

【5、生成关联规则】

生成关联规则,本次设定的最小置信度为0.7,总共发现三条关联规则分别是:{1}->{3};{2}->{5};{5}->{2};其中{2}和{5}可以换前后条件,但是{1}和{3}则不行。

6、学习经验总结

关联规则作为无监督算法,其可发现隐藏在数据背后的规律,因此该算法在商业上得到较多运用,尤其是分析用户的购物行为。该算法基本容易理解和实现。关键是在设定合适的最小支持度和最小置信度,因此如果在真正建模时候可以根据业务场景和实际运用来不断调整参数。


三岁奶猫
3楼 · 2021-04-08 13:20

Apriori算法的主要步骤包括:

(1)根据数据集生成候选项,首先生成单物品候选项集;

(2)设定最小支持度和最小置信度;

(3)过滤掉数据项集占比低于最小支持度的项,形成频繁项;

(4)根据(3)形成的频繁项集结果,进行项集之间的组合形成新的项集集合;

(5)重复(3)-(4),直到没有新的项集满足最小支持度;

(6)根据(5)形成的最终频繁集合,计算频繁集合所含物品之间的置信度,过滤掉小于最小置信度的项集;

(7)根据(6)结果,生成关联规则,并计算其置信度。


是开心果呀 - 热爱生活
4楼 · 2021-04-08 14:33

1、从大规模数据集中寻找物品间的隐含关系被称作关联分析或者关联规则学习。


2、频繁项集:经常出现在一块的物品的集合。


3、关联规则:暗示两种物品之间可能存在很强的关系,而支持度和可信度是用来量化关联分析是否成功的方法。


4、一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。


5、可信度或置信度:针对关联规则来定义。例如{尿布,葡萄酒}的支持度为3/5,{尿布}的支持度为4/5,所以规则“尿布->葡萄酒”的可信度为3/4=0.75,即对于包含“尿布”的所有记录,规则对于其中75%的记录都适用。


6、Apriori原理可以减少关联规则学习时所需的计算量:


一般过程:


1)收集数据,适用任意方法;


2)准备数据:任何数据类型都可以,因为我们只保存集合;


3)分析数据:使用任意方法;


4)训练算法:使用Apriori算法来找到频繁项集;


5)测试算法:不需要测试过程;


6)使用算法:用于发现频繁项集以及物品之间的关联规则。


7、简述Apriori原理:意思是如果某个项集是频繁的,那么它的所有子集也是频繁的,在直观上这并没有什么帮助,但是如果反过来:也就是说如果一个项集是非频繁集,那么它的所有超集也是非频繁的,这是非常有用的。


8、关联分析的目标包括两项:发现频繁项集和发现关联规则。


9、Apriori算法发现频繁集的算法:


该算法首先生成所有单个物品的项集列表。接着扫描交易记录来查看哪些项集满足最小支持度要求,那些不满足最小支持度的集合会被去掉。然后,对剩下了的集合进行组合以生成包含两个元素的项集。接下来,再重新扫描交易记录,去掉不满足最小支持度的项集。该过程重复进行直到所有项集都被去掉。







相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问