最新R语言关联分析模型报告案例 附代码数据.docx
《最新R语言关联分析模型报告案例 附代码数据.docx》由会员分享,可在线阅读,更多相关《最新R语言关联分析模型报告案例 附代码数据.docx(15页珍藏版)》请在冰豆网上搜索。
最新R语言关联分析模型报告案例附代码数据
关联分析
目录
一、概括1
二、数据清洗1
2.1公立学费(NPT4_PUB)1
2.2毕业率(Graduation.rate)1
2.3贷款率(GRAD_DEBT_MDN_SUPP)2
2.4偿还率(RPY_3YR_RT_SUPP)2
2.5毕业薪水(MD_EARN_WNE_P10)。
3
2.6私立学费(NPT4_PRIV)3
2.7入学率(ADM_RATE_ALL)4
三、Apriori算法4
3.1相关概念5
3.2算法流程6
3.3优缺点7
四、模型建立及结果7
4.1公立模型7
4.2私立模型10
一、概括
对7703条样本数据,分别根据公立学费和私立学费差异,建立公立模型和私立模型,进行关联分析。
二、数据清洗
2.1公立学费(NPT4_PUB)
此字段,存在4个负值,与实际情况不符,故将此四个值重新定义为NULL。
重新定义后,NULL值的占比为75%,占比很大,不能直接将NULL值删除或者进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,5896]
B:
(5896,7754]
C:
(7754,9975]
D:
(9975,13819]
E:
(13819,+]
分组后取值分布为:
A
B
C
D
E
NULL
382
381
381
381
382
5796
2.2毕业率(Graduation.rate)
将PrivacySuppressed值重新定义为NULL,重新定义后,NULL值的占比为20%,占比较大,不适合直接删除或进行插补,故将NULL单独作为一个取值分组。
对非NULL值根据等比原则进行分组,分组结果如下:
A:
[0,0.29]
B:
(0.29,0.47]
C:
(0.47,0.61]
D:
(0.61,0.75]
E:
(0.75,+]
分组后取值分布为:
A
B
C
D
E
NULL
1255
1237
1190
1286
1219
1516
2.3贷款率(GRAD_DEBT_MDN_SUPP)
将PrivacySuppressed值重新定义为NULL,重新定义后,NULL值的占比为20%,占比较大,不适合直接删除或进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,9500]
B:
(9500,12000]
C:
(12000,19197]
D:
(19197,25537]
E:
(25537,+]
分组后取值分布为:
A
B
C
D
E
NULL
1702
847
1127
1225
1225
1577
2.4偿还率(RPY_3YR_RT_SUPP)
将PrivacySuppressed值重新定义为NULL,重新定义后,NULL值的占比为20%,占比较大,不适合直接删除或进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,9500]
B:
(9500,12000]
C:
(12000,19197]
D:
(19197,25537]
E:
(25537,+]
分组后取值分布为:
A
B
C
D
E
NULL
1702
847
1127
1225
1225
1577
2.5毕业薪水(MD_EARN_WNE_P10)。
将PrivacySuppressed值重新定义为NULL,重新定义后,NULL值的占比为19%,占比较大,不适合直接删除或进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,0.23]
B:
(0.23,0.33]
C:
(0.33,0.45]
D:
(0.45,0.6]
E:
(0.6,+]
分组后取值分布为:
A
B
C
D
E
NULL
1255
1278
1240
1207
1248
1475
2.6私立学费(NPT4_PRIV)
此字段,存在1个负值,与实际情况不符,故将此值重新定义为NULL。
重新定义后,NULL值的占比为40%,占比很大,不能直接将NULL值删除或者进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,12111]
B:
(12111,16409]
C:
(16409,19805]
D:
(19805,23780]
E:
(23780,+]
分组后取值分布为:
A
B
C
D
E
NULL
938
937
937
937
938
3016
2.7入学率(ADM_RATE_ALL)
数据中,NULL值的占比为69%,占比很大,不能直接将NULL值删除或者进行插补,故将NULL单独作为一个取值分组。
对非NULL的值按照等比原则进行分组,分组结果如下:
A:
[0,0.52]
B:
(0.52,0.66]
C:
(0.66,0.77]
D:
(0.77,0.85]
E:
(0.85,+]
分组后取值分布为:
A
B
C
D
E
NULL
466
507
484
325
620
5301
三、Apriori算法
Apriorialgorithm是关联规则里一项基本算法。
其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集,是由RakeshAgrawal和RamakrishnanSrikant两位博士在1994年提出的关联规则挖掘算法。
关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析(MarketBasketanalysis),“购物蓝分析”很贴切的表达了适用该算法情景中的一个子集。
关于这个算法有一个非常有名的故事:
"尿布和啤酒"。
故事是这样的:
美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。
这个举措使尿布和啤酒的销量双双增加,并一直为众商家所津津乐道。
3.1相关概念
用R语言进行关联分析,涉及到的相关概念如下:
资料库(TransactionDatabase):
存储着二维结构的记录集。
定义为:
D。
所有项集(Items):
所有项目的集合。
定义为:
I。
记录(Transaction):
在资料库里的一笔记录。
定义为:
T,T∈D。
项集(Itemset):
同时出现的项的集合。
定义为:
k-itemset(k项集),k均表示项数。
支持度(support):
定义为supp(X)=occur(X)/count(D)=P(X)。
P(A∩B)表示既有A又有B的概率。
支持度是指在所有项集中{X,Y}出现的可能性,即项集中同时含有X和Y的概率。
该指标作为建立强关联规则的第一个门槛,衡量了所考察关联规则在“量”上的多少。
例如购物篮分析:
牛奶⇒面包,支持度3%:
意味着3%顾客同时购买牛奶和面包。
置信度(Confidence):
定义为conf(X->Y)=supp(X∪Y)/supp(X)=P(Y|X)。
P(B|A),在A发生的事件中同时发生B的概率p(AB)/P(A)。
置信度表示在先决条件X发生的条件下,关联结果Y发生的概率。
这是生成强关联规则的第二个门槛,衡量了所考察的关联规则在“质”上的可靠性。
例如购物篮分析:
牛奶⇒面包,置信度40%:
意味着购买牛奶的顾客40%也购买面包。
候选集(Candidateitemset):
通过向下合并得出的项集。
定义为C[k]。
频繁k项集:
如果事件A中包含k个元素,那么称这个事件A为k项集事件A满足最小支持度阈值的事件称为频繁k项集。
即支持度大于等于特定的最小支持度(MinimumSupport/minsup)的项集,表示为L[k]。
注意,频繁集的子集一定是频繁集。
强规则:
同时满足最小支持度阈值和最小置信度阈值的规则称为强规则。
即lift(X->Y)=lift(Y->X)=conf(X->Y)/supp(Y)=conf(Y->X)/supp(X)=P(XandY)/(P(X)P(Y))。
提升度(lift):
提升度表示在含有X的条件下同时含有Y的可能性与没有X这个条件下项集中含有Y的可能性之比。
该指标与置信度同样衡量规则的可靠性,可以看作是置信度的一种互补指标。
有用的规则的提升度大于1。
3.2算法流程
为了提高频繁项目的挖掘效率,Apriori算法利用了两个重要的性质,用于压缩搜索的空间:
1,若X为频繁项目集,则X的所有子集都是频繁项目集。
2,若X为非频繁项目集,则X的所有超集均为非频繁项目集。
Apriori算法的处理流程为:
宽度优先搜索整个项集空间,从k=0开始,迭代产生长度为k+1的候选项集的集合Ck+1。
候选项集是其所有子集都是频繁项集的项集。
C1由I0中所有的项构成,在第k层产生所有长度为k+1的项集。
这由两步完成:
第一步,Fk自连接。
将Fk中具有相同(k-1)-前缀的项集连接成长度为k的候选项集。
第二步是剪枝,如果项集的所有长度为k的子集都在Fk中,该项集才能作为候选项集被加入Ck+1中。
为了计算所有长度为k的候选项集的支持度,在数据库水平表示方式下,需要扫描数据库一遍。
在每次扫描中,对数据库中的每条交易记录,为其中所包含的所有候选k-项集的支持度计数加1。
所有频繁的k-项集被加入Fk中。
此过程直至Ck+1等于空集时结束。
简单的讲,1过程为:
(1)扫描;
(2)计数;
(3)比较;
(4)产生频繁项集;
(5)连接、剪枝,产生候选项集;
(6)重复步骤
(1)~(5)直到不能发现更大的频集。
图3.2.1为举例图示。
图3.2.1Apriori举例图示
3.3优缺点
Apriori算法的优点:
Apriori的关联规则是在频繁项集基础上产生的,进而这可以保证这些规则的支持度达到指定的水平,具有普遍性和令人信服的水平。
Apriori算法的缺点:
需要多次扫描数据库;生成大量备选项集;计数工作量太大。
四、模型建立及结果
4.1公立模型
此模型使用字段为:
公立学费(NPT4_PUB)、毕业率(Graduation.rate)、贷款率(GRAD_DEBT_MDN_SUPP)、偿还率(RPY_3YR_RT_SUPP)、毕业薪水(MD_EARN_WNE_P10),入学率(ADM_RATE_ALL)。
因为NULL对实际情况无意义,因此除去取值中有NULL的样本,剩余样本数为589。
对剩余样本进行关联分析,模型性能参数如下:
提升度越高,说明规则两边同时出现比只出现一个更为常见,大的提升度代表规则的重要性,并反映了不同情况间的真实联系,因此根据提升度,列出提升度排名前6条规则:
由结果可知,高毕业率高毕业薪水,容易有高偿还率;偿还率和入学率高时,容易出现高的毕业薪水;如果毕业率高,即使贷款率较高时,也有很好的偿还率。
注1:
lhs是关联规则的左侧,rhs是关联规则的右侧。
support,confidence,lift三列分别是支持度,信任度和提升度。
注2:
关联规则及指标看法。
以第一条规则为例,{MD_EARN_WNE_P10=E,Graduation.rate=D}与{RPY_3YR_RT_SUPP=E}同时发生的概率为0.1171477;在{MD_EARN_WNE_P10=E,Graduation.rate=D}的情况下,{RPY_3YR_RT_SUPP=E}发生的概率为0.9452055;有{MD_EARN_WNE_P10=E,Graduation.rate=D}条件下{RPY_3YR_RT_SUPP=E}发生的概率,是没有{MD_EARN_WNE_P10=E,Graduation.rate=D}此条件时,{RPY_3YR_RT_SUPP=E}发生概率的2.031847倍。
图4.1.1为规则的置信度,提升度,支持度散点图。
图4.1.2中supp为x轴,conf为y轴,颜色的深浅表示“order”,为规则里频繁项个数。
图4.1.3为部分规则,项集有向图,大小表示support,颜色表示Lift。
图4.1.1散点图
图4.1.2频繁规则数
图4.1.3项集有向图
4.2私立模型
此模型使用字段为:
私立学费(NPT4_PRIV)、毕业率(Graduation.rate)、贷款率(GRAD_DEBT_MDN_SUPP)、偿还率(RPY_3YR_RT_SUPP)、毕业薪水(MD_EARN_WNE_P10),入学率(ADM_RATE_ALL)。
因为NULL对实际情况无意义,因此除去取值中有NULL的样本,剩余样本数为1237。
对剩余样本进行关联分析,模型性能参数如下:
根据提升度降序排列得到前6条结果为:
由结果可知,毕业率高、偿还率高,容易伴随高毕业薪水的发生;学费高,毕业率高,会有高偿还率。
图4.2.1为规则的置信度,提升度,支持度散点图。
图4.2.2中supp为x轴,conf为y轴,颜色的深浅表示“order”,为规则里频繁项个数。
图4.2.3为部分规则,项集有向图,大小表示support,颜色表示Lift。
图4.2.1散点图
图4.2.2频繁规则数
图4.2.3项集有向图