前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现关联规则与推荐算法(学习笔记)

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

作者头像
悟乙己
发布2019-05-26 16:20:44
1.1K0
发布2019-05-26 16:20:44
举报
文章被收录于专栏:素质云笔记素质云笔记

版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/50662709

R语言实现关联规则

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

推荐算法中

物品-物品用关联规则;

人物-物品用协同过滤;

人-人用社会网络分析;

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

关联规则和协同过滤算法

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

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

一、关联规则数据规则

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,助长马太效应。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年02月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、关联规则数据规则
    • 1、数据格式
      • 2、关联规则专业术语项集 ItemSet
      • 二、关联规则强度指标
        • 1、支持度——商品出现频次
          • 2、置信度——两商品同时发生概率
            • 3、提升度——两商品独立性
              • 最后,lift(X->Y) = lift(Y->X)
            • 4、出错率——规则预测精度
            • 四、R语言实现关联规则
            • 五、关联规则的推荐案例解读
              • 1、支持度、置信度、提升度用法
                • 2、网商时代关联规则背弃长尾效应
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档