推荐系统工作总结-简介篇
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
后续的篇章
从基础的内容模型说起。相关文章推荐
- seq --待完善
- UIViewController Class Reference
- 黑马程序员:我有故事和烈酒,是否愿意跟我走
- HDU 1215 七夕节
- 以字节流读取文件时中文乱码解决
- Gym 100646 Problem C: LCR 模拟题
- 《DOS命令全集(中英文对照)》CHM版.CHM
- 华为2016年应届毕业生招聘公告
- 个人学习:main()函数
- 研发支撑系统ruby on rails环境
- Nginx 日志中记录cookie
- Xcode7 上传AppStore出现 ERROR ITMS-90474,ERROR ITMS-90475错误
- Learning Python 011 高级特性 2
- Learning Python 011 高级特性 2
- 学习资料
- Multiply Strings
- C++中结构体和类
- SQLAlchemy Model Object to json 对象转 JSON
- 我所理解的Cocos2d-x 实时更新游戏对象
- centos6.5下部署hadoop2.4+zookeeper