推荐系统实践小结 转

之前对于推荐,一直都仅限于理论书籍,浅一点像《集体智慧编程》《推荐系统实践》,复杂的像《数据挖掘》《机器学习》,当然也没看太深入。
当时对推荐系统的看法是,这是一个以算法为核心的系统,一切价值体现都在算法模型上了。不过这段时间有幸参与到真实系统,稍有改观。
下最近的一些想法吧,当然作为一个系统开发人员,理论算法方面的理解可能有点偏颇。

1.业务永远是第一位----------我们的本质是销售。

话说做推荐,和做营销的本质区别是什么?

还要说下销售和市场的区别,我个人理解市场和营销的区别在于市场是偏向于整体(如何定价,产品面向人群,广告投放),

而营销是偏向于个体(销售人员怎么卖)。所以推荐属于销售,产品规划和设计才是市场的事情。

宽泛的销售,相当于在大街上发传单。那么精准推荐就是说给你一个性化的解决方案,vip的服务。

因为计算机的copy能力是低成本的,而大数据处理能力刚好能将这种vip服务低成本的扩散到网络世界的每个长尾客户身上。

精准营销的目的是提高成单率,而精准推荐借助网络的长尾理论,不仅仅提高了成单率,也做大了盘子

继续聊业务逻辑。既然是卖东西,那么就从卖东西往下说,假设你是购物中心的一个小门店老板。

点击就是在广场中流动的人群,人潮涌动中,我们不断地吆喝着“快来看一看,买一买啊,走过路过不要错过啊”,那么你要注意什么:

第一个,作为一个老板,你要知道你产品的面向人群----------------用户分析。

三大哲学问题,你是谁,你从哪里来,又将要到哪里去?

对应下来就是用户画像分析,来源统计分析,效果统计(其实这里要包括崩失率,去向,转化率等)。

第二个,作为一个老板,你要知道季节潮流,进货渠道---------------热度。

每一个商品都是有其周期性的,而季节潮流对于小店可能至关重要。这里就设计到行为数据的统计(商品的浏览,曝光,点击,购买)。

如果熟知各种排行榜的热点,就清楚热度是需要衰减的,这可能用到一些算法:

牛顿冷却,贝叶斯平均,威尔逊区间。我也细讲不了算法层面的东西。

第三个,作为一个老板,你要熟悉店里的商品属性,懂搭配------------物品相关性

你要整理好商品详细目录。你要知道那一款上衣配那一款裙子比较合适。

涉及到相关性算法。怎么计算相关性,可以看皮尔逊系数,余弦等。

至于计算的维度,就跟商品相关了,比如化妆品,那么品牌的权重就需要调大。

第四个,作为一个老板,你要有一个老顾客电话本-------------------个性化

小店家是需要维护每一个顾客的联系方式,长时间不来,你要电话问下,对应下来就是定期邮件营销(EDM)。

如果你是大商家,那你只好分人群了,不然成本太大。

第五个,作为一个老板,你要招揽新顾客计划-----------------------社交化

虽然推荐本身就是个大的广告形式。但是你只在门口卖吆喝肯定是过时了,星巴克真功夫优衣库这种传统企业都开始微博微信营销了。

作为一个电商企业没有理由不用这种形势扩大自己的影响圈。

对应的就是基于SNS的推荐,当然隐私问题另论。

第六个,作为一个老板,你要知道店里的状况,为下步作参考------------数据闭环。

最重要的概率,没有之一,数据要形成闭环。

任何数据如果不形成闭环,是难于往下发展的。形成闭环后,整个系统才算完整搭建,当然如果到最后,这步能交给机器学习来实现,就完美了。

这里涉及到,ctr,转换率,成交金额。转换率是电商的重要指标,这些行为分析是提升未来销售的关键。

2.数据是第二位。

信息熵的定义是对不确定性的度量。强调的是不确定性,如果你知道明天要下雨,那么数据告诉你要下雨的信息熵就是0。

信息是有用的,但是数据不一定是有用的。从数据到信息的过程就是一个解码的过程,而业务逻辑就是数据的编码方式。

现在是大数据时代,每天弄个几T,几P数据存储下来,意义有多大(说的是数据挖掘,用来容灾备份的话另说),
如果告诉的都是我们已知的事情,那么就没有意义。

每一个公司最了解数据的肯定是其CFO,底层的财务会计等,但是谁敢说自己比老板清楚这个公司?

财务报表大家也能看,但是财务报表是不了解公司的终点,而是起点,是为了更深入了解公司的。

我们常说领导的视野会更高一点,反过来的意思就是我们懂数据,但是不懂业务,不懂商业,不懂管理。

业务,管理是皮,数据是毛,皮之不存,毛将焉附。

接下来说推荐系统的数据:

第一,用户数据

这个是基础数据,推荐系统存在之前就已经有了。
网站分析里做的就是人群细分,电商也是网站,这里涉及到的维度其实都是现实世界的映射:
年龄,性别,地域,兴趣,收入等等

第二,商品数据

这个也是基础数据,推荐系统存在之前就已经有了。没什么好讲的,就是品牌,价格等

第三,行为数据

这个是串联数据,将第一部分和第二部分关联起来。

包括用户和用户之间关联,商品和商品之间关联。

其实这三个数据以前的商业社会里都有,但是传统时代靠的是人脑和记事本,容量有限。

而一个好的商家是将这些数据带来的信息用到极致。

回想一下推荐系统经历的几个时代(可以看我前面的《集体智慧之概念介绍 》)

基于人口统计的推荐时代:这个时候靠的是历史,地理知识来关联人和人之间的信息,这里提信息的是统计数据,以及几千年来的历史地理知识。

基于商品内容的推荐时代:这个时候靠的就是产品专家们的人工分类, 这里提供信息熵的是专家们的专业知识。

协同过滤时代: 靠的是我们每次点击,带来的隐含信息。点击就是人和商品之间的关系, 点同一个商品就是人和人之间的关系。

一句话,我们主要要找的信息就是用户和用户之间的关系,商品和商品之间的关系,用户和商品之间的关系。

无论你用什么方式,用什么样的数据,你最后要得到的信息无非就这么几个维度。我们就是围绕这几点去竭尽所能地挖掘信息,并利用好。

3.算法是第三位

某位google的工程师曾说过:简单的算法+大量的数据  要远好于(>>)   复杂的算法+少量的数据。

看业界这几年,无论是豆瓣,亚马逊,淘宝,都在提精准推荐,还有热火的不能再热火的大数据。

似乎这个行业应该算是蓬勃发展了吧,可是细细看来,算法模型其实发展有限。大家挂在口边的还是协同过滤,社交化推荐。

这里说下自己的一个教训:

在实现系统的时候,因为有大量的计算和读取操作,为了节省一点cpu和内存,网络开销,就搞了个很复杂的算法,需要保存很多的中间数据结果。

实现文档写了几页,然后代码写了2000多行,实现后跑起来,性能上倒是没有什么问题的。

但还是碰到一个问题,没法跟踪数据。

做效果优化的时候,你是需要不停的从头到尾看数据的,看到底是哪个环节出了问题。结果太多的中间结果,而且是小的错误会被累计放大,

人反被系统整崩溃了。最后就改为简单实现方式(会很耗性能),但是做好数据的去噪后(不得不说这个环节相当重要),性能上也没有问题了。

业界这么多做算法的大牛,当然也是极其厉害的,不过越复杂就会要求特定的场景,这个对我等来说还是没有优化1,2来的迅速。

4.系统性能是第四位

系统同技术一样,只是解决问题的工具,不以解决问题的牛逼技术都是耍流氓。

举个例子,股票的程序化交易,相信很多做技术的人都能实现。但是如果没有一个有效的买卖规则,越实时越高效,可能亏损的越惨。

这里也是,如果你业务逻辑理不清,数据清洗不干净,样本抽取的有问题,系统是帮不了你的。当然做好了前面三样,性能就要考虑了。

第一点,无限大。

这意味着无限细分, 也扩大了将整个市场盘子(长尾嘛)。

现亚马逊CEO Jeff Bezos的梦想“如果我有100万个用户,我就为他们做100万个亚马逊网站”。

越细分,理论上效果会越好。只是开发人员不能不考虑成本。
其实你考虑一下就会发现一个事情, 你想个性化,但是用户却想跟随潮流,你无限细分的意义呢?

第二点,实时

做到了细分,你肯定要考虑实时性,理论上也是越实时,效果越好。

作用有多大,这个看业务和用户群。

阈值是多少,这个也看业务和用户群。

但是想信不会有人把商品属性这个也来实时实现的。也不会说我们要求推荐数据的更新级别达到毫秒级。

你可以有变态的系统,但是你不希望有变态的用户吧?

总言之,系统总是根据你的用户来定义的。btw,安全不属于性能问题,推荐系统防恶意干扰不在性能讨论范围内。

时间: 2024-10-11 03:15:02

推荐系统实践小结 转的相关文章

题记 《推荐系统实践》读书笔记

<推荐系统实践>是一本入门级书籍,全书不到200页,通熟易懂,非常适合初学者.记不起上次阅读该书是什么时候,可以确定的是很定不超过三个月,今天回想梳理全书结构,甚是模糊,而是打算重读一遍.并在这里留下些许痕迹,以帮助日后回忆之用.对本笔记内容感兴趣的读者还请购买正版书籍,尊重作者权益! 作者介绍如下: 项亮,毕业于中国科学技术大学和中国科学院自动化所,研究方向为机器学习和推荐系统,现任职于北京Hulu软件技术开发有限公司,从事视频推荐的研究和开发.2009年参加Netflix Prize推荐系

推荐系统实践整体化总结

这一阵子在找实习,总的情况来看,一点都不理想,做了总结,主要是由于我的理论不够扎实,实践又不多导致的,其实这两者是有一定的联系的,因为实践的不多,所以理论上的提升就非常的有限.最近比较喜欢推荐系统相关的内容,因此就找了项亮的<推荐系统实践>来看,心想现在终于可以理论和实践相结合了. 刚开始读这本书,就觉得写的非常的简单易懂,因此我是一口气读完整本书的,好久没有一次性读完200页的书了,在这期间当然我也敲了一些代码,因为我的python功底确实没有,所以看着伪代码就总是怀疑它的正确性,只有自己敲

项亮《推荐系统实践》读书笔记1-推荐系统评价指标

推荐系统评价指标 1.评分预测 预测准确度: 均方根误差(RMSE): 平均绝对误差(MAE): 关于这两个指标的优缺点,Netflix认为RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因为对系统的评测更加苛刻.研究表明,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误差. 2.Top N推荐:给用户一个个性化的推荐列表,预测准确率一般通过准确率和召回率度量. 令 R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在

项亮《推荐系统实践》读书笔记2-推荐系统冷启动问题

推荐系统冷启动问题 如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题. 冷启动问题主要分为三类: (1) 用户冷启动:如何给新用户做个性化推荐的问题,新用户刚使用网站的时候,系统并没有他的行为数据: (2) 物品冷启动:解决如何将新的物品推荐给可能对它感兴趣的用户: (3) 系统冷启动:如何在新开发网站设计个性化推荐系统,此时网站上用户很少,用户行为也少,只有一些商品的信息. 冷启动的主要解决方案: (1) 提供非个性化推荐:如热门排行

推荐系统架构(摘自《推荐系统实践》)

摘要: 1.外围架构 2.推荐系统架构 内容: 1.外围架构: 网站的推荐系统是如何和其他其他系统结合的? 2.推荐系统架构图: 其中每一个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定的权重或者优先级合并,排序然后返回. 好处: 1.可以方便的插拔推荐引擎插件,控制不同引擎对推荐结果的影响. 2.每一种推荐引擎代表一种推荐策略,不同的用户可能喜欢不同的推荐策略,通过分析用户对不同推荐结果的反馈了解用户比较喜欢那些推荐引擎出来的结果,从而对不同用户给出不同的引擎组合

Docker入门实践小结

Docker是近来大热的技术,似乎没有用过Docker都要落伍了,于是我也在一个个人的项目中用上了Docker,也算有了一些实践经验,与大家分享交流一下. 首先是安装和配置本地的Docker环境,因为Docker是Linux容器引擎,所以宿主机必须是Linux,Windows和Mac系统使用Docker必须先安装Boot2Docker运行一个包含Docker依赖的最小化Linux虚拟机作为宿主机,当然也可以用虚拟机运行一个完整Linux桌面系统然后再在里面安装Docker,个人更推荐后面一种方法

推荐系统实践第四章: 利用用户标签

基本上可以通过3种方式联系用户兴趣和物品: 用户喜欢过的物品(item-cf) 用户的好友或者有相似兴趣的好友喜欢过的物品(user-cf) 用户具有哪些feature, 哪些物品保护 之前用了user-cf,item-cf, 现在考虑使用标签进行推荐. 标签是一种无层次化结构的.用来描述信息的关键词. 给物品打标签: 专家.作者 用户 标签系统中存在的问题: 如何基于标签推荐 如何给用户推荐标签 基于标签的推荐系统示例: 利用Delicious数据集:(待链接)      格式:userID 

redis在学生抢房应用中的实践小结

背景简介 最近一个月,我们做了一个学生抢房的项目.考虑到抢房有一定的并发量(其实并没有那么大,被批次给隔离开来了),我们在抢房的项目中采用了全量redis的做法,本文主要是关于这个项目中涉及到redis使用的一个总结. 为了行文的方便,下面简单介绍一下抢房项目.其实这个抢房应用的使用对象主要是给学校的硕士,博士使用(他们在选择宿舍的方面比本科生拥有更多的自由,本科生的宿舍目前还是走的分配流程).抢房是将手动选择宿舍的过程自动化,来让系统代替你选房.而让系统帮你选的方法是告诉系统你的意愿,因此抢房

推荐系统实践

推荐系统测评  实验方法 离线实验:准备训练数据测试数据并评估: 用户调查:问卷方式.和用户满意度调查 在线实验:AB测试:AB测试是一种很常用的在线评测算法的实验方法.它通过一定的规则将用户随机分成几组, 并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算 法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能. 测评指标: 用户满意度 预测准确度:预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力.这个指标是最重要的推荐系统离线评测指标 评分