推荐系统简介

这个时代背景下, 「信息爆炸」与「长尾问题」的其中一个主要解决方案是「个性化推荐」「搜索技术」,前期我们先探讨个性化推荐技术。那具体什么是个性化推荐,怎么去实现这一过程呢?这一章让我们一起探寻个性化推荐的整个流程与技术概览,后续章节我们会逐一展开。这一章读者朋友需要做到的是读完以后,对个性化推荐技术有一个**「全局宏观的认识」 ,对于「细节不用过多地苛求」**。

▐ 1.1 一个例子

在日常生活中,你在打开淘宝购物可能会遇到以下若干情形:

1).和好友同时打开app后发现,为什么两个人首页各个频道**「入口的图片」**以及「 文字不同」

2).为什么同样搜索可爱小背心,你和好友竟然出现不一样的商品列表?

3).为什么我刚刚浏览了裤子以后,首页各个频道的展现变了?

4).为什么在对比好友的以上界面,我更喜欢我自己的界面?

【注】: 这里频道的概念是指**「淘抢购」/「有好货」/「必买清单」**等电商频道概念,不理解的读者可以打开APP 以上情形背后的答案就是个性化推荐技术,当然也包含了相关的搜索技术。那淘宝是如何做到的呢,其实这背后就是涉及了数据的收集,挖掘计算,以及个性化呈现。

所以基于上面的问题我们又会问:

1).淘宝是**「如何知道」 我喜欢什么并且可能「想要买」**什么的?

2). 「为什么」它能做到「每个人都不一样」

3). 「为什么」它要「这么做」? 我们一个个来回答

▐ 1.2 淘宝是如何知道的

回答这个问题,其实背后是一套机器学习的方法在支撑,所以我们先要弄清楚**「什么是机器学习」**。

▏1.2.1 机器学习概述

讨论机器学习前,我们先看看什么是人的学习,这里主题是人。学习,是指通过**「阅读、听讲、思考、研究、实践」 等途径获得知识或技能的过程。学习分为「狭义」 「广义」 两种,狭义:通过阅读、听讲、研究、观察、理解、探索、实验、实践等手段获得知识或技能的过程,是一种使个体可以得到持续变化(知识和技能,方法与过程,情感与价值的改善和升华)的行为方式。广义:是人在生活过程中,通过获得经验而产生的行为或行为潜能的相对持久的行为方式。学习后的主体「在未来」 的生活中可以「将过去」 学习到的「知识,技能」「应用」 于生产生活,「来开展工作」**。

那从字面上来理解,机器学习就是将主体换为机器,并且它通过某种途径来获取知识或者技能的过程,并应用于未来的生活工作。人获取知识的**「外化载体」 是书本,音频,视频等,「传输通道」 是人的感官,处理中心是大脑,而对应于机器外化载体也同样可以有以上各类信息源,并且使用各类「外放设备」 收集信息,处理中心是「CPU与存储」**共同维护。

人的学习有两个基本方法,一个是**「演绎法」 ,一个是「归纳法」 ,这两种方法分别对应人工智能中的两种系统:「专家系统」 「机器学习系统」 。所谓演绎法,是从已知的规则和事实出发,推导新的规则、新的事实,这对应于专家系统。专家系统也是早期的人工智能系统,它也称为规则系统,找一组某个领域的专家,如医学领域的专家,他们会将自己的知识或经验总结成某一条条规则、事实,例如某个人体温超过37度、流鼻涕、流眼泪,那么他就是感冒,这是一条规则。当这些专家将自己的知识、经验输入到系统中,这个系统便开始运行,每遇到一些新情况,会将之变为一条条事实。当将事实输入到专家系统时,专家会根据规则或事实进行推导、梳理,并得到最终结论,这便是专家系统。而归纳法是「从现有样本数据中不断地观察、归纳、总结出规律和事实,对应机器学习系统或统计学习系统,侧重于统计学习,从大量的样本中统计、挖掘、发现潜在的规律和事实」**。

举个栗子可能更容易让人理解这一过程,并且对于已经对机器学习有一定了解的同学,我们顺便讲讲什么是特征工程里面的交叉特征与线性/非线性模型

1).数据–>单特征(low level 特征)+线性模型–>预测

假设有一对情侣,你是主人公(女友),2个月前,朋友给你介绍了一个男友,他是工作狂。为了互相了解,你们每周末都会一起约会吃饭;已经约会有8周了,每周吃饭男友都会比约定时间晚到10分钟-30分钟,所以你每次约会也会比约定时间晚10-30分钟,并且你总结了一个规律:如果约会前打电话他说在公司,那么基本都是晚到30分钟左右,如果他说在家里,那么基本会晚到10分钟。

2).数据–>交叉特征(high level 特征)+线性模型+单特征(low level 特征)+非线性模型–>预测

以上情形没有维持多久,男友的迟到时间变多了,有时在公司他会迟到15分钟,但是有时在家里却会迟到20分钟,所以有时你到了以后等了很久男友才来,然后经过询问迟到15分钟和迟到20分钟的具体情况,你又得出了一个结论:如果男友在家并且不开车过来,那一般就要20分钟了,如果男友在公司但是他开车过来那就只要15分钟。

3).数据–>交叉特征(high level 特征)+单特征(low level 特征)+非线性模型—>预测

不过又过了没多久,男友的迟到时间又变了,这次基本上迟到时间在10-45分钟之间,并且非常不规律,然后你总结了经验觉得是不是我要去分析分析本质的原因,然后看看晚到多久合适,于是得到了以下可能对男友迟到时间有用的因素(特征):出发地在哪,是否开车,是否下雨,出发的时间等等。于是最终你通过分析发现没有找到非常强的规律:下雨(不下雨),男友HH:MM从家(公司)出发,开车(不开车)的情况下晚到具体的时间,但是你分析到下雨天男友在公司晚于17点出发的情况下迟到时间一般在30-45分钟,不下雨天男友在家早于17点出发的情况下迟到时间一般在10-20分钟,以及等等情况。不过你还是想再精确一点,于是你请教了你的好朋友–一个算法工程师,经过他的一番数据挖掘,他告诉你了一个公式,只要按着他的公式计算你晚到的时间即可。

你很想知道他是怎么做到的,于是你开开始请教他。他告诉你其实上面的种种因素都可以作为一个变量,每个变量有一个权重;比如天气的权重是8,当下雨则迟到时间加8分钟,不下雨则不加;再比如开不开车的权重为10,不开车迟到时间加10分钟,开车的时候不加等等。

然后进一步的问题就是这个权重怎么得来的呢?那么学到以上决策机制流程的就需要以下几个要素:

1). 「数据」 :男友历次迟到的时间,以及迟到前的状态(天气,位置,出发时间等等)

2). 「特征工程」 :比如上面的地点和是否开车的二维联合就是特征工程(交叉特征)

3). 「算法」 :使用决策树(非线性)还是线性回归(线性)等等其它算法

4). 「学习到模型」 :主要指上面各个特征的权重组成的公式

【注】:这里涉及到一个问题就是权重为多少才是对的权重呢?其实这里就涉及了一个模型评估的问题。举个例子,如果利用你学习到的权重模型A与模型B比较,A模型在后面的十次约会中累积误差为10分钟,而B模型为15分钟,则A模型的权重比B好。当然具体算法模型的迭代过程,我们在未来会讲到。

**▏延伸:  **

上面的例子讲诉的就是在机器学习整个框架下,有深挖特征和深挖算法两种;做特征就是针对具体问题构造各种可能对问题结果有影响的因素(包括单特征与交叉特征);深挖算法其实是尝试不同的算法,比如线性与非线性(浅层学习与深度学习算法)。目前业界比较代表的做法是LR+深层特征,DNN+浅层特征。其实上面的三个约会的例子的渐进性其实在这里也正好对应了机器学习中的反馈学习及强化学习,根据男友迟到的时间,女生在动态的调整自己晚到的时间。

▐ 1.3 机器学习过程中的几个注意点

▏1.3.1.从感知到认知

「感知」 的一个重要体现就是数据的获取与收集(可类比人对信息的获取,如眼睛),**「认知」**强调理解

▏1.3.2.从学习到决策

「学习」 : 对已有数据应用相关算法进行规则/模型的计算归纳; 「决策」:遇到新的问题时,使用学到的知识进行学习。 大数据可以将海量数据转换成信息、知识和智能,支撑不同层面生产、决策与经营分析,并可能发展创新的大数据业务,建立新的增长点。

▏1.3.3算法和数据哪个更重要

「数据秒杀一切算法」 ,但\\「真正推动社会的进步的是算法,而不是数据」\\ 。数据就好像是工业革命时期的煤炭,非常重要,蒸汽机就像是算法,最后大家记住的是瓦特发明了蒸汽机,而不是英国的煤矿。

▐ 1.4 机器学习常见的概念

▏1.4.1.监督学习

「目标驱动」 的机器学习,较短时间内通过数据训练创造实现目标的最优解。监督学习的数据比较特殊,举个栗子,比如你在中学学习英语,在老师的帮助下练习英语发音,数据是你的发音和这个发音的对错/准确程度(对错/准确程度是老师告诉你的),然后算法就是你去尝试去模拟数据(发音)的规律,不断根据英语单词的拼写规律来学习发音,最终你学习到了基于拼写及句子的上下文调整发音。

监督学习创造了新的连接,监督学习为达成确定结果的“不确定过程”本身,为商业决策带来了前所未有的全新视角。它是 “不为人知”但已逐步普及的高级数据驱动。

▏1.4.2.无监督学习

「无监督学习」的数据中「没有人告诉你对错信息」,举个栗子,今天老师给你了一个碗,里面有黑米有红米,让你对这个碗里的米分个类,你可能根据颜色分类,也可能根据大小、重要分类,都没有问题,因为老师没说按什么分,对不对这个问题。

▏1.4.3.降维

降维是从更基本的维度来看问题,举个栗子,这双鞋,对其降维可以是nike这个运动品牌,也可以是运动鞋这个类目。

▏1.4.4.泛化

「泛化」就是你学到的规则/模型的「普适程度」

举个栗子吧,今天老师让你看了20个西瓜,并告诉你熟不熟,然后给你一个西瓜,问你只看外观,这个西瓜熟不熟,你可能根据以下来判断:  看表皮,你发现20个瓜里面,瓜皮表面光滑、花纹清晰、纹路明显、底面发黄的瓜都是熟的,但是不满足任何一个条件的都是不熟的。 所以你学到的模型如下:如果瓜皮表面光滑、花纹清晰、纹路明显、底面发黄的,就说明是熟瓜;其它的是不熟的瓜。 但是其实有时候,纹路不明显,但其他条件满足的时候也会有一部分是熟的瓜。所以你学到的模型具有一定泛化性能,但不具有很高的泛化性能。如下图,目标是蓝线,你从data里面学到了左右两条红线,左边的有一些误差,右边的无误差,但是对于真实的目标而言,左边更好,因为日常问题中,你没法获取所有的数据,所有会出现泛化这个问题。

▏1.4.5 机器学习最难的是什么

机器学习最难的一部 ,就是把现实生产生活中的问题, 提炼成一个机器学习问题 。这基于对问题本身的深刻洞察。 如何从一个全新的领域, 去提取机器学习可以有助解决的最重要的问题。从**「“主观”决策」->「“客观”决策」->「“自动”决策」**的发展。

▐ 1.5 淘宝的机器学习

由上面机器学习相关的介绍可以类推淘宝app为什么能够知道你喜欢什么, 首先是多面的**「消费者可被追踪和认识」 「消费者的多面性」 ,在数据化的数字时代,有被追踪和描述的可能,另外是基于一个假设条件的:「一个人历史的购物行为及偏好,会在未来的行为中也有迹可循」**。所以利用机器学习我们通过用户历史交互数据(特征包括:谁在什么时间买了什么东西,这个东西的名字叫什么,什么颜色,价格多少等等)。 比较有用的可以对未来推荐有指导意义的特征包括:

1). 「购买力」:一个平时只买100元左右牛仔裤的用户,未来短期内买10000元和10元的裤子的概率远远低于买100左右或者200左右的概率,所以推荐的时候会更优先给你看到100-200左右的裤子

2). 「性别」:平时在淘宝上只买男性或男女通用商品的用户,未来短期内买女性商品概率远远低于男性和男女通用商品的概率

3). 「年龄」:一个一直购买20-25岁左右服饰的用户,未来短期内购买其它年龄段的概率远远小于20-25岁年龄段的概率

4). 「其它」:用户画像&天气&地理位置

【注】以上特征均会在最后预测用户可能喜欢什么中有用,但是注意一个人也可能很违背之前的购物行为,比如一个只够买20-25岁衣服的女性,突然买了一个婴儿的衣服,可能从这个节点是她小孩诞生或者是给姐姐的小孩买礼物等等,这一**「瞬时购物兴趣」**的变化一般由「**实时推荐」**cover。

▏1.5.1 为什么能够做到每个人不一样:

参看上面机器学习介绍的相关公式你会发现,如果在机器学习阶段考虑一些跟人相关的因素(特征),那这个因素的不同值就会影响结果输出。比如我们现在根据用户对他购物的商品的评分数据,来预测一个他从未买过的商品的评分,背后影响用户评分的因素可能包括以下几个:价格,售前/后,物流,商家主营类目是否和用户购买的类目相同,其它用户的评分(如果其他用户评分高则一定程度上代表了这个商品的好坏)等等。比如物流和价格这类因素(特征),如果和用户这个特征做交叉后,其实会有非常迥异的权重值,而这一切是每个用户的购买力和用户体验耐受力等不同带来的。所以如果你**「考虑了用户的特征则这就会影响每个人的推荐结果不一样」**。

▏1.5.2 为什么淘宝要这么做:

至于为什么淘宝会去花这么多资源做个性化,可以概括为以下三点: 「获取新的认知」,「创造新的智慧」,「产生有价值的决策」;从历史数据中**「探索用户的消费需求」 ,旧数据中「挖掘新认知」 ,从新认知出发结合机器学习算法创造新的智慧,最后帮助用户「发现他感兴趣的商品」 ,将最适合的商品「呈现」**给他。

1).长尾挖掘

上世纪90年代—21世纪初,关于推荐系统的几个大事件:1995年亚马逊成立网上书店;1998年Google成立,相当于革新了搜索引擎,从以前目录检索式的网站到用户可以随意搜索;2004年,《长尾理论》这本书问世,书中描述了一个长尾概念,简单来说这个概念就是, 「如果把世界上的文化产品或者商品做受众统计,可能头部是非常庞大的,但尾部也会非常长,虽然尾部受众人群少,但是这个尾部的所有受众人群加起来也是一个非常庞大的群体,甚至可能会超过头部人群」

「打破80%的用户只买20%的商品的规律,更好地降低长尾商品的比例」。因为在电商产品中,在非个性化的商品展示过程中,往往爆款商品拥有更多的流量,这样其实不能很好的照顾到高质量长尾用户和高质量长尾商品。举个例子,在淘宝的某个频道,有很多裤子,A裤子100元近5天的销量可能1w件,B裤子1000元近5天的销量是100件,在不考虑其它因素的情况下,非个性化模型(或运营排序)一般会偏向于A裤子在B裤子前面,但是如果这个用户在平台历史购物行为都是集中在高价格商品(名牌包包等),则如果你个性化的考虑每个人的这个偏好,那么有可能B裤子就在前面了,而且用户可能真的更喜欢B裤子。

2).流量利用

在APP或网站有限的商品曝光机会下,为每个展现的商品争取最大的点击/成交等。因为用户在平台上地时间是有限的,如果能在海量的商品中,为用户找到他感兴趣地商品,那么平台将在这有限地流量资源下收获更大的价值。举个例子,有可能用户在某个频道下,看了A,然后看了B,再看了C,最终买了D,并且ABCD这四个商品都是有一定关系地商品,那么平台能否在一开始在我看完A以后就帮我找到C,并在A下面推荐D商品。 「在最大限度挖掘用户购物需求的情况下,最大限度缩短用户购物的时间」

3).用户体验

为每个用户创造**「极致的用户体验」 。极致的用户体验是用户信任依赖平台,在每次购物过程中,希望平台能够帮助其快速,准确地找到其想要地商品。这一过程中包括了基于用户历史兴趣的再延伸,也有基于用户角色的行为探索。比如用户每隔25-30天会购买尿不湿,未来平台是否能够在23-33之间快速捕捉用户购买尿不湿的需求;再比如用户在平台上第一次浏览电脑,我基于用户的其它购物行为(比如用户之前在平台上经常买20-25岁的衣服,并且大部分邮寄的地址为大学宿舍),是否平台可以在接下来的浏览中为用户呈现适合学生族高性价的电脑。 在信息的极大丰富的背景下,用户需求从单一/从众的需求,发展到多样/个性/品位的需求,需要一个「有效的信息过滤工具」**来提升用户更加复杂的需求。

▐ 1.6.推荐技术概述

推荐在电商购买决策过程中的作用

电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程,经典配图

上图隐含的2个重要的推荐系统的核心功能:

「路径优化」(弱化主动筛选功能):从看了A再看B再看C最后买了C 到 看了A, 推荐系统推荐C,用户下单。

「兴趣发现」(贴心小秘书):从你上淘宝不知道买什么的时候,告诉你你可能喜欢什么 常用的推荐产品

▏1.6.1类比男友

推荐系统是怎么做到的类比人的行为 其实推荐系统做的事可以类比于生活中的贴心男友或者女友,那我们就当他是男友吧,来看看他是怎么做的

「上知天文,下通地理」: 下雨了,男友知道你没带伞,把伞送到送到了公司

「察言观色」:女朋友一直在看宝宝,尤其是LV的,生日那天买了一个

「人情练达」:看到和你玩的好的几个闺蜜都买了某款口红,没过几天就买了这款口红

「念念不忘」:你经常说的偶像、崇拜的人他会记住,时不时买几个他们的新作品

「体贴入微」 :他知道你大姨妈来的时候比较喜欢吃甜品,所以到了那几天他都会带你去吃

「紧跟时尚」:新品发布,只要是你有兴趣的那个方向的产品,都会买给你

▏16.2 推荐系统怎么来做到上面这些方面呢

1) 「上下文」

推荐系统会在给你推荐商品时将考虑你所在的城市、天气、季节等因素;梅雨天伞比平时好卖,夏天空调需求比秋天高等,北方人比南方人更喜欢保湿的化妆品

2) 「用户画像」

男-女/经期时间/甜品这些都可以做成标签,作为推荐的依据,上次你买的姨妈巾/纸尿裤/奶粉多少天会用完,19岁男生一般不会(低概率)买女性比基尼

3) **「协同过滤」 **

「基于用户」:在茫茫购物的人海中,总有那么一些人是跟你非常像的(类似上面的闺蜜);推荐系统根据你们的行为(浏览、点击、购买)计算跟你最像的那些用户,当他们看了/买了什么的时候,他就可能会推荐这些商品。

「基于商品」: 在茫茫商品中,总有一些商品他们的属性、描述很像,或者他们经常被一起购买;推荐系统将会计算物品与物品之间的相似或关联程度,当你看了某个商品的时候,他将会把最相似/最相关的那几个商品推荐给你。

「基于模型」(这个比较抽象): 利用数学建模的手段,评估你的购买意图,将模型计算出来的得分最高的推荐给你

「基于内容」: 在茫茫商品中,总有一些商品他们的属性、描述很像;当你看了某些商品后,推荐系统会将内容上最相似的那些上商品推荐给你

「其它」:基于统计/知识等 目前主流推荐系统都是以上各个策略的混合

▐ 1.7常见的推荐功能

这里以电商为例进行介绍,用户从产生购买意向,到经历购买决策,直至最后下单的整个过程,在任何一个购物链路上的节点,推荐产品都能在一定程度上帮助用户决策。

  1. 「按场景」

电商app推荐场景现在已经非常丰富了,比如首页猜你喜欢、商品详情页、购物车推荐、文章推荐等

  1. 「按形态」

个数形态来分,有**「feeds流」 「topN」 推荐等feeds流偏向于「无限下拉」 型(如首页猜你喜欢),TopN是「有限推荐」**个数(商详的相似推荐);展现物料来分有图片、文章(内容)、视频、商品推荐。

  1. 「按感知度」

从用户感知度来说,主要分为**「个性化」、「相似」、「关联」、「排行」 等,个性化即「千人千面」 **,每个用户可以在推荐场景感知到与其他人不同的物料展现;相似和关联推荐偏向于以某个物料为依据推荐此「物料相似、关联」的商品,其中关联商品是指用户交互过