您的位置:首页 > 其它

推荐系统工作总结-简介篇

2016-07-21 18:45 260 查看

背景

 最近工作又开始转向工程,放弃了推荐策略。一来是感觉自己没那么高大上,二来是做策略的两年,工作内容偏工程多一点,还是回归本行吧。担心机缘巧合,以后再”重操旧业“,故整理这些博客备忘,如果能对初步此行的同学有所帮助,那就再好不过了。我所从事的是新闻和视频业务的推荐工作,所以博客以新闻和视频推荐为主。做为RD,并不擅言辞,故文章生涩难懂处,望谅解。

推荐系统简介

概念 

 推荐业务一般分个性化推荐和相关推荐。其中个性化推荐以用户为主体,在用户意图不太明确的情况下,从大量信息中找到与用户兴趣相关的信息,也就是大家说的千人千面。而相关推荐以信息本身为主体,例如新闻的相关和视频的播后推荐,只与用户当前浏览的新闻或视频相关。推荐系统就是一个来解决这些业务场景的系统。

组成

 推荐系统一般分为工程架构和推荐策略(算法)两大块,工程架构偏重系统的功能和性能,主要体现在对外的接口规范,可用性及qps,推荐策略即推荐算法,主要与机器学习,数据挖掘相关,负责数据的筛选及排序。两者相辅相成,没有明确的界线。

核心部件

内容模型 即内容的profile, 例如新闻或视频的Profile。是整个推荐系统的基石。你可以想象一个完全乱码的新闻网站,对用户来说没有半毛钱的意义,即使你的算法策略再牛x。一个好的内容模型会省去很多后期工作。当然内容模型本身的构建也会包含算法策略在里面。

用户模型 即用户的profile, 个性化推荐的必要条件。只有清楚的了解我们的用户群体,我们才可以筛选出更符合用户口味的内容

算法策略族 众多的机器学习、数据挖掘算法和人工规则的总合,负责数据的筛选,合并及最终的排序。此部件会很零散的分布在整个推荐系统的个个角落。

推荐系统 这里的系统是指工程架构本身,它接收请求后分析用户,然后合并相关的推荐结果,做最终的排序后返回给client.

abtest系统 abtest可以算是一个推荐系统的功能,单独拿出来是因为他在推荐系统中的作用非凡。很多策略不仅需要线下的评估,还需要线上的小流量对比实例来确定最终的结果。

搜索系统

 说到推荐,必然会想到搜索,毕竟“搜索推荐不分家”嘛。当然有同学会说”推荐明明是用户需求不明确的“, 但是我们在做个性化或相关推荐的时候,一般会把用户的profile或信息的Profile做为query,去近似检索的查询内容,当然这是后话。

算法&平台&语言&技术

推荐系统工程本身一般用c/c++来实现,主要考虑到性能。

机器学习/数据挖掘一般依赖于hadoop、spark、storm、hive等大数据计算平台/框架. 算法的实现多以java,python会主, 因为java是原生的,脚本语言开发起来比较便捷。

数据的存储一般是hdfs\hbase\redis. raw和中间数据以hdfs为主,最终结果多以Key-value为主.

算法策略从基本的cf, 关联规则 ,k-means, minhash , lda, svm, lr, gbdt, ftrl , dnn 只要业务有前景,深度学习相关的都可以上。

接口数据序列化规范。 json.thrift.protobuf

后续的篇章

从基础的内容模型说起。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息