小天导语: 智能推荐是以“客户需求”为导向的,是给客户带来价值的。常见的如淘宝的 “你可能还喜欢”,亚马逊的 “购买此商品的用户也购买了” 便是实例。今天小天就带大家来看看如何用Python实现智能推荐算法。

研究方向: Python

常见的推荐系统与算法

常见的 推荐系统分类 有:

  • 基于应用领域: 电子商务/社交好友推荐等
  • 基于设计思想: 基于协同过滤的推荐等
  • 基于使用数据: 基于用户标签的推荐等

“ 京腾 ” 合作构建用户画像标签图

常见的 推荐算法 有:

本文将专注于理解起来最容易且又十分经典常用的 基于关联规则的购物篮推荐 。商品的关联度分析对于 提高商品的活力、挖掘消费者的购买力、促进最大化销售 有很大帮助。其建模理念为:物品被同时购买的模式反映了客户的需求模式, 适用场景 :无需个性化定制的场景;有销售记录的产品,向老客户推荐;套餐设计与产品摆放。

购物篮简介

问 : 什么是购物篮?主要运用在什么场景?

答:单个客户一次购买商品的综合称为一个购物篮,即某个客户本次的消费小票。常用场景:超市货架布局:互补品与互斥品;套餐设计。

: 购物篮的常用算法?

答 :常用算法有

  • 不考虑购物顺序 : 关联规则 。购物篮分析其实就是一个因果分析。关联规则其实是一个很方便的发现两样商品关系的算法。共同提升的关系表示两者是正相关,可以作为互补品,如豆瓣酱和葱一起卖也才是最棒的。替代品的概念便是我买了这个就不用买另外一个。
  • 考虑购物顺序 : 序贯模型 。多在电商中使用,比如今天你将这个商品加入了购物车,过几天又将另一个商品加入了购物车,这就有了一个前后顺序。但许多实体商店因为没有实名认证,所以无法记录用户的消费顺序。

问 : 求出互补品与互斥品后对布局有什么用?

答 :根据关联规则求出的商品间的关联关系后,可能会发现商品间存在强关联,弱关联与排斥三种关系。每种清醒有各自对应的布局方式。

  • 强关联 :关联度的值需要视实际情况而定,在不同 的行业不同的也业态是不同的。强关联的商品彼此陈列在一起会提高双方的销售量。双向关联的商品如果陈列位置允许的话应该相关联陈列,即A产品旁边有B,B产品边上也一定会有A,比如常见的剃须膏与剃须刀,男士发油与定型梳;而对于那些单向关联的商品,只需要被关联的商品陈列在关联商品旁边就行,如大瓶可乐旁边摆纸杯,而纸杯旁边则不摆大瓶可乐,毕竟买大可乐的消费者大概率需要纸杯,而购买纸杯的顾客再购买大可乐的概率不大。
  • 弱关联 :关联度不高的商品,可以尝试摆在一起,然后再分析关联度是否有变化,如果关联度大幅提高,则说明原来的弱关联有可能是陈列的原因造成的。
  • 排斥关系 :指两个产 品基本上不会出现在同一张购物小票中,这种商品尽量不要陈列在一起。

根据购物篮的信息来进行商品关联度的分析不仅仅只有如上三种关系,它们仅代表商品关联度分析的一个方面(可信度)。全面系统的商品关联分析必须有三度的概念,三度包括 支持度可信度提升度

关联规则

直接根据关联三度所定义的概念去理解会有不少难度,尤其是可信度喝提升度中的“ 谁对谁 ”的问题。其实可以换一种方式来看:

  • 规则 X 的支持度 = 规则 X 的交易次数 / 交易的总数。理解:支持度表示规则 X 是否普遍。
  • 规则 X(A→B) 的置信度= 规则 X 的交易次数/规则X中商品B 的交易次数。理解:置信度是一种条件概率,表示购买了A产品的客户再购买B产品的概率。

为方便理解这些规则,我们通过下面五个购物篮的例子来练习一下

不难发现,支持度的分母都是5,也就是购物篮的数量,分子则是选取这个规则中的所有商品同时出现在一个篮子的次数。以A->D为例,同时包含A和D的篮子有2个,总的交易数量(篮子总数)有5个,所以规则A->D的支持度为2/5;有商品 A 的篮子个数为3,在这三个篮子中,其中2个篮子又包含商品D,所以该规则的置信度(可信度)为2/3。 有关关联规则, 还有以下两个问题想补充

问: 仅看支持度和置信度是否靠谱?

答: 看一个案例:食堂卖饭,1000份打饭记录中,买米饭的有800人次,买牛肉的有600人次,两个共同买的有400人次,那么可以得出对于规则(牛肉 - > 米饭) Support =P(牛肉&米饭)= 400/1000=0.40; Confidence =P(米饭|牛肉)=400/600=0.67 置信度支持度 都很高,但是给买牛肉的人推荐米饭有意义吗?显然是没有任何意义的。因为无任何条件下用户购买米饭的概率:P(米饭)=800/1000=0.8,都已经大过买了牛肉的前提下再买米饭的概率 0.67,毕竟米饭本来就比牛肉要畅销啊。

这个案例便引出了 提升度 的概念:提升度 = 置信度/无条件概率 =0.67/0.8。规则 X(A→B) 的提升度为 n 时:向购买了 A 的客户推荐 B 的话,这个客户购买 B 的概率是 TA 自然而然购买 B 的 n × 100% 左右。生活理解:消费者平时较少单独购买桌角防撞海绵,可能偶尔想到或自己小孩碰到的时候才会想起购买,如果我们在桌子(书桌饭桌)的成功下单页面添加桌角防撞海绵的推荐,则很大程度上可以提高防撞海绵的销量。这也符合我们希望 通过畅销商品带动相对非畅销商品 的宗旨。

问: 除了公式的含义,关联三度(支持度,置信度,提升度)还有什么关联吗?

答: 可以这样理解:

  • 支持度代表这组关联商品的份额是否够大
  • 置信度( 可信度)代表关联度的强弱
  • 而提升度则是看该关联规则是否有利用价值和值得推广,用了(客户购买后推荐)比没用(客户自然而然的购买)要提高多少。

所以 1.0 是提升度的一个分界值,刚才的买饭案例中给买了牛肉的用户推荐米饭的这种骚操作的提升度小于 1 也就不难理解了。另外,高置信度的两个商品(假设达到了 100%,意味着它们总是成双成对的出现),但如果支持度很低(意味着份额低),那它对整体销售提升的帮助也不会大。

基于Apriori 算法的Python实战

由于有关Apriori等算法的研究已经很成熟,我们在用Python实战时无需一步一步计算,直接调用现有函数即可,主要是要 明白背后的原理与不同算法的使用场景与优劣比较

探索性分析

首先导入相关库并进行数据 探索性分析

数据参数解释

  • OrderNumber :客户昵称
  • LineNumber :购买顺序,如前三行分别表示同一个客户购买的三样商品的顺序
  • Model :商品名

接着来看看商品的种类

再来看看最畅销的 15 种商品

再进行一些简单的可视化

使用 Apriori 算法求解关联规则

首先 生成购物篮 ,并将同一个客户购买的所有商品放入同一个购物篮,需要提前使用 pip install Apriori 安装,之后我们使用 Apriori 包中的 dataconvert 函数, 下面是需要传入的参数解释

  • arulesdata :数据集 -- DataFrame
  • tidvar : “分类的索引”,即划分购物篮的标准,本案例是根据客户 OrderNumber -- object类型
  • itemvar :将什么东西放进篮子里,本案例是将数据集中的商品,就是 Model 列放入篮子 -- object类型
  • data_type: 默认选择 'inverted',库中提供的不变

注意:需要注意传入的参数类型,只要对了,直接套用就不是什么难事

现在查看前五个购物篮中的物品

现在 生成关联规则 ,根据排列组合,可知这些交易将会产生 21255×21254÷2 这么多个关联规则。 首先就要满足支持度的要求,太小则直接被删去,支持度的大小可根据关联规则的多少调整 如果关联规则很少,可根据实际情况放宽支持度的要求。相关参数说明:

  • + minSupport :最小支持度阈值
  • + minConf :最小置信度阈值
  • + minlen :规则最小长度
  • + maxlen :规则最大长度,一般2就够了

这里,minSupport 或 minConf 设定越低,产生的规则越多,计算量也就越大

结果说明: 以 result 第一行为例

  • + lhs : 被称为左手规则,通俗理解即用户购买的商品 - 山地车内胎
  • + rhs: 被称为右手规则,通俗理解即根据用户购买某商品来推荐的另一件商品 - ll山地胎
  • + support : 支持度,山地车内胎 和 ll山地胎 同时出现在一张购物小票中的概率
  • + confidence : 置信度,购买了 山地车内胎 的前提下,同时购买 ll山地胎 的概率
  • + lift:向购买了 山地车内胎 的客户推荐 ll山地胎 的话,这个客户购买 ll山地胎 的概率是这个客户自然而然购买 ll山地胎 的 400% 左右,即高了300% 多!

现在我们 筛选互补品和互斥品 ,代码如下

对结果简单分析一些,不要期望每个规则都有意义,要结合业务思考,比如竞速型赛道自行车与运动水壶互斥实属正常,竞速讲究轻量化,还配个水壶干什么... 比如山地车配一个竞速公路车用的运动型头盔...互斥产品则是成对出现的!

根据关联规则结果推荐产品

需要结合业务需求

  • 获得最大营销响应度?-- 看置信度,越高越好
  • 销售最大化?-- 看提升度,越高越好
  • 用户未产生消费,我们向其推荐商品?

以获得最高的营销相应率为目标

如果一个新客户刚刚下单了 山地车英骑 这个产品,如果希望 获得最高的营销响应率 ,那在他付费成功页面上最应该推荐什么产品?

目标:获得最高的营销响应率

以最大化总体销售额为目标

如果一个新客户刚下单了 山地英骑 这个产品,如果希望 最大化提升总体的销售额 ,那么在他付费成功的页面上应该推荐什么产品?

目标:最大化销售额

再次重申 提升度通俗含义: 提升度是相对于自然而然购买而言,A对B的提升度为4.0的理解如下:向购买了A的用户推荐B,则该用户购买B的概率是该用户单独(即自然而然的购买)购买B的概率的 400% 向购买了A的用户推荐B,则该用户购买B的概率比该用户单独(即自然而然的购买)购买B的概率高 300%

用户并未产生消费,为其推荐某样商品。如果大家对Python感兴趣的话,可以加一下我的薇信哦:abb436574,免费领取一套学习资料和视频课程哟~

小天结语: 基于关联规则的 Apriori 算法是智能推荐领域十分经典的应用之一,简单易上手。推荐领域的难点在于 过大的客户量与其产生的数据 ,所以一般到了最后用的都是 混合推荐 。至于更深层次的序贯模型与协同过滤,大部分都是使用分布式框架如 Spark,如果大家感兴趣的话,小天后续也会推出相关文章。

用Python实现智能推荐!某音,某宝都是智能推荐的,你都知道吗?相关推荐

  1. python动态图-python之最炫抖音动态图

    原标题:python之最炫抖音动态图 我们使用2013 年-2019 年比特币(BTC) 的价格数据绘制面积图动画,其HTML 交互效果页面如图11-4-6 所示.该数据集包括四列数据:年份(year ...

  2. 开课吧python课程-开课吧Python课程亮相胡海泉抖音直播间

    7月15日19时,著名歌手胡海泉进行了个人直播带货首秀,数字化人才在线教育平台开课吧携旗下最火爆的Python课程亮相其抖音直播间.据最新消息称,开课吧累计付费学员人数已超过400万,课程直播带货销量 ...

  3. 手机便携版_智能体验醇音随行 哈曼卡顿音乐琥珀便携版评测

    提起哈曼卡顿(harman/kardon)的名字,相信会有无数个隶属于它的标签,旗下的豪华时尚音箱品牌:哈曼卡顿,一直在引领着音箱业的发展,从汽车音箱,到电脑音箱,再到家庭音箱,桌面音箱等一系列的产品 ...

  4. 编程入门python语言是多大孩子学的-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...

    原标题:我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐? 最近有一些家长问我,需不需要让孩子学习Python,孩子学习Python有什么作用? 最近确实有看到不少的机构在宣传Python, ...

  5. 自学python需要买书吗-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...

    近年来,全世界各个企业和政府的都非常青睐Python编程语言. 主要编程语言的发展趋势,图片来自 Stack Overflow在GitHub 2017年度报告中,Python 超越 Java 成第二受 ...

  6. python3开发工具推荐_python开发工具有哪些?我推荐这5款python开发工具!

    python开发工具有很多,目前我们用的比较多的是pycharm,除了pycharm还有文本编辑器像微软的vscode,sublime text都有非常好的插件,今天,我就把Python程序员使用频率 ...

  7. [附源码]Python计算机毕业设计SSM基于协同过滤算法的个性化智能图书推荐系统(程序+LW)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. 抖音作品怎么快速上热门推荐?如何上精选

    首先我们的抖音视频时长一定够,一定要够它所要求的时长数,不要只拍7.8秒就结束了,这样是上不了热门推荐的,试想一个有质量的内容只有短短几秒钟吗.建议大家开通抖音长视频权限. 画质清晰(确保升级到抖音最 ...

  9. 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】

    摘 要 为了满足不同的用户群体的需求,中国移动的套餐业务更新频繁,每个月都会推出很多个性化的套餐服务,当前,中国移动创建套餐的方式是手动编辑上百行 SQL 语句之后插入到数据库中,一旦 SQL 语句中 ...

最新文章

  1. C# 篇基础知识11——泛型和集合
  2. 黑页php,炫酷帅气的黑页源码
  3. maya为什么不能导出fbx_Maya无法展 UV的解决办法
  4. Serverless 解惑——函数计算如何访问 SQL Server 数据库
  5. android多行文本框hint居中,在安卓等移动浏览器中placeholder中的文字不垂直居中问题...
  6. iptables基本配置方法
  7. 6、用户登录并发、新建以及编辑操作;
  8. pat 乙级 1011 A+B 和 C(C++)
  9. LeetCode 681. 最近时刻
  10. vs不一致的行尾对话框怎么调出_细分调漆步骤,新手师傅怎么轻松调漆
  11. 计算机负数次幂科学表示,负数的科学计数法怎么表示
  12. 【java】深入了解JAVA可变长度的参数
  13. 软件工程(五)软件分析和软件设计
  14. 4K字记一次血淋淋的MySQL崩溃修复案例
  15. 智能驾驶软件测试,智能驾驶实车测试系统-VDAS
  16. 人体神经系统结构图高清,人体神经系统全貌图片
  17. PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍
  18. iOS版本最新分布概况
  19. 360°全方位解析C语言的三目运算符
  20. SOI round1 题解

热门文章

  1. 2020快手K12教育培训行业数据价值报告
  2. 手把手教你做产品经理1.0
  3. 中国移动互联网流量半年度分析报告
  4. 科技计划项目数据管理过程模型
  5. 作者:李冰(1989-),女,中国电子技术标准化研究院工程师。
  6. 【2016年第2期】大数据背景下的治理现代化:何以可能与何以可为(上)
  7. 【Python】可视化神经网络训练过程时处理报错 train_acc=hist.history[‘acc’] KeyError: ‘acc’
  8. ANSI C and Microsoft C++中常用的预定义宏以及 宏定义中 # 和 ## 的区别
  9. C语言编程 简单展开扫雷游戏
  10. 如何进行云主机带宽测试