1、 R语言学习与应用010203目录u R R语言开发环境及语言开发环境及RStudioRStudio安装安装u 关联规则实验分析关联规则实验分析u 决策树算法实验分析决策树算法实验分析01R语言开发环境及RStudio安装ONE R是用于统计分析、绘图的语言和操作环境。R是免费的、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。RStudio是一个用于R的集成环境开发工具,它包括控制台、语法高亮编辑器、绘图、工作区管理工具等。是一款R的辅助UI软件。登陆官网:https:/www.r-project.org/登陆官网:https:/ (自带)(自带)R语言开发环境及RStudio安
2、装 R是用于统计分析、绘图的语言和操作环境。R是免费的、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。RStudio(集成多窗口、多功能集成多窗口、多功能)R语言开发环境及RStudio安装02关联规则实验分析TWOl 关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。l 典型的关联规则发现问题是对超市中的购物篮数据进行分析。通过发现顾客放入购物篮中的不同商品之间的关系来分析顾客的购买习惯。关联规则例如:这是一条关联规则:A,B-DA,B和D都是项集其中A,B为LHS,D为RHS,并且L
3、HS和RHS不能有交集l k项集:项集中包含k个项目。l 项集的支持度:项集在事务数据库中出现 的次数占D中总事务的百分比。l 频繁项集:项集的支持度超过用户给定的最小支持度阈值 如何挖掘关联规则呢?置信度置信度 Confidence:分析:分析:规则规则X-Y 很容易从很容易从X和和XUY的支持度计数推出,并且可以很的支持度计数推出,并且可以很直白的验证它们是否符合强规则,所以挖掘关联规则的问直白的验证它们是否符合强规则,所以挖掘关联规则的问题可以归结为挖掘频繁项集题可以归结为挖掘频繁项集。关联规则的挖掘可以分为两关联规则的挖掘可以分为两个过程个过程(1)找出所有频繁项集)找出所有频繁项集(
4、2)由频繁项集产生强关)由频繁项集产生强关联规则联规则Apriori算法(使用逐层迭代方法基于候选产生找出频繁项集)例子例子-支持计数支持计数=2=211例子例子由频繁项集产生关联规则12l根据公式产生关联规则根据公式产生关联规则l对于每个频繁项集对于每个频繁项集l,产生所有的非空子集,产生所有的非空子集l对于对于l的每个非空子集的每个非空子集s,如果,如果则输出规则则输出规则”s(l-s)”关联规则结果数据准备一个1万条购买记录的数据集,一行代表一个用户,列分别是:用户id、商品名称pname(P1-P20)、付费金额amount、购买时间time(unix标准)读取后数据样式读取后数据样式
5、:l 1.读取实验数据读取实验数据集:集:l 2.处理并获取数据集:处理并获取数据集:读取处理后数据集读取处理后数据集:l 3.处理并获取数据集:处理并获取数据集:l 将购买记录转换为0-1矩阵数据准备l 将0-1矩阵转换成“transcations”形式使用Apriori算法得到关联规则l 使用R语言apriori函数Lift:提升度当右项集(当右项集(consequent)的支持度已经很显著时,即时规则的)的支持度已经很显著时,即时规则的Confidence较高,这条规则也是无效的。较高,这条规则也是无效的。例如:例如:在所分析的在所分析的10000个事务中,个事务中,6000个事务包含商
6、品个事务包含商品A,7500个包含商品个包含商品B,4000个事务同时包含两者。个事务同时包含两者。关联规则(关联规则(A-B)支持度为支持度为0.4,看似很高,但其实这个关联规则是一个误导。,看似很高,但其实这个关联规则是一个误导。在用户购买了商品在用户购买了商品A后有后有(40006000)0.667 的概率的去购买商品的概率的去购买商品B,而在没有任何前提条件时,用户反而有,而在没有任何前提条件时,用户反而有(750010000)0.75的概率去购买商品的概率去购买商品B,也就是说设置了购买商品,也就是说设置了购买商品A这样的条件反而会降低用户去购买商品这样的条件反而会降低用户去购买商品
7、B的概率,所的概率,所以商品以商品A和商品和商品B是相斥的。是相斥的。规则的提升度的意义在于度量项集规则的提升度的意义在于度量项集X和项集和项集Y的独立性的独立性如果如果lift=1,说明两个条件没有任何关联说明两个条件没有任何关联,如果如果lift1,说明说明A条件条件(或者说或者说A事件的发生事件的发生)与与B事件是相斥的事件是相斥的使用Apriori算法得到关联规则l 删除冗余规则删除冗余规则冗余规则的定义是:如果冗余规则的定义是:如果rules2的的lhs和和rhs是包含于是包含于rules1的,而且的,而且rules2的的lift小于或者等于小于或者等于rules1,则称,则称rul
8、es2是是rules1的冗余规则。的冗余规则。#生成一个所有规则的子集矩阵,行和列分别是每条rules,其中的值是TRUE和FALSE,当rules2是rules1的子集时,rules2在rules1的值为TRUEsubset.matrix-is.subset(rules,rules)subset.matrixlower.tri(subset.matrix,diag=T)#将矩阵对角线以下的元素置为空,只保留上三角subset.matrixlower.tri(subset.matrix,diag=T)-NA#R会将矩阵中的TRUE当做1,统计每列的和(忽略缺失值),如果该列的和大于等于1,也就
9、是表示该列(规则)是别的规则的子集,应该删除。redundant=1#去掉冗余的规则rules.pruned-rules!redundant关联规则可视化03决策树算法实验分析Three决策树决策树?决策树?决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。如何构造决策树?如何构造决策树?一般来说,决策树的构造主要由两个阶段组成:第一阶段(生成树阶段)选取部分受训数据建立决策树,决策树是按广度优先建
10、立直到每个叶节点包括相同的类标记为止。第二阶段(决策树修剪阶段)用剩余数据检验决策树,如果所建立的决策树不能正确回答所研究的问题,我们要对决策树进行修剪直到建立一棵正确的决策树。这样在决策树每个内部节点处进行属性值的比较,在叶节点得到结论。从根节点到叶节点的一条路径就对应着一条规则,整棵决策树就对应着一组表达式规则。问题:我们如何确定起决定作用的划分变量(属性选择度量)。决策树算法ID3算法算法思想描述:1.对当前例子集合,计算属性的信息增益;2.选择信息增益最大的属性Ai3.把在Ai处取值相同的例子归于同于子集,Ai取几个值就得几个子集4.对依次对每种取值情况下的子集,递归调用建树算法,即返
11、回1,5.若子集只含有单个属性,则分支为叶子节点,判断其属性值并标上相应的符号,然后返回调用处。C4.5算法算法用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;在树构造过程中进行剪枝;能够完成对连续属性的离散化处理;能够对不完整数据进行处理。熵:熵:设X是一个取有限个值(n)的离散随机变量,其概率分布为P(X=xi)=Pi,i=1,2,.,nP(X=xi)=Pi,i=1,2,.,n 则随机变量X的熵定义为 使用包party里面的函数ctree()为数据集iris建立一个决策树。属性Sepal.Length(萼片长度)、Sepal.Width(萼片宽度)、Petal.Length(花瓣长度)以及Petal.Width(花瓣宽度)被用来预测鸢尾花的Species(种类)。在这个包里面,函数ctree()建立了一个决策树,predict()预测另外一个数据集。在建立模型之前,iris(鸢尾花)数据集被分为两个子集:训练集(70%)和测试集(30%)。使用随机种子设置固定的随机数,可以使得随机选取的数据是可重复利用的。实验决策树可视化