superhj1987/ToDo

极客时间:《推荐系统三十六计》

superhj1987 opened this issue · 1 comments

time.geekbang.org 极客时间的技术专栏课程

推荐团队

  1. 数据挖掘/算法工程师: 清洗数据、训练模型、开发接口,评估指标。
  2. 软件开发工程师:推荐服务输出。数据库、API开发、在线业务。
  3. 运维工程师:反馈数据收集和管理,回收用户反馈数据,统一存储日志数据。
  4. 非技术协调角色

工程师学习

  • 有较强的工程能力,能快速交付高效率少 Bug 的算法实现,虽然项目中不一定要写非常大量的代码;
  • 有较强的理论基础,能看懂最新的论文,虽然不一定要原创出漂亮的数学模型;高等数学、概率统计、线性代数、信息论
  • 有很好的可视化思维,能将不直观的数据规律直观地呈现出来,向非工程师解释清楚问题所在,原理所在。

个性化推荐

deltaConnection/(deltaUser * deltaItem),此值越大说明用户与物品的连接呈自发趋势,需要上推荐系统。

推荐系统经典问题:评分预测、行为预测、【冷启动问题->大部分推荐、小部分探索】

思维模式:目标思维、不确定思维

数据驱动的AB测试平台

  • Google分层实验框架

架构

  • 离线层
  • 近线层
  • 在线服务层

基于内容的推荐-用户画像(User Profile)

认识用户:查户口、堆数据、黑盒子

文本结构化->内容画像:关键词、实体识别、分类、主题模型、嵌入

用户标签选择(特征选择):卡方检验、信息增益

【使用LDA主题模型,对用户兴趣做聚合:用户=文章,用户的行为序列=文章中的词】

【对于多个具有权重的用户标签,使用加权采样算法每次使用部分标签做召回:有限数据集,无限数据集(蓄水池抽样、加权蓄水池抽样)】

基于内容的推荐是成熟推荐系统的第一步,是一个包装成推荐系统的信息检索系统: 丰富的内容源!!!清洗内容!!!挖掘内容!!!匹配用户的兴趣和内容属性!!!

内容分析:

  • 结构化内容库:为了学习用户画像。
  • 内容分析模型:分类器模型、主题模型、实体识别模型、嵌入模型,用于将新内容结构化。

内容推荐:使用逻辑回归+GBDT训练一个二分类器,构建预估模型,预估用户行为的发生概率,按照概率排序。

  • 特征:包括用户的画像、内容的结构化内容、日志的上下文信息(时间、地理位置、设备等)
  • 用户行为:反馈标注信息,包括“有反馈”和“无反馈”。

【目前使用内容和用户余弦相似度来做排序】

协同过滤

物品协同和用户协同的用户物品矩阵是稀疏的,取两个物品的共同用户和两个用户的共同物品只需要少量计算即可**【物品协同过滤使用余弦相似度没有考虑置信问题也没有做物品中心化和用户中心化的改进,但Slope one算法只能解决评分矩阵的置信问题】**

相似度计算方式:

  • 欧式距离:用于衡量绝对差异。适用于分析用户能力模型之间的差异,如消费能力、贡献内容的能力等
  • 余弦相似度:与向量长度无关。衡量方向差异。适用于文本相似度、用户相似度以及物品相似度。->调整的余弦相似度,先计算向量每一个维度上的均值,然后各个向量减去均值之后再计算余弦相似度。【内容协同过滤,考虑使用调整的余弦相似度】
  • 皮尔逊相关系数:类似于余弦相似度,先对向量做了中心化(减去自己所有维度向量的均值)。
  • 杰卡德相似度:两个集合交集的数目除以其并集的数目。适用于隐形反馈数据等布尔值类型的数据。

矩阵分解

  • SVD奇异值分解:伪奇异值分解
  • ALS: 交替最小二乘矩阵分解 【Weighted-ALS,需要按照物品热门程度采样来挑选负样本。考虑使用FB开源的实时物品隐因子向量方案,Faiss。通过一个用户向量可以返回最相似的K个物品】

解决point-wise的pair-wise算法:BPR,贝叶斯个性排序模型。

模型融合

GBDT+FTRL: GBDT用来组合特征,FTRL来做CTR预估

FM因子分解机模型(矩阵分解)

WDL: wide and deep learning

EE&&冷启动

Bandit算法(不常用,同时处理的物品数量不能太多)

走一步算一步

选择物品->选择策略

  • 汤普森采样:一行代码实现,【基于内容分类Topic,使用汤普森采样排序TopN推荐内容】
  • UCB:
  • Epsilon:
  • LinUCB: 结合上下文

避免信息茧房

结合协同过滤的Bandit->COFIBA(用户所在的群体共同决策推荐结果)

随机的去掉一些用户特征

【模型融合之后加一层蓄水池抽样,或者在召回阶段加一层蓄水池采样,这样在不影响整个推荐流程和转化概率的前提下,降低计算复杂度和提升推荐多样性。】

【热榜解决冷启动问题和用户兴趣探索问题】

【用户画像对新内容有加权,解决内容冷启动问题】

科学排行榜: EE&&冷启动;降级、兜底策略

  • HackerNews考虑了时间因素的热门排行榜
  • 考虑三种投票
  • 考虑好评的平均程度(好评比例):威尔逊区间

深度学习

  • WDL
  • RNN

实时推荐

  • “给的及时”:服务的实时响应
  • “用的及时”:特征的实时更新
  • “改得及时”:模型的实时更新

Bandit算法天然适合实时性

【ItembasedCF->改造为实时,目前模型是周期性更新】

【热榜内容是周期性窗口更新】

其他

  • 推荐、搜索以及广告架构的统一性
  • 内容候选池的去重:内容源去重-simhash、不重复给用户推荐-bloomfilter
  • 数据采集
  • 推荐系统安全问题