数据挖掘是一门科学,它可以一种从海量的数据中提取有价值的信息,本文主要以数据挖掘中关联分析模型为例,基于R软件利用Apriori算法,对取自UCI中的mushroom数据集进行分析,发现毒蘑菇的共同特征,利用这些特征可以避免吃到有毒的蘑菇。
毒蘑菇 关联分析 Apriori算法
引言
随着大数据时代的发展,数据挖掘在生活中的应用越来越广泛,其中数据挖掘中的关联分析是在大量的数据集中寻找一些内在的联系,比如通过查看哪些商品经常在一起购买,可以帮助商店了解用户的购买行为。这种从数据海洋中提取的信息可以用于商品定价、市场促销、存活管理等环节,比如“啤酒和纸尿布”的故事,零售商场里的组合套装的捆绑销售,比如洗发水加沐浴露,泡面加火腿肠,牛奶加面包等等。从新闻网站点击流中挖掘新闻流行趋势,挖掘哪些新闻广泛被用户浏览到,搜索引擎推荐,在用户输入查询词时推荐同相关的查询词项。不管关联分析应用于什么领域,最终都是为了发现一些经常共同出现的特征集合,本文是介绍了关联分析的一些基本概念,Apriori算法的核心思想,然后利用取自UCI网站的mushroom数据集进行数据关联分析,最后发现毒蘑菇的共同特征,然后利用这些特征避免吃到有毒的蘑菇。
文献综述
2011年,Jiawei Han和Micheline Kamber写的著作《数据挖掘:概念与技术》里第六章详细介绍了挖掘频繁模式、关联和相关性的基本概念和方法,该书给出了一个最经典的关联分析的案例即购物篮分析。刘玲,丁浩两人发表的论文《上市公司财务报表粉饰识别》(2010)一文将关联分析里Apriori算法理论应用到了上市公司的财务分析领域。
毒蘑菇的实证分析
(1)数据来源与结构
首先从网站https://archive.ics.uci.edu
/ml/datasets/Mushroom搜集到了关于肋型蘑菇的23种特征的数据集,每个特征包含一个标称数据集,如果想做关联分析,我们需要把这些标称值转化为一个集合,Roberto Bayardo对UCI网站上蘑菇数据集进行了解析,转化后的数据来自http://fimi.ua.ac.be/data/mushroom.dat/.
在数据集中中第一个特征代表蘑菇是否可食用,2代表有毒不可食用,1代表没毒可食用。第二个特征代表蘑菇伞的形状,有六种可能的值,分别用3-8的整数值来表示。
(2)程序代码与结果
在搜集到数据和了解数据的結构之后,开始基于R软件中Apriori算法对数据集进行实证分析,以便发现毒蘑菇的公共特征。
1.程序代码:
install.packages("arules") #安装arules程序包
library(arules) #加载arules程序包
载入需要的程序包:Matrix
载入程序包:‘arules
transactions=read.transactions(file=file.choose(),format='basket',sep=',')#使用arules包中的read.transactions()
函数读取事务型数据集。
summary(transactions)#使用summary()函数查看交易数据的概览信息
itemFrequencyPlot(transactions,type='absolute',topN=10)
rules=apriori(data = transactions,parameter = list(support = 0.4,confidence = 0.8,minlen = 2))
rules
inspect(rules[1:4])
summary(rules)
inspect(sort(rules,by=list('support'))[1:8])
inspect(sor4t(rules,by=list('lift'))[1:8])
res= eclat(data =transactions,parameter = list(minlen = 2,maxlen = 3,support = 0.4,target = 'frequent itemsets'),
control = list(sort = -1))#然后使用eclat()函数获取经常伴随毒蘑菇一起出现的特征。
res
inspect(res)
2.结果:
使用Apriori算法参数设置支持度为40%,可信度为50%,将产生1810条规则。
> inspect(sort(rules,by=list('lift'))[1:4])#按提升度排序的前4条规则
lhs rhs support confidence lift
[1]{2} => {28} 0.4194462 0.8098859 1.865171
[2]{2,85} => {28} 0.4194462 0.8098859 1.865171
[3]{28} => {2} 0.4194462 0.9659864 1.865171
[4]{28,85} => {2} 0.4194462 0.9659864 1.865171
然后使用eclat()函数获取经常伴随毒蘑菇一起出现的特征。
> res= eclat(data =transactions,parameter = list(minlen = 2,maxlen = 3,support = 0.4,target = 'frequent itemsets'),control = list(sort = -1))
Eclat
> res
set of 282 itemsets
> inspect(res)
items support tems support
[17] {2,28,85} 0.4194462 [26] {2,28} 0.4194462
[121]{2,63,85} 0.4184615 [122]{2,59,85} 0.4480000
[123]{2,59,86} 0.4243692 [124]{2,34,59} 0.4243692
[125]{2,59,90} 0.4027077 [126]{2,39,59} 0.4155077
[127]{2,39,85} 0.4824615 [128]{2,39,86} 0.4588308
[129]{2,34,39} 0.4588308 [130]{2,39,90} 0.4174769
[131]{2,85,90} 0.4529231 [132]{2,86,90} 0.4292923
[133]{2,34,90} 0.4292923 [134]{2,34,85} 0.4942769
[135]{2,34,86} 0.4942769 [136]{2,85,86} 0.4942769
[137]{2,85} 0.5179077 [138]{2,86} 0.4942769
[139]{2,34} 0.4942769 [140]{2,90} 0.4529231
[141]{2,39} 0.4824615 [142]{2,59} 0.4480000
[143]{2,63} 0.4184615
可以看出表示有毒的蘑菇2经常和特征34,39,59,63,85,86,90一起出现,所以我们尤其是生物学家们需要观察蘑菇的特征以了解该蘑菇是否可食用,这里还需要说明的是有上述一种特征说明该蘑菇有毒不可以食用,但是如果沒有该特征也不定没有毒,只是很大可能性上是没有毒的。
总结
随着大数据时代的发展,数据挖掘(data mining) 的应用越来越广泛,其中通过一些算法,一些模型,关联规则的研究可以在大量的数据中发现某些事情之间存在的联系,有助于我们做出更好的决策。本文主要是利用R语言软件基于Apriori算法对蘑菇的特征进行分析,来区分具有哪些特征的蘑菇是毒蘑菇,哪些蘑菇是可食用的。
作者简介:葛丽翠 天津财经大学 研究方向:市场调查