专栏名称: 经管之家
经管之家官微,每个经济、管理、金融、统计的学习和从业者,都应该有的帐号。经管之家(论坛),是国内成立十年的大型经济、金融、管理、计量统计社区,十年磨一剑,我们共同的家园!我们提供“经管爱问”答疑微服务,以及相关数据分析及金融培训课程。
目录
相关文章推荐
e公司官微  ·  操纵市场有何特点?刚刚,证监会重磅发声 ·  8 小时前  
21世纪经济报道  ·  总部已封楼!知名公司突然解散,高管激烈内斗 ·  昨天  
数据宝  ·  彻底爆发,飙涨超60%! ·  2 天前  
央视财经  ·  刚刚,见证历史!又一个第一! ·  3 天前  
51好读  ›  专栏  ›  经管之家

让机器猜猜你喜欢的歌手-R关联分析

经管之家  · 公众号  · 财经  · 2017-09-13 11:17

正文

关联规则挖掘 是数据挖掘中成果颇丰而且比较活跃的研究分支。采用关联模型比较典型的案例是 尿布与啤酒 的故事。在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有 30% 40% 的人同时要买一些啤酒。超市随后调整了货架的摆放,把尿布和啤酒放在一起,明显增加了销售额。同样的,我们还可以根据关联规则在商品销售方面做各种促销活动。


除此以外,关联规则挖掘还经常被用于:

· 电信套餐的捆绑销售

· 歌曲推荐或者视频的 猜你喜欢

· 电商的产品推荐

· 财务的归因分析


最近参加了一些学生的创新创业活动,令人印象深刻的是,他们的脑海中总能迸发出无穷的创意。受此启发,我想着尽快把这部分的内容整理出来,希望能够对大家在商业模式的选择上有所帮助。

CDA考点:数据挖掘—关联分析

CDA命题组委会成员 傅毅


先了解几个相关的概念:

· 关联( association ): 两个或多个变量的取值之间存在某种规律性。

· 关联规则( association rule ): 指在同一个事件中出现的不同项的相关性。

· 关联分析( association analysis ): 用于发现隐藏在大型数据集中的令人感兴趣的联系。

· 项和事物: I={i1 i2 …… id} 是购物篮数据中所有项的集合,而 T={t1 t2 …… tn} 是所有事务的集合。

· 项集( itemset : 包含 0 个或者多个项的集合被称为项集。

· 支持度计数 ,即包含特定项集的事务个数。


关联规则 是形如 A=>B 的蕴含表达式,其中 A B 是不相交的项集。下面我们来看三个重要的公式:

· 支持度( support : support(A=>B)=P(A or B)

· 置信度( confidence confidence(A=>B)=P(B|A)

· 提升度( lift lift(A=>B)=P(B|A)/P(B)


这里我们不难看出,支持度指的是两个事件同时发生的概率(实践中用频率表示),这个值如果太小,只能认为是偶尔事件,而不能认为是规则,置信度是指条件概率,表示 A 发生条件下 B 发生的强度,提升度是一个比值,用来衡量 A 条件的重要性。

看一个小例子:


下面是一个购物篮清单



这里 TID 是交易编号,不参与计算,右边 ABCDEF 分别表示不同的商品,下面两个规则的支持度和置信度分别为:

· A => C (50%, 66.6%)

· C =>A  (50%, 100%)


关联规则挖掘的基本过程


给定事务的集合 T ,关联规则发现是指找出支持度大于等于 minsup ,并且置信度大于等于 minconf 的所有规则,其中 minsup minconf 是对应的支持度和置信度的阈值。由于需要计算每一个可能规则的支持度和置信度,这种方法过高的代价让人望而却步。因此,我们将目标做相应转化为找出所有频繁项集,即发现满足最小支持度阈值的所有项集,这些项集称作频繁项集( frequent itemset ),并进一步由频繁项集中提取所有高置信度的规则 (受篇幅影响,这部分暂时省略) ,这些规则称作强规则( strong rule )。下面我们通过算例来实现上面的想法。

让“机器”猜猜谁是你喜欢的歌手

这是我在概率论课上的一个案例,目的是帮助学生理解条件概率,于是让学生每人填写 3 个以上的华语歌手(呵呵,要是填英语歌手的话, 事物 太多,而学生有限,这样结果会不好)。于是,同学们填出来的结果是这样的:


学号

的歌手

13 * 34

梁静茹

13 * 45

邓紫

。。。。

。。。。


为了计算歌手之间的相关规则,我们可以调用 R 语言的 arules 包来进行计算,代码如下:

##### code start #####

# 加载包

library(arules)# 加载程序包 arules ,当然如果你前面没有下载过这个包,就要先 install.packages(arules)

setwd( "G:\\ 公文包 \\R 语言 关联分析 " )# 这里设置你自己的工作路径

# 加载数据

singer

# 将数据转换为 arules 关联规则方法 apriori 可以处理的数据形式 . 交易数据

data 歌手 , singer$ 学号 ), "transactions" )

# 查看一下数据

attributes(data)

# 使用 apriori 函数生成关联规则

rules

#### 说明

#apriori(data, parameter = NULL, appearance = NULL, control = NULL)

#data: 数据

#parameter :设置参数,默认情况下 parameter=list(supp=0.1,conf=0.8,maxlen=10,minlen=1,target=”rules”)

#supp: 支持度( support

#conf: 置信度( confidence

#maxlen,minlen: 每个项集所含项数的最大最小值

#target:“rules” “frequent itemsets” (输出关联规则 / 频繁项集)

#apperence: 对先决条件 X lhs ),关联结果 Y rhs )中具体包含哪些项进行限制,如:设置 lhs=beer ,将仅输出 lhs 含有 beer 这一项的关联规则。默认情况下,所有项都将无限制出现。

#control :控制函数性能,如可以设定对项集进行升序 sort=1 或降序 sort=-1 排序,是否向使用者报告进程( verbose=F/T

rules.sorted "lift" )

# 检查排序后的变量。

inspect(rules.sorted)

# 使用 inspect 函数提取规则

inspect(rules)

# find redundant rules

# 生成一个关联规则的子集矩阵,

subset.matrix

# 将矩阵对角线以下的元素置为空

subset.matrix[lower.tri(subset.matrix, diag=T)]

# 将子集矩阵中每列元素和大于等于 1 的列找出来

redundant = 1which(redundant)

# 从规则矩阵中去掉这些列

rules.pruned

# 检查最终生成的结果集

inspect(rules.pruned)

上述代码输出如下



结果说


以No1为例,弦子、张韶涵和BY2 同时被喜欢的概率为1.7%(学生人数有限的原因),喜欢弦子, 张韶涵的同学会喜欢BY2的概率为100%,该规则的提升度为56.5。因此,如果有人在音乐平台上听了弦子和张韶涵的歌,那就放心的把BY2推荐给他吧!!



值得注意的是,陈奕迅真的是万人迷,居然有9位歌手能够指向他,好吧故事结束了,你也动手试试吧!!



如果你想系统学习 R语言进行机器学习,同时想在商业领域有所应用。又面临自学太慢无人指导?没有 实战案例亲身体会? 需要同行的小伙伴一起学习进步?

CDA 建模分析师-R 语言课程,带你从 R语言机器学习开始,立足与商业实践话题,稳扎稳打,带你 有组织有纪律的走上你的数据科学家之路!

【课程信息】

北京 &远程直播:10月14~ 10 29

授课安排: 现场班 5900元 ,远程班 4400元

(1) 授课方式: 面授直播 两种形式 中文多媒体互动式授课方式

(2) 授课时间:上午9:00-12:00,下午13:30-16:30,16:30-17:00(答疑)

( 3 ) 学习期限:现场与视频结合,长期学习加练习答疑。

【在线报名】

1. 在线填写报名信息







请到「今天看啥」查看全文