# 1. RecSys-Notes
记录推荐系统相关的优化经验、学习笔记。
- [1. RecSys-Notes](#1-recsys-notes)
- [2. 推荐系统适用场景](#2-推荐系统适用场景)
- [3. 推荐系统从0到1](#3-推荐系统从0到1)
- [3.1. 冷启动](#31-冷启动)
- [3.1.1. 系统冷启动](#311-系统冷启动)
- [3.1.2. 新用户冷启动](#312-新用户冷启动)
- [3.1.3. 新内容冷启动](#313-新内容冷启动)
- [3.2. 搭建推荐系统](#32-搭建推荐系统)
- [3.2.1. 数据采集](#321-数据采集)
- [3.2.2. 数据处理](#322-数据处理)
- [3.2.3. 推荐算法](#323-推荐算法)
- [3.2.4. 评估体系](#324-评估体系)
- [4. 推荐系统优化](#4-推荐系统优化)
- [4.1. 召回优化](#41-召回优化)
- [4.1.1. 召回的评估](#411-召回的评估)
- [4.1.2. 召回算法](#412-召回算法)
- [4.1.3. 召回负样本处理](#413-召回负样本处理)
- [4.1.4. 推荐历史去重](#414-推荐历史去重)
- [4.2. 排序优化](#42-排序优化)
- [4.2.1. 排序的评估](#421-排序的评估)
- [4.2.2. 代理指标](#422-代理指标)
- [4.2.3. 特征工程](#423-特征工程)
- [4.2.4. 样本](#424-样本)
- [4.2.5. 模型](#425-模型)
- [4.2.6. 偏置处理](#426-偏置处理)
- [4.3. 策略优化](#43-策略优化)
- [4.3.1. 打造生态:消费者、生产者、平台三方利益兼顾](#431-打造生态消费者生产者平台三方利益兼顾)
- [4.3.2. 流量扶持:新内容、新生产者、新品类](#432-流量扶持新内容新生产者新品类)
- [4.3.3. 探索与利用](#433-探索与利用)
- [4.3.4. 如何缓解头部效应](#434-如何缓解头部效应)
- [4.3.5. 重排模型](#435-重排模型)
- [5. 推荐系统的未来](#5-推荐系统的未来)
- [5.1. 对长期收益建模](#51-对长期收益建模)
- [5.2. 对item组合建模](#52-对item组合建模)
- [5.3. 极致的时效性](#53-极致的时效性)
- [5.4. 更丰富的交互信息](#54-更丰富的交互信息)
- [5.5. 与其他模块的协同](#55-与其他模块的协同)
- [5.6. 自动化AutoML](#56-自动化automl)
- [6. 学习资源](#6-学习资源)
# 2. 推荐系统适用场景
信息过载+无明确意图
# 3. 推荐系统从0到1
在开始搭建推荐系统前,建议可以看看[Google的机器学习最佳实践(共43条)](https://developers.google.com/machine-learning/guides/rules-of-ml)[【汉】](https://www.jiqizhixin.com/articles/2018-05-22-12)。里面讲到进行机器学习的基本方法是:
1. 确保机器学习流程从头到尾都稳固可靠。
2. 从制定合理的目标开始。
3. 以简单的方式添加常识性特征。
4. 确保机器学习流程始终稳固可靠。
上述方法将在长时间内取得很好的效果。只要您仍然可以通过某种简单的技巧取得进展,就不应该偏离上述方法。增加复杂性会减缓未来版本的发布。
从0到1就是要解决冷启动问题,冷启动问题可以用产品的办法解决,也可以在推荐系统内解决。
## 3.1. 冷启动
### 3.1.1. 系统冷启动
### 3.1.2. 新用户冷启动
### 3.1.3. 新内容冷启动
## 3.2. 搭建推荐系统
一个完整的推荐系统包括:数据采集、数据处理、推荐算法、评估体系。下图把推荐系统的基本结构描述得非常清除了。
![](static/recsys_jihoo_kim.jpg)
来源:[jihoo-kim/awesome-RecSys](https://github.com/jihoo-kim/awesome-RecSys)
### 3.2.1. 数据采集
数据采集包括了:用户信息采集(人群属性、兴趣问卷),用户行为数据采集(埋点日志),推荐日志,内容打标。
### 3.2.2. 数据处理
数据处理包括:样本生成、特征工程、报表
### 3.2.3. 推荐算法
经典推荐架构:召回、排序、策略。从0到1的过程中需要特别关注冷启动问题:系统冷启动、用户冷启动、内容冷启动。
- 召回。冷启动阶段没有太多用户行为数据。可以采集用户信息、多利用item标签、捕捉实时信息。热门召回、人群热门召回、用户采集兴趣召回、用户实时兴趣召回。另外需要做召回去重。
- 排序。冷启动阶段最好是用单目标简单模型,把整个流程跑通。
- 策略。黑白名单、调权、频控、打散、保量
有一些开源的推荐系统框架(2022-07-01更新star数):
- [13.5k] [microsoft/recommenders](https://github.com/microsoft/recommenders)
- [6.2k] [shenweichen/DeepCTR](https://github.com/shenweichen/DeepCTR) 兼容tf1和tf2
- [2k] [shenweichen/DeepCTR-Torch(https://github.com/shenweichen/DeepCTR-Torch) pytorch版本
- [5.9k] [gorse-io/gorse](https://github.com/gorse-io/gorse) 用go实现的推荐系统
- [3.1k] [PaddlePaddle/PaddleRec](https://github.com/PaddlePaddle/PaddleRec) 百度开源,基于PaddlePaddle
- [1.3k] [tensorflow/recommenders](https://github.com/tensorflow/recommenders)
- [1k] [pytorch/torchrec](https://github.com/pytorch/torchrec)
- [0.6k] [alibaba/EasyRec](https://github.com/alibaba/EasyRec) 兼容TF1.12-1.15 / TF2.x / PAI-TF
### 3.2.4. 评估体系
评估体系包括:在线评估(ABtest、报表)、离线评估。
# 4. 推荐系统优化
## 4.1. 召回优化
### 4.1.1. 召回的评估
召回率、准确率、hit率、内容覆盖度、基尼指数
### 4.1.2. 召回算法
- 热门召回
- 基于人群属性
- 协同过滤
- [2013] [Amazon.com recommendations:Item-to-item collaborative filtering](https://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf) 亚马逊提出经典的item-based协同过滤算法
- 基于向量
- 无监督,类似word2vec
- [2017] [Item2Vec-Neural Item Embedding for Collaborative Filtering](https://arxiv.org/pdf/1603.04259.pdf) 其实就是word2vec
- [2018] [Real-time Personalization using Embeddings for Search Ranking at Airbnb](https://www.researchgate.net/publication/326503432_Real-time_Personalization_using_Embeddings_for_Search_Ranking_at_Airbnb)[【汉】](https://blog.csdn.net/da_kao_la/article/details/105798365) airbnb的房源来旭,基于word2vec,在样本的选择上有很多trick
- 无监督 Graph Embedding
- [2014] [DeepWalk: Online Learning of Social Representations](https://arxiv.org/pdf/1403.6652.pdf)][【汉】](https://zhuanlan.zhihu.com/p/45167021) 无权图+ random-walk + word2vec,学习网络结构,偏DFS
- [2015] [LINE: Large-scale Information Network Embedding](https://arxiv.org/pdf/1503.03578.pdf)[【汉】](https://zhuanlan.zhihu.com/p/56478167) 二阶优化,Negative Sampling,alias负采样,偏BFS
- [2016] [node2vec: Scalable Feature Learning for Networks](https://arxiv.org/pdf/1607.00653.pdf)[【汉】](https://zhuanlan.zhihu.com/p/56478167),兼顾DFS和BFS
- [2018] [Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba](https://arxiv.org/abs/1803.02349)[【汉】](http://felixzhao.cn/Articles/article/8) 引入side info,weight avg polling,
- 有监督
- [2013] [DSSM](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf)[【汉】](http://felixzhao.cn/Articles/article/4)
- 论文用的 sample softmax 4个负样本
- 也可以用[triplet loss](https://zhuanlan.zhihu.com/p/136948465) 高内聚,低耦合
- [2016] [DeepMatch:Deep Neural Networks for YouTube Recommendations](https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf)[【汉】](http://felixzhao.cn/Articles/article/15)
- 每个用户固定样本数量,避免高活用户带偏模型。加入样本年龄来消偏。ranking阶段用时长加权。
- serving的时候用ANN库,如Faiss、HNSW
- [2018] [TDM: Learning Tree-based Deep Model for Recommender Systems](https://arxiv.org/pdf/1801.02294.pdf)[【汉】](https://blog.csdn.net/XindiOntheWay/article/details/85220342) 利用品类信息初始化数,学到向量之后用k-means聚类
- [2
xiaoshun007~
- 粉丝: 3978
- 资源: 3116