R语言实现关联规则

笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记。

推荐算法中

物品-物品用关联规则;

人物-物品用协同过滤;

人-人用社会网络分析;

特征-物品用预测建模,分类模型。(本总结来自CDA DSC相关课程)

关联规则和协同过滤算法

关联规则,将所有用户的高频产品进行推荐,但是如果要清仓,清除一些低频的产品,关联规则不太适用;而协同过滤可以顾及长尾。

几个概念的参考:

支持度(support):共5笔订单,3笔包含商品A,A的支持度是3/5。

置信度(confidence):已知购买了A,有多大概率购买了B(即同时购买了AB),称A -> B的置信度。

提升度:如果用户购买商品B,100%会买C,那是不是意味着,如果用户将商品B放入购物车,就可以向用户推荐商品C呢?

大于1,说明有效,在购买A时推荐B,比直接推荐B,效果更好

等于1,说明无关,购买A与购买B,是独立事件

https://www.jianshu.com/p/166cfcef4642

————————————————————————————————————————————————————————————

一、关联规则数据规则

1、数据格式

关联规则需要把源数据的格式转换为稀疏矩阵。

把上表转化为稀疏矩阵,1表示访问,0表示未访问。

Session ID News Finance Entertainment Sports
1 1 1 0 0
2 1 1 0 0
3 1 1 0 1
4 0 0 0 0
5 1 1 0 1
6 1 0 1 0

2、关联规则专业术语项集 ItemSet

这是一条关联规则:

括号内的Item集合称为项集。如上例,{News, Finance}是一个项集,{Sports}也是一个项集。

这个例子就是一条关联规则:基于历史记录,同时看过News和Finance版块的人很有可能会看Sports版块。

{News,Finance} 是这条规则的Left-hand-side (LHS or Antecedent)

{Sports}是这条规则的Right-hand-side (RHS or Consequent)

LHS(Left Hand Side)的项集和RHS(Right Hand Side)的项集不能有交集。

二、关联规则强度指标

1、支持度——商品出现频次

项集的支持度就是该项集出现的次数除以总的记录数(交易数)。

Support({News}) = 5/6 = 0.83

Support({News, Finance}) = 4/6 =0.67

Support({Sports}) = 2/6 = 0.33

支持度的意义在于度量项集在整个事务集中出现的频次。我们在发现规则的时候,希望关注频次高的项集。

2、置信度——两商品同时发生概率

关联规则 X -> Y 的置信度 计算公式 

规则的置信度的意义在于项集{X,Y}同时出现的次数占项集{X}出现次数的比例。发生X的条件下,又发生Y的概率。

表示50%的人  访问过{News, Finance},同时也会访问{Sports}

3、提升度——两商品独立性

当右手边的项集(consequent)的支持度已经很显著时,即时规则的Confidence较高,这条规则也是无效的。

举个例子:

在所分析的10000个事务中,6000个事务包含计算机游戏,7500个包含游戏机游戏,4000个事务同时包含两者。

关联规则(计算机游戏,游戏机游戏) 支持度为0.4,看似很高,但其实这个关联规则是一个误导。

在用户购买了计算机游戏后有 (4000÷6000)0.667 的概率的去购买游戏机游戏,而在没有任何前提条件时,用户反而有(7500÷10000)0.75的概率去购买游戏机游戏,也就是说设置了购买计算机游戏这样的条件反而会降低用户去购买游戏机游戏的概率,所以计算机游戏和游戏机游戏是相斥的。

所以要引进Lift这个概念,Lift(X->Y)=Confidence(X->Y)/Support(Y)

规则的提升度的意义在于度量项集{X}和项集{Y}的独立性。即,Lift(X->Y)= 1 表面 {X},{Y}相互独立。[注:P(XY)=P(X)*P(Y),if X is independent of Y]

如果该值=1,说明两个条件没有任何关联,如果<1,说明A条件(或者说A事件的发生)与B事件是相斥的,一般在数据挖掘中当提升度大于3时,我们才承认挖掘出的关联规则是有价值的。

最后,lift(X->Y) = lift(Y->X)

4、出错率——规则预测精度

Conviction的意义在于度量规则预测错误的概率。

表示X出现而Y不出现的概率。

例子:

表面这条规则的出错率是32%。

三、关联规则核心算法——Apriori算法

如果项集A是频繁的,那么它的子集都是频繁的。如果项集A是不频繁的,那么所有包括它的父集都是不频繁的。

例子:{X, Y}是频繁的,那么{X},{Y}也是频繁的。如果{Z}是不频繁的,那么{X,Z}, {Y, Z}, {X, Y, Z}都是不频繁的。

生成频繁项集

给定最小支持度Sup,计算出所有大于等于Sup的项集。

第一步,计算出单个item的项集,过滤掉那些不满足最小支持度的项集。

第二步,基于第一步,生成两个item的项集,过滤掉那些不满足最小支持度的项集。

第三步,基于第二步,生成三个item的项集,过滤掉那些不满足最小支持度的项集。

如下例子(频繁项集):

One-Item Sets Support Count Support
{News} 5 0.83
{Finance} 4 0.67
{Entertainment} 1 0.17
{Sports} 2 0.33
Two-Item Sets Support Count Support
{News, Finance} 4 0.67
{News, Sports} 2 0.33
{Finance, Sports} 2 0.33
Three-Item Sets Support Count Support
{News, Finance, Sports} 2 0.33

四、R语言实现关联规则

可参考该博客:http://blog.csdn.net/gjwang1983/article/details/45015203

贴一些实现的图:

________________________________________________________________________________________

五、关联规则的推荐案例解读

1、支持度、置信度、提升度用法

本总结来自CDA DSC相关课程三个指标,支持度、置信度、提升度的用法。

本图的解读,

第一幅上图,买了基金的人还买了黄金的占0.35,所有的人中买了黄金的有18%(基准),此时提升度为0.35/0.18=1.94>1,可以作为推荐;

作为客户要冲销量,则选择面向基数大的部分,则选择支持度、置信度大的,比如第一张图的第三方存管,第二图的结构性理财产品。

所以三个指标的基本用法:冲销量、KPI会重点关注置信度大的;随机推荐用提升度。

2、网商时代关联规则背弃长尾效应

在实际案例运用过程中关联规则与协同过滤的区别在于,

关联规则推荐的是本来就很热门的产品,因为代表同时发生频率越高,关联性越强。在网商时代会背弃长尾效应,让差异扩大,2/8定律会一定程度上扩充至1/9,助长马太效应。

一般要推荐冷门产品会使用协同过滤。下图就是京东上使用关联规则的例子。

R语言实现关联规则与推荐算法(学习笔记)相关推荐

  1. 推荐算法学习笔记--DIN篇

    目录 模型简介 模型结构与分析 1.Embedding层 2.Pooling层与Concat层 3.MLP 4.Loss 模型搭建与训练 模型简介 DIN(Deep Interest Network) ...

  2. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  3. R 语言 基于关联规则与聚类分析的消费行为统计

    <金融数据挖掘案例分析> 课程设计报告 题 目: 基于关联规则与聚类分析的消费行为统计 学生姓名: 序号: 学生姓名: 序号: 学生姓名: 序号: 学生姓名: 序号: 指导教师: 信息工程 ...

  4. R语言reshape2包-官方文档学习

    R语言reshape2包-官方文档学习 简介 核心函数 长数据与宽数据 宽数据 长数据 melt函数 meltarray meltdataframe meltdefault meltlist cast ...

  5. R语言使用逻辑回归分类算法

    R语言使用逻辑回归分类算法 逻辑回归属于概率统计的分类算法模型的算法,是根据一个或者多个特征进行类别标号预测.在R语言中可以通过调用logit函数执行逻辑回归分类算法并预测输出概率.通过调用glm函数 ...

  6. R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数、并可视化SELU激活函数

    R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数.并可视化SELU激活函数 目录

  7. R语言使用自定义函数编写深度学习Leaky ReLU激活函数、并可视化Leaky ReLU激活函数

    R语言使用自定义函数编写深度学习Leaky ReLU激活函数.并可视化Leaky ReLU激活函数 目录

  8. 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?

    作者:一元, 公众号:炼丹笔记 可解释性和有效性是构建推荐系统的两大关键成份,之前的工作主要关注通过引入辅助信息来获得更好的推荐效果.但这些方法会存在下面的两个问题: 基于神经网络的embedding ...

  9. 推荐算法炼丹笔记:排序模型CTR点击率预估系列

    微信公众号:炼丹笔记 ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...

最新文章

  1. c语言x在二进制表示下1的个数,算法:计算十进制数字在二进制表示1的个数,...
  2. python增量更新数据,Python中的增量最近邻算法
  3. 软件设计的第一性原理:结构化抽象
  4. KPI在小型产品团队中的实践
  5. 上海交大计算机学院奖学金,上海交通大学-电子信息与电气工程学院-学生工作办公室...
  6. 数据分析应该要避免的6个错误
  7. react 执行入口_如何使用React执行CRUD操作
  8. asp.net面试的概念知识
  9. 继云计算巨头失火事件后,微软决定送数据中心去“泡澡”!
  10. 电商数字化色彩系统的探索
  11. 方根法公式_Excel怎么对一个数开n次方根 Excel开方方法汇总
  12. JAVA-日期类(Date、SimpleDateFormat)
  13. SSTI 模板注入url_for和get_flashed_messages之[WesternCTF2018]shrine
  14. 查看分区表linux,通过lsblk命令查看分区表
  15. 简单谈谈语音评测(语音评价)
  16. 【附源码】计算机毕业设计java众筹平台设计与实现
  17. Beyond Compare 提示错误“这个授权密钥已被吊销”的解决办法
  18. Android->Launcher3:桌面布局说明
  19. 5个超好用的自媒体网站,免费用
  20. Android性能优化方法论

热门文章

  1. Codeforces 1635 E. Cars 二分图+拓扑排序
  2. 【叶神中级】四篇-3.页面访问
  3. 激光振镜协议C语言源码,Laser-Marking 激光振镜打标机源代码 - 下载 - 搜珍网
  4. 【强推文章】如果你在犹豫要不要去外包公司,不妨看看这篇文章(自己深有感触)
  5. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——10 - My Graduation Speech(毕业演说)
  6. Java扫雷游戏心得体会总结_Java扫雷游戏: JMine
  7. 面向对象程序设计(Java)实验
  8. 17暑期ACM俱乐部个人训练赛第1场 (石油oj) 7.24号
  9. 排球分组循环交叉编排_第九届“理工杯”学生排球比赛正式拉开帷幕
  10. Gitlab-runner 构建失败问题排查