今日头条推荐系统:P1 概述
· 阅读需 10 分钟
我们优化的目标是什么?用户满意度
我们正在寻找以下最佳 function
以最大化 用户满意度
。
用户满意度 = function(内容, 用户资料, 上下文)
- 内容:文章、视频、用户生成内容短视频、问答等的特征。
- 用户资料:兴趣、职业、年龄、性别和行为模式等。
- 上下文:在工作空间、通勤、旅行等情况 下的移动用户。
如何评估满意度?
-
可测量的目标,例如:
- 点击率
- 会话持续时间
- 点赞
- 评论
- 转发
-
难以测量的目标:
- 广告和特殊类型内容(问答)的频率控制
- 低俗内容的频率控制
- 减少点击诱饵、低质量、恶心内容
- 强制/置顶/高度权重重要新闻
- 低权重来自低级账户的内容
如何优化这些目标?机器学习模型
找到上述最佳 function
是一个典型的监督机器学习问题。为了实施该系统,我们有以下算法:
- 协同过滤
- 逻辑回归
- 深度神经网络
- 因子分解机
- GBDT
一个世界级的推荐系统应该具备 灵活性,以进行 A/B 测试并结合上述多种算法。现在结合逻辑回归和深度神经网络变得流行。几年前,Facebook 使用了逻辑回归和 GBDT。
模型如何观察和测量现实?特征工程
-
内容 特征与用户兴趣之间的相关性。 显式相关性包括关键词、类别、来源、类型。隐式相关性可以从 FM 等模型的用户向量或项目向量中提取。
-
环境特征,如地理位置、时间。 可以用作偏见或在其基础上建立相关性。
-
热门趋势。 有全球热门趋势、类别热门趋势、主题热门趋势和关键词热门趋势。热门趋势在我们对用户信息较少时非常有助于解决冷启动问题。
-
协同特征,帮助避免推荐内容越来越集中。 协同过滤不是单独分析每个用户的历史,而是根据用户的点击、兴趣、主题、关键词或隐式向量找到用户的相似性。通过找到相似用户,可以扩展推荐内容的多样性。
实时大规模训练
- 用户喜欢看到根据我们从他们的行为中跟踪到的内容实时更新的新闻源。
- 使用 Apache Storm 实时训练数据(点击、展示、收藏、分享)。
- 收集数据到达阈值后更新推荐模型
- 在高性能计算集群中存储模型参数,如数十亿的原始特征和数十亿的向量特征。
它们的实现步骤如下:
- 在线服务实时记录特征。
- 将数据写入 Kafka
- 从 Kafka 向 Storm 导入数据
- 填充完整的用户资料并准备样本
- 根据最新样本更新模型参数
- 在线建模获得新知识