<转>推荐系统原理介绍-用户画像简介 - CSDN博客

标签: | 发表时间:2017-11-07 21:20 | 作者:
出处:http://blog.csdn.net

最近在做推荐系统,在项目组内做了一个分享。今天有些时间,就将逻辑梳理一遍,将ppt内容用文字沉淀下来,便于接下来对推荐系统的进一步研究。推荐系统确实是极度复杂,要走的路还很长。

 

A First Glance

 

 

为什么需要推荐系统——信息过载

 

随着互联网行业的井喷式发展,获取信息的方式越来越多,人们从主动获取信息逐渐变成了被动接受信息,信息量也在以几何倍数式爆发增长。举一个例子,PC时代用google reader,常常有上千条未读博客更新;如今的微信公众号,也有大量的红点未阅读。垃圾信息越来越多,导致用户获取有价值信息的成本大大增加。为了解决这个问题,我个人就采取了比较极端的做法:直接忽略所有推送消息的入口。但在很多时候,有效信息的获取速度极其重要。

 

   

 

由于信息的爆炸式增长,对信息获取的有效性,针对性的需求也就自然出现了。推荐系统应运而生。

 

亚马逊的推荐系统

 

最早的推荐系统应该是亚马逊为了提升长尾货物的用户抵达率而发明的。已经有数据证明,长尾商品的销售额以及利润总和与热门商品是基本持平的。亚马逊网站上在线销售的商品何止百万,但首页能够展示的商品数量又极其有限,给用户推荐他们可能喜欢的商品就成了一件非常重要的事情。当然,商品搜索也是一块大蛋糕,亚马逊的商品搜索早已经开始侵蚀谷歌的核心业务了。

 

在亚马逊的商品展示页面,经常能够看见:浏览此商品的顾客也同时浏览。

 

 

这就是非常典型的推荐系统。八卦一下:”剁手族”的兴起,与推荐系统应该有一定关系吧,哈哈。

 

推荐系统与大数据

 

大数据与云计算,在当下非常热门。不管是业内同事还是其他行业的朋友,大数据都是一个常谈的话题。就像青少年时期热门的话题:“性”。大家都不太懂,但大家都想说上几句。业内对于大数据的使用其实还处于一个比较原始的探索阶段,前段时间听一家基因公司的CEO说,现在可以将人类的基因完全导出为数据,但这些数据毫无规律,能拿到这些数据,但根本不知道可以干什么。推荐系统也是利用用户数据来发现规律,相对来说开始得更早,运用上也比较成熟。

 

冷启动问题

 

推荐系统需要数据作为支撑。但亚马逊在刚刚开始做推荐的时候,是没有大量且有效的用户行为数据的。这时候就会面临着“冷启动”的问题。没有用户行为数据,就利用商品本身的内容数据。这就是推荐系统早期的做法。

 

基于内容的推荐:

  1. tag   给商品打上各种tag:运动商品类,快速消费品类,等等。粒度划分越细,推荐结果就越精确

  2. 商品名称,描述的关键字    通过从商品的文本描述信息中提取关键字,从而利用关键字的相似来作推荐

  3. 同商家的不同商品       用户购买了商店的一件商品,就推荐这个商店的其他热销商品

  4. 利用经验,人为地做一些关联    一个经典的例子就是商店在啤酒架旁边摆上纸尿布。那么,在网上购买啤酒的人,也可以推荐纸尿布?

 

由于内容的极度复杂性,这一块儿的规则可以无限拓展。基于内容的推荐与用户行为数据没有关系,在亚马逊早期是比较靠谱的策略。但正是由于内容的复杂性,也会出现很多错误的推荐。比如:小明在网上搜索过保时捷汽车模型。然后推荐系统根据关键字,给小明推荐了价值200万的保时捷911......

 

用户行为数据—到底在记录什么

 

在游戏里面,我们的人物角色是一堆复杂的数据,这叫做数据存储;这些数据以一定的结构组合起来,这叫做数据结构。同样地,在亚马逊眼里,我们就是一张张表格中一大堆纷繁复杂的数字。举一个栗子:

 

小明早上9点打开了亚马逊,先是浏览了首页,点击了几个热销的西装链接,然后在搜索栏输入了nike篮球鞋,在浏览了8双球鞋后,看了一些购买者的评价,最终选定了air jordan的最新款。

 

这就是一条典型的用户行为数据。亚马逊会将这条行为拆分成设定好的数据块,再以一定的数据结构,存储到亚马逊的用户行为数据仓库中。每天都有大量的用户在产生这样的行为数据,数据量越多,可以做的事情也就越强大。

 

user-item 用户偏好矩阵

 

收集数据是为了分析用户的偏好,形成用户偏好矩阵。比如在网购过程中,用户发生了查看,购买,分享商品的行为。这些行为是多样的,所以需要一定的加权算法来计算出用户对某一商品的偏好程度,形成user-item用户偏好矩阵。

 



数据清理

 

当我们开始有意识地记录用户行为数据后,得到的用户数据会逐渐地爆发式增长。就像录音时存在的噪音一样,获取的用户数据同样存在着大量的垃圾信息。因此,拿到数据的第一步,就是对数据做清理。其中最核心的工作,就是减噪和归一化:

 

减噪:用户行为数据是在用户的使用过程中产生的,其中包含了大量的噪音和用户误操作。比如因为网络中断,用户在短时间内产生了大量点击的操作。通过一些策略以及数据挖掘算法,来去除数据中的噪音。

 

归一化:清理数据的目的是为了通过对不同行为进行加权,形成合理的用户偏好矩阵。用户会产生多种行为,不同行为的取值范围差距可能会非常大。比如:点击次数可能远远大于购买次数,直接套用加权算法,可能会使得点击次数对结果的影响程度过大。于是就需要归一算法来保证不同行为的取值范围大概一致。最简单的归一算法就是将各类数据来除以此类数据中的最大值,以此来保证所有数据的取值范围都在[0,1]区间内。

 

降维算法——SVD奇异值分解

 

通过记录用户行为数据,我们得到了一个巨大的用户偏好矩阵。随着物品数量的增多,这个矩阵的列数在不断增长,但对单个用户来说,有过行为数据的物品数量是相当有限的,这就造成了这个巨大的用户偏好矩阵实际上相当稀疏,有效的数据其实很少。SVD算法就是为了解决这个问题发明的。

 

 

将大量的物品提取特征,抽象成了3大类:蔬菜,水果,休闲服。这样就将稀疏的矩阵缩小,极大的减少了计算量。但这个例子仅仅是为了说明SVD奇异值分解的原理。真正的计算实施中,不会有人为的提取特征的过程,而是完全通过数学方法进行抽象降维的。通过对矩阵相乘不断的拟合,参数调整,将原来巨大的稀疏的矩阵,分解为不同的矩阵,使其相乘可以得到原来的矩阵。这样既可以减少计算量,又可以填充上述矩阵中空值的部分。

 

协同过滤算法

我一直在强调用户行为数据,目的就是为介绍协同过滤算法做铺垫。协同过滤,Collaborative Filtering,简称CF,广泛应用于如今的推荐系统中。通过协同过滤算法,可以算出两个相似度:user-user相似度矩阵; item-item相似度矩阵。

 

 

为什么叫做协同过滤?是因为这两个相似度矩阵是通过对方来计算出来的。举个栗子:100个用户同时购买了两种物品A和B,得出在item-item相似度矩阵中A和B的相似度为0.8; 1000个物品同时被用户C和用户D购买,得出在user-user相似度矩阵中C和D的相似度是0.9. user-user, item-item的相似度都是通过用户行为数据来计算出来的。

 

计算相似度的具体算法,大概有几种:欧几里得距离,皮尔逊相关系数,Cosine相似度,Tanimoto系数。具体的算法,有兴趣的同学可以google.

 

用户画像

 

提到大数据,不能不说用户画像。经常看到有公司这样宣传:“掌握了千万用户的行为数据,描绘出了极其有价值的用户画像,可以为每个app提供精准的用户数据,助力app推广。” 这样的营销广告经不起半点推敲。用户对每个种类的app的行为都不同,得到的行为数据彼此之间差别很大,比如用户在电商网站上的行为数据,对音乐类app基本没有什么价值。推荐系统的难点,其中很大一部分就在于用户画像的积累过程极其艰难。简言之,就是用户画像与业务本身密切相关。

 

LR逻辑回归

 

基于用户偏好矩阵,发展出了很多机器学习算法,在这里再介绍一下LR的思想。具体的逻辑回归,又分为线性和非线性的。其他的机器学习算法还有:K均值聚类算法,Canopy聚类算法,等等。有兴趣的同学可以看看July的文章。链接在最后的阅读原文。

 

LR逻辑回归分为三个步骤:

  1. 提取特征值

  2. 通过用户偏好矩阵,不断拟合计算,得到每个特征值的权重

  3. 预测新用户对物品的喜好程度

 

举个栗子:

小明相亲了上千次,我们收集了大量的行为数据,以下数据仅仅是冰山一角。

 

 

通过大量的拟合计算得出,特征值“个性开朗程度”的权重为30%,“颜值”的权重为70%。哎,对这个看脸的世界已经绝望了,写完这篇文章,就去订前往韩国的机票吧。

 

然后,通过拟合出的权重,来预测小明对第一千零一次相亲对象的喜爱程度。

 

 

这就是LR逻辑回归的原理。具体的数学算法,有兴趣的同学可以google之。

 

如何利用推荐系统赚钱

 

还是以亚马逊为例。小明是个篮球迷,每个月都会买好几双篮球鞋。通过几个月的购买记录,亚马逊已经知道小明的偏好,准备给小明推荐篮球鞋。但篮球鞋品牌这么多,推荐哪一个呢?笑着说:哪个品牌给我钱多,就推荐哪个品牌。这就是最简单的流量生意了。这些都叫做:商业规则。

 

但在加入商业规则之前,需要让用户感知到推荐的准确率。如果一开始就强推某些置顶的VIP资源,会极大地损害用户体验,让用户觉得推荐完全没有准确性。这样的后果对于推荐系统的持续性发展是毁灭性的。

 

过滤规则

 

协同过滤只是单纯地依赖用户行为数据,在真正的推荐系统中,还需要考虑到很多业务方面的因素。以音乐类app为例。周杰伦出了一张新专辑A,大部分年轻人都会去点击收听,这样会导致其他每一张专辑相似专辑中都会出现专辑A。这个时候,再给用户推荐这样的热门专辑就没有意义了。所以,过滤掉热门的物品,是推荐系统的常见做法之一。这样的规则还有很多,视不同的业务场景而定。

 

推荐的多样性

 

与推荐的准确性有些相悖的,是推荐的多样性。比如说推荐音乐,如果完全按照用户行为数据进行推荐,就会使得推荐结果的候选集永远只在一个比较小的范围内:听小清新音乐的人,永远也不会被推荐摇滚乐。这是一个很复杂的问题。在保证推荐结果准确的前提下,按照一定的策略,去逐渐拓宽推荐结果的范围,给予推荐结果一定的多样性,这样才不会腻嘛。

 

持续改进

 

推荐系统具有高度复杂性,需要持续地进行改进。可能在同一时间内,需要上线不同的推荐算法,做A/B test。根据用户对推荐结果的行为数据,不断对算法进行优化,改进。要走的路还很长:路漫漫其修远兮,吾将上下而求索。

相关 [推荐系统 原理 用户] 推荐:

<转>推荐系统原理介绍-用户画像简介 - CSDN博客

- -
最近在做推荐系统,在项目组内做了一个分享. 今天有些时间,就将逻辑梳理一遍,将ppt内容用文字沉淀下来,便于接下来对推荐系统的进一步研究. 推荐系统确实是极度复杂,要走的路还很长. 为什么需要推荐系统——信息过载. 随着互联网行业的井喷式发展,获取信息的方式越来越多,人们从主动获取信息逐渐变成了被动接受信息,信息量也在以几何倍数式爆发增长.

推荐系统之用户行为分析

- - IT瘾-dev
基于用户行为的推荐,在学术界名为协同过滤算法. 协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求. 用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈 行为(implicit feedback).

【推荐系统】协同过滤之基于用户的最近邻推荐

- - CSDN博客互联网推荐文章
协同过滤(collaborative filtering)的核心思想:利用其他用户的行为来预测当前用户. 协同过滤算法是推荐系统中最基本的,同时在业界广为使用. 根据使用的方法不同,可以分为基于用户(user-based)、基于物品(item-based)的最近邻推荐. 基于用户的最近邻推荐的主要思想与 kNN有点相似:对于一个给定的评分集,找出与当前用户u口味相近的k个用户;然后,对于用户u没有见过的物品p,利用k个近邻对p进行预测评分.

腾讯:仅24%用户认为个性化推荐系统“靠谱”

- - 199IT互联网数据中心
盘点科技圈里的时髦词汇,必然少不了一个词:个性化推荐. 借助个性化推荐技术,互联网产品获取或积累用户的兴趣喜好数据后,可以直接为用户提供每个人感兴趣的内容,以此提升产品的内容吸引力. 想要在产品里添加个性化推荐功能已经不是一件难事,事情的难点在于推荐的内容是否准确. 为了解目前用户对该类功能的反馈,企鹅智酷推出了一项调查,以下就是调查结果:.

可解释推荐系统:身怀绝技,一招击中用户心理

- - 微软亚洲研究院
​编者按:推荐系统被广泛应用在电商网站、社交网络、生活服务网站、搜索引擎等平台. 一个好的推荐系统不仅需要准确地把握用户的需求,推荐给用户想要的内容,更需要学会与用户沟通,了解用户心理,以用户容易接受的方式给出适当的推荐. 本文中,微软亚洲研究院的研究员王希廷和谢幸将为大家详解可解释推荐系统的分类、推荐解释生成方法以及面临的机遇和挑战.

从原理到策略算法再到架构产品看推荐系统 | 附Spark实践案例

- -
本文源自于前阵子连续更新的推荐系统系列,前段时间给朋友整理一个关于推荐系统相关的知识教学体系,刚好自身业务中,预计明年初随着业务规模增长,估摸着又要启动推荐相关的项目了,所以也是趁机把相关的知识结构梳理了一遍. 这这里重新做整理,并额外做了一些增减,让整体逻辑会更通顺一点. 整个文章的结构逻辑,先从推荐系统的基础知识结构讲起,然后由浅入深过渡到几个推荐策略算法上,并且为每个推荐策略算法提供一些简单的入门Spark案例代码,再从策略过渡到系统层级,包括数据架构、策略组合、效果评估等,最终再从上层产品设计的角度去补充整个系统知识结构.

Min-Hash和推荐系统

- - xlvector - Recommender System
前几年看Google News Recommendation的那篇Paper,对里面提到的MinHash的算法基本没有注意,因为之前的习惯都是只注意论文的模型那块,至于怎么优化模型一般都只是扫一眼. 不过最近看了大量的Google Paper,发现Google在实现一个算法方面确实有很多独到之处. 其实,Min-Hash是LSH(Locality Sensitive Hash)的一种,我之前对LSH的了解仅仅限于知道它能把两个相似的东西Hash成两个汉明距离接近的2进制数.

推荐系统实战

- - 博客园_首页
推荐算法:基于特征的推荐算法. 推荐算法准确度度量公式:. 其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合. 集合相似度度量公式(N维向量的距离度量公式):. 其中,N(u)表示用户u有过正反馈的物品集合. 其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣.

推荐系统杂谈

- - 后端技术杂谈 | 飒然Hang
推荐系统是近些年非常火的技术,不管是电商类软件还是新闻类app,都号称有精准的推荐系统能给你推送你最感兴趣的内容. 现象级的资讯类app“今日头条”就得益于此成为了势头非常猛的一款产品. 本文就针对推荐系统讲述一些相关概念和实践经验. 首先需要明确的就是推荐系统的目标,一般来说不外乎以下几个:. 用户满意性:首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标.

个性化推荐系统综述

- Tony - 所有文章 - UCD大社区
上个月写过一篇产品推荐的文章,详情请见《我所了解的产品推荐》,内容很泛,多为工作心得. 本周读了几篇相关的论文,收获颇多,分享点干货. 以下内容摘自《个性化推荐系统的研究进展》,该文发表于2009年1月的《自然科学进展》专题评述,作者是刘建国、周涛、汪秉宏. 我略去了具体的算法和许多公式,重点看原理、思路和比较.