【机器学习】深度学习推荐系统(二十五): X 推荐算法特征系统详解:230+ 特征全解析

X 推荐算法特征系统详解:230+ 特征全解析

目录

  • [X 推荐算法特征系统详解:230+ 特征全解析](#X 推荐算法特征系统详解:230+ 特征全解析)
    • 前言
    • 一、特征系统概述
      • [1.1 什么是特征?](#1.1 什么是特征?)
      • [1.2 特征分类](#1.2 特征分类)
      • [1.3 特征统计](#1.3 特征统计)
    • [二、候选特征详解(160+ 个)](#二、候选特征详解(160+ 个))
      • [2.1 基础信息特征(8个)](#2.1 基础信息特征(8个))
      • [2.2 作者相关特征(15个)](#2.2 作者相关特征(15个))
      • [2.3 对话相关特征(6个)](#2.3 对话相关特征(6个))
      • [2.4 搜索与评分特征(4个)](#2.4 搜索与评分特征(4个))
      • [2.5 交互统计特征(10个)](#2.5 交互统计特征(10个))
      • [2.6 内容安全特征(Grok)(12个)](#2.6 内容安全特征(Grok)(12个))
      • [2.7 去重特征(2个)](#2.7 去重特征(2个))
      • [2.8 话题与上下文特征(4个)](#2.8 话题与上下文特征(4个))
      • [2.9 推文类型特征(15个)](#2.9 推文类型特征(15个))
      • [2.10 评分相关特征(6个)](#2.10 评分相关特征(6个))
      • [2.11 内容特征(15个)](#2.11 内容特征(15个))
      • [2.12 媒体特征(18个)](#2.12 媒体特征(18个))
      • [2.13 社交图谱特征(5个)](#2.13 社交图谱特征(5个))
      • [2.14 Tweetypie 相关特征(5个)](#2.14 Tweetypie 相关特征(5个))
      • [2.15 其他候选特征(10个)](#2.15 其他候选特征(10个))
      • [2.16 对话模块相关特征(7个)](#2.16 对话模块相关特征(7个))
      • [2.17 用户相关特征(2个)](#2.17 用户相关特征(2个))
      • [2.18 社交证明特征(3个)](#2.18 社交证明特征(3个))
    • [三、查询特征详解(60+ 个)](#三、查询特征详解(60+ 个))
      • [3.1 用户基础信息特征(12个)](#3.1 用户基础信息特征(12个))
      • [3.2 用户偏好与设置特征(5个)](#3.2 用户偏好与设置特征(5个))
      • [3.3 用户行为特征(8个)](#3.3 用户行为特征(8个))
      • [3.4 用户兴趣特征(2个)](#3.4 用户兴趣特征(2个))
      • [3.5 请求上下文特征(20个)](#3.5 请求上下文特征(20个))
      • [3.6 时间相关特征(4个)](#3.6 时间相关特征(4个))
      • [3.7 已服务内容特征(6个)](#3.7 已服务内容特征(6个))
      • [3.8 缓存与持久化特征(3个)](#3.8 缓存与持久化特征(3个))
      • [3.9 过滤与去重特征(3个)](#3.9 过滤与去重特征(3个))
      • [3.10 用户健康与信号特征(3个)](#3.10 用户健康与信号特征(3个))
      • [3.11 配置与模型特征(2个)](#3.11 配置与模型特征(2个))
      • [3.12 嵌入特征(2个)](#3.12 嵌入特征(2个))
      • [3.13 注册与来源特征(2个)](#3.13 注册与来源特征(2个))
      • [3.14 其他查询特征(3个)](#3.14 其他查询特征(3个))
    • 四、结果特征详解(10个)
      • [4.1 统计特征(5个)](#4.1 统计特征(5个))
      • [4.2 对话模块结果特征(4个)](#4.2 对话模块结果特征(4个))
    • 五、特征在推荐流程中的使用
      • [5.1 特征提取阶段](#5.1 特征提取阶段)
      • [5.2 模型评分阶段](#5.2 模型评分阶段)
      • [5.3 过滤阶段](#5.3 过滤阶段)
      • [5.4 排序阶段](#5.4 排序阶段)
    • 六、关键特征深度解析
      • [6.1 评分特征体系](#6.1 评分特征体系)
      • [6.2 用户行为特征](#6.2 用户行为特征)
      • [6.3 内容安全特征](#6.3 内容安全特征)
      • [6.4 社交图谱特征](#6.4 社交图谱特征)
    • 七、特征提取流程
      • [7.1 特征提取 Pipeline](#7.1 特征提取 Pipeline)
      • [7.2 特征提取器类型](#7.2 特征提取器类型)
      • [7.3 特征提取优化](#7.3 特征提取优化)
    • 八、特征与模型的关系
      • [8.1 DataRecord 兼容特征](#8.1 DataRecord 兼容特征)
      • [8.2 模型输入特征](#8.2 模型输入特征)
      • [8.3 模型输出特征](#8.3 模型输出特征)
    • 九、特征使用最佳实践
      • [9.1 特征命名规范](#9.1 特征命名规范)
      • [9.2 特征类型选择](#9.2 特征类型选择)
      • [9.3 特征提取优化](#9.3 特征提取优化)
      • [9.4 特征访问模式](#9.4 特征访问模式)
    • 十、总结
      • [10.1 特征系统特点](#10.1 特征系统特点)
      • [10.2 关键特征总结](#10.2 关键特征总结)
      • [10.3 特征数量统计](#10.3 特征数量统计)
      • [10.4 学习建议](#10.4 学习建议)
    • 附录:完整特征列表
      • [A. 候选特征完整列表(160个)](#A. 候选特征完整列表(160个))
        • [A.1 基础信息(8个)](#A.1 基础信息(8个))
        • [A.2 作者相关(15个)](#A.2 作者相关(15个))
        • [A.3 对话相关(6个)](#A.3 对话相关(6个))
        • [A.4 搜索与评分(4个)](#A.4 搜索与评分(4个))
        • [A.5 交互统计(10个)](#A.5 交互统计(10个))
        • [A.6 内容安全(Grok)(12个)](#A.6 内容安全(Grok)(12个))
        • [A.7 去重(2个)](#A.7 去重(2个))
        • [A.8 话题与上下文(4个)](#A.8 话题与上下文(4个))
        • [A.9 推文类型(15个)](#A.9 推文类型(15个))
        • [A.10 评分相关(6个)](#A.10 评分相关(6个))
        • [A.11 内容特征(15个)](#A.11 内容特征(15个))
        • [A.12 媒体特征(18个)](#A.12 媒体特征(18个))
        • [A.13 社交图谱(5个)](#A.13 社交图谱(5个))
        • [A.14 Tweetypie 相关(5个)](#A.14 Tweetypie 相关(5个))
        • [A.15 其他候选特征(10个)](#A.15 其他候选特征(10个))
        • [A.16 对话模块(7个)](#A.16 对话模块(7个))
        • [A.17 用户相关(2个)](#A.17 用户相关(2个))
        • [A.18 社交证明(3个)](#A.18 社交证明(3个))
      • [B. 查询特征完整列表(60个)](#B. 查询特征完整列表(60个))
        • [B.1 用户基础信息(12个)](#B.1 用户基础信息(12个))
        • [B.2 用户偏好与设置(5个)](#B.2 用户偏好与设置(5个))
        • [B.3 用户行为(8个)](#B.3 用户行为(8个))
        • [B.4 用户兴趣(2个)](#B.4 用户兴趣(2个))
        • [B.5 请求上下文(18个)](#B.5 请求上下文(18个))
        • [B.6 时间相关(4个)](#B.6 时间相关(4个))
        • [B.7 已服务内容(6个)](#B.7 已服务内容(6个))
        • [B.8 缓存与持久化(3个)](#B.8 缓存与持久化(3个))
        • [B.9 过滤与去重(3个)](#B.9 过滤与去重(3个))
        • [B.10 用户健康与信号(3个)](#B.10 用户健康与信号(3个))
        • [B.11 配置与模型(2个)](#B.11 配置与模型(2个))
        • [B.12 嵌入特征(2个)](#B.12 嵌入特征(2个))
        • [B.13 注册与来源(2个)](#B.13 注册与来源(2个))
        • [B.14 其他查询特征(2个)](#B.14 其他查询特征(2个))
      • [C. 结果特征完整列表(10个)](#C. 结果特征完整列表(10个))
        • [C.1 统计特征(5个)](#C.1 统计特征(5个))
        • [C.2 对话模块结果(4个)](#C.2 对话模块结果(4个))
    • 十一、特征系统架构图
    • 十二、常见问题
      • [Q1: 为什么需要这么多特征?](#Q1: 为什么需要这么多特征?)
      • [Q2: 特征是如何提取的?](#Q2: 特征是如何提取的?)
      • [Q3: 特征和模型的关系是什么?](#Q3: 特征和模型的关系是什么?)
      • [Q4: 如何添加新特征?](#Q4: 如何添加新特征?)
    • 结语

前言

在 X(原 Twitter)的推荐系统中,特征(Features)是连接数据和模型的核心桥梁。HomeFeatures.scala 文件定义了 Home Mixer 服务中使用的所有特征,这些特征在推荐 Pipeline 的各个阶段发挥着关键作用。本文将详细介绍这 230+ 个特征,帮助读者深入理解推荐系统的数据流。


一、特征系统概述

1.1 什么是特征?

在推荐系统中,特征是描述候选内容(推文)和用户上下文的属性。例如:

  • 推文的点赞数
  • 作者是否认证
  • 用户的历史行为
  • 请求的时间戳

这些特征被用于:

  • 模型评分:输入到机器学习模型进行预测
  • 内容过滤:判断内容是否符合展示条件
  • 业务规则:应用各种启发式规则

1.2 特征分类

Home Mixer 的特征系统将特征分为三大类:

  1. 候选特征(Candidate Features):绑定到推文候选,描述推文的各种属性
  2. 查询特征(Query Features):绑定到查询请求,描述用户和请求上下文
  3. 结果特征(Result Features):用于结果统计和呈现

1.3 特征统计

  • 总特征数:约 230 个
  • 候选特征:约 160 个
  • 查询特征:约 60 个
  • 结果特征:约 10 个

二、候选特征详解(160+ 个)

候选特征绑定到 TweetCandidate,用于描述推文候选的各种属性。

2.1 基础信息特征(8个)

这些特征描述推文的基本信息:

特征名称 类型 说明
AncestorsFeature Seq[TweetAncestor] 祖先推文列表(用于对话模块)
AudioSpaceMetaDataFeature Option[AudioSpaceMetaData] 音频空间元数据
ListIdFeature Option[Long] 列表 ID(如果来自列表)
ListNameFeature Option[String] 列表名称
ValidLikedByUserIdsFeature Seq[Long] 有效点赞用户 ID 列表
BookmarkedTweetTimestamp Option[Long] 收藏推文的时间戳
ArticleIdFeature Option[Long] 文章 ID(如果是文章推文)
ArticlePreviewTextFeature Option[String] 文章预览文本

2.2 作者相关特征(15个)

作者特征描述推文作者的各种属性,是推荐系统的重要信号:

特征名称 类型 说明
AuthorIdFeature Option[Long] 作者 ID(DataRecord 兼容)
AuthorAccountAge Option[Duration] 作者账户年龄
AuthorIsBlueVerifiedFeature Boolean 是否蓝标认证
AuthorIsGoldVerifiedFeature Boolean 是否金标认证
AuthorIsGrayVerifiedFeature Boolean 是否灰标认证
AuthorIsLegacyVerifiedFeature Boolean 是否传统认证
AuthorIsCreatorFeature Boolean 是否创作者
AuthorIsProtectedFeature Boolean 是否受保护账户
AuthorFollowersFeature Option[Long] 作者粉丝数
ViralContentCreatorFeature Boolean 是否病毒内容创作者
GrokContentCreatorFeature Boolean 是否 Grok 内容创作者
GorkContentCreatorFeature Boolean 是否 Gork 内容创作者
AuthoredByContextualUserFeature Boolean 是否由上下文用户创作
AuthorSafetyLabels Option[Seq[String]] 作者安全标签
SourceUserIdFeature Option[Long] 源用户 ID(转发时使用)

使用场景

  • 判断作者的可信度
  • 应用作者多样性规则
  • 过滤低质量作者的内容

2.3 对话相关特征(6个)

对话特征用于处理回复和对话模块:

特征名称 类型 说明
ConversationFeature Option[ConversationFeatures] 对话特征对象
ConversationModuleFocalTweetIdFeature Option[Long] 对话模块焦点推文 ID
ConversationModuleIdFeature Option[Long] 对话模块 ID(根推文 ID)
DirectedAtUserIdFeature Option[Long] 定向用户 ID(@提及)
ExclusiveConversationAuthorIdFeature Option[Long] 独占对话作者 ID
InReplyToTweetIdFeature Option[Long] 回复的推文 ID
InReplyToUserIdFeature Option[Long] 回复的用户 ID

使用场景

  • 构建对话模块
  • 判断推文是否为回复
  • 处理对话上下文

2.4 搜索与评分特征(4个)

这些特征来自 Earlybird 搜索索引:

特征名称 类型 说明
EarlybirdFeature Option[ThriftTweetFeatures] Earlybird 搜索特征
EarlybirdScoreFeature Option[Double] Earlybird 搜索分数
EarlybirdSearchResultFeature Option[ThriftSearchResult] Earlybird 搜索结果
EntityTokenFeature Option[String] 实体令牌

使用场景

  • 从搜索索引获取候选
  • 使用 Earlybird 分数进行初步排序

2.5 交互统计特征(10个)

交互特征统计推文的各种交互数据:

特征名称 类型 说明
FavoritedByCountFeature Double 点赞数(DataRecord 兼容)
FavoritedByUserIdsFeature Seq[Long] 点赞用户 ID 列表
RetweetedByCountFeature Double 转发数(DataRecord 兼容)
RetweetedByEngagerIdsFeature Seq[Long] 转发用户 ID 列表
RepliedByCountFeature Double 回复数(DataRecord 兼容)
RepliedByEngagerIdsFeature Seq[Long] 回复用户 ID 列表
FollowedByUserIdsFeature Seq[Long] 关注用户 ID 列表
NonSelfFavoritedByUserIdsFeature Seq[Long] 非自己点赞用户 ID 列表
FeedbackHistoryFeature Seq[FeedbackEntry] 反馈历史
ViewCountFeature Option[Long] 观看次数

使用场景

  • 作为模型输入特征
  • 计算内容热度
  • 社交证明(显示谁点赞/转发了推文)

2.6 内容安全特征(Grok)(12个)

Grok 是 X 的内容理解系统,提供内容安全检测:

特征名称 类型 说明
GrokTranslatedPostIsCachedFeature Boolean Grok 翻译推文是否缓存
GrokVideoMetadataFeature Option[AnnotatedVideoDeserialized] Grok 视频元数据
GrokCategoryDataRecordFeature Map[String, Double] Grok 类别分数(DataRecord 兼容)
GrokTagsFeature Set[String] Grok 标签(DataRecord 兼容)
GrokIsGoreFeature Option[Boolean] 是否血腥内容(DataRecord 兼容)
GrokIsNsfwFeature Option[Boolean] 是否 NSFW(DataRecord 兼容)
GrokIsSoftNsfwFeature Option[Boolean] 是否软 NSFW(DataRecord 兼容)
GrokIsSpamFeature Option[Boolean] 是否垃圾内容(DataRecord 兼容)
GrokIsViolentFeature Option[Boolean] 是否暴力内容(DataRecord 兼容)
GrokIsLowQualityFeature Option[Boolean] 是否低质量(DataRecord 兼容)
GrokIsOcrFeature Option[Boolean] 是否 OCR(DataRecord 兼容)
GrokSunnyScoreFeature Option[Double] Grok 阳光分数(DataRecord 兼容)
GrokPoliticalInclinationFeature Option[PoliticalInclination] Grok 政治倾向(仅用于指标)
GrokSlopScoreFeature Option[Long] Grok Slop 分数
GrokAnnotationsFeature Option[GrokAnnotations] Grok 注释
GrokTopCategoryFeature Option[Long] Grok 顶级类别

使用场景

  • 内容安全过滤
  • 用户偏好设置(NSFW 过滤)
  • 内容质量评估

2.7 去重特征(2个)

用于内容去重:

特征名称 类型 说明
DedupClusterIdFeature Option[Long] 去重聚类 ID
DedupClusterId88Feature Option[Long] 去重聚类 ID 88

使用场景

  • 避免展示相似内容
  • 基于聚类的内容去重

2.8 话题与上下文特征(4个)

描述推文的话题和上下文信息:

特征名称 类型 说明
TopicIdSocialContextFeature Option[Long] 话题社交上下文 ID
TopicContextFunctionalityTypeFeature Option[TopicContextFunctionalityType] 话题上下文功能类型
BasketballContextFeature Option[BasketballContext] 篮球上下文
GenericPostContextFeature Option[GenericContext] 通用推文上下文

2.9 推文类型特征(15个)

判断推文的类型和属性:

特征名称 类型 说明
FromInNetworkSourceFeature Boolean 是否来自内部网络源
FullScoringSucceededFeature Boolean 完整评分是否成功
HasDisplayedTextFeature Boolean 是否有显示文本
IsArticleFeature Boolean 是否是文章
IsAncestorCandidateFeature Boolean 是否是祖先候选
IsBoostedCandidateFeature Boolean 是否是推广候选
IsExtendedReplyFeature Boolean 是否是扩展回复(DataRecord 兼容)
IsInReplyToReplyOrDirectedFeature Boolean 是否回复回复或定向
IsInReplyToRetweetFeature Boolean 是否回复转发
IsRandomTweetFeature Boolean 是否随机推文(DataRecord 兼容)
IsReadFromCacheFeature Boolean 是否从缓存读取
IsRetweetFeature Boolean 是否是转发
IsRetweetedReplyFeature Boolean 是否是转发的回复
IsSupportAccountReplyFeature Boolean 是否是支持账户回复
IsColdStartPostFeature Boolean 是否是冷启动推文

2.10 评分相关特征(6个)

这些是推荐系统的核心评分特征:

特征名称 类型 说明
PredictionRequestIdFeature Option[Long] 预测请求 ID(用于追踪)
PhoenixScoreFeature Option[Double] Phoenix 模型分数
ScoreFeature Option[Double] 最终排序分数(最重要)
WeightedModelScoreFeature Option[Double] 加权模型分数(重排序使用)
TweetMixerScoreFeature Option[Double] Tweet Mixer 分数(DataRecord 兼容)
LastScoredTimestampMsFeature Option[Long] 最后评分时间戳

使用场景

  • ScoreFeature:最终排序的依据
  • WeightedModelScoreFeature:重排序阶段的分数
  • PhoenixScoreFeature:Phoenix 模型的预测分数

2.11 内容特征(15个)

描述推文的内容属性:

特征名称 类型 说明
SemanticCoreIdFeature Option[Long] 语义核心 ID
SimclustersTweetTopKClustersWithScoresFeature Map[String, Double] SimClusters 推文 TopK 聚类分数
SourceTweetIdFeature Option[Long] 源推文 ID(转发时)
OriginalTweetIdFeature Option[Long] 原始推文 ID(DataRecord 兼容)
TweetLanguageFeature Option[String] 推文语言
TweetTextFeature Option[String] 推文文本
TweetTextTokensFeature Option[Seq[Int]] 推文文本令牌
TweetUrlsFeature Seq[String] 推文 URL 列表
TweetLanguageFromTweetypieFeature Option[String] 来自 Tweetypie 的推文语言
QuotedTweetIdFeature Option[Long] 引用推文 ID
QuotedUserIdFeature Option[Long] 引用用户 ID
TweetTypeMetricsFeature Option[Seq[Byte]] 推文类型指标
SourceSignalFeature Option[SourceSignal] 源信号
DebugStringFeature Option[String] 调试字符串
EntityTokenFeature Option[String] 实体令牌

2.12 媒体特征(18个)

描述推文的媒体内容:

特征名称 类型 说明
TweetMediaIdsFeature Seq[Long] 推文媒体 ID 列表
TweetMediaClusterIdsFeature Map[Long, Long] 推文媒体聚类 ID
TweetMediaCompletionRateFeature Option[Double] 推文媒体完成率
ClipImageClusterIdsFeature Map[Long, Long] 剪辑图片聚类 ID
MultiModalEmbeddingsFeature Option[Seq[Double]] 多模态嵌入
FirstMediaIdFeature Option[Long] 第一个媒体 ID(DataRecord 兼容)
NumImagesFeature Option[Int] 图片数量
HasImageFeature Boolean 是否有图片
HasVideoFeature Boolean 是否有视频
HasMultipleMedia Boolean 是否有多个媒体
VideoDurationMsFeature Option[Int] 视频时长(毫秒)
VideoAspectRatioFeature Option[Float] 视频宽高比
VideoDisplayTypeFeature Option[ModuleDisplayType] 视频显示类型
VideoHeightFeature Option[Short] 视频高度
VideoWidthFeature Option[Short] 视频宽度
MediaIdFeature Option[Long] 媒体 ID
MediaCategoryFeature Option[MediaCategory] 媒体类别
MediaUnderstandingAnnotationIdsFeature Seq[Long] 媒体理解注释 ID

使用场景

  • 视频内容推荐
  • 媒体质量评估
  • 媒体去重

2.13 社交图谱特征(5个)

描述推文在社交图谱中的关系:

特征名称 类型 说明
MentionUserIdFeature Seq[Long] 提及用户 ID 列表
MentionScreenNameFeature Seq[String] 提及用户名列表
InNetworkFeature Boolean 是否在内部网络(带默认值 true)
SGSValidLikedByUserIdsFeature Seq[Long] SGS 有效点赞用户 ID
SGSValidFollowedByUserIdsFeature Seq[Long] SGS 有效关注用户 ID

使用场景

  • 判断内容来源(内部网络 vs 外部网络)
  • 社交证明(显示谁点赞/关注了)

2.14 Tweetypie 相关特征(5个)

来自 Tweetypie 服务的特征:

特征名称 类型 说明
IsHydratedFeature Boolean 是否已水合(数据是否完整)
OonNsfwFeature Boolean 是否 OON NSFW
QuotedTweetDroppedFeature Boolean 引用推文是否被丢弃
AuthorEnabledPreviewsFeature Boolean 作者是否启用预览
IsTweetPreviewFeature Boolean 是否是推文预览

2.15 其他候选特征(10个)

特征名称 类型 说明
SlopAuthorFeature Boolean Slop 作者标识
SlopAuthorScoreFeature Option[Double] Slop 作者分数
CachedCandidatePipelineIdentifierFeature Option[String] 缓存的候选 Pipeline 标识符
PositionFeature Option[Int] 位置(在候选列表中的位置)
ServedTypeFeature ServedType 服务类型
TSPMetricTagFeature Set[MetricTag] TSP 指标标签
SemanticAnnotationIdsFeature Seq[Long] 语义注释 ID
CurrentPinnedTweetFeature Option[Long] 当前置顶推文
RequestJoinIdFeature Option[Long] 请求加入 ID
AdTagUrlFeature Option[String] 广告标签 URL

2.16 对话模块相关特征(7个)

用于对话模块的呈现:

特征名称 类型 说明
ServedInConversationModuleFeature Boolean 是否在对话模块中服务
ConversationModule2DisplayedTweetsFeature Boolean 对话模块显示推文数
ConversationModuleHasGapFeature Boolean 对话模块是否有间隙
FocalTweetAuthorIdFeature Option[Long] 焦点推文作者 ID
FocalTweetInNetworkFeature Option[Boolean] 焦点推文是否在内部网络
FocalTweetRealNamesFeature Option[Map[Long, String]] 焦点推文真实姓名
FocalTweetScreenNamesFeature Option[Map[Long, String]] 焦点推文用户名

2.17 用户相关特征(2个)

特征名称 类型 说明
ViewerIdFeature Long 查看者 ID(DataRecord 兼容)
IsColdStartPostFeature Boolean 是否是冷启动推文

2.18 社交证明特征(3个)

用于显示社交证明信息:

特征名称 类型 说明
ScreenNamesFeature Map[Long, String] 用户名映射
RealNamesFeature Map[Long, String] 真实姓名映射
TweetAgeFeature Option[Long] 推文年龄

三、查询特征详解(60+ 个)

查询特征绑定到 PipelineQuery,描述用户和请求的上下文信息。

3.1 用户基础信息特征(12个)

特征名称 类型 说明
AccountAgeFeature Option[Time] 账户年龄
UserFollowingCountFeature Option[Int] 用户关注数
UserFollowersCountFeature Option[Int] 用户粉丝数
UserScreenNameFeature Option[String] 用户屏幕名称
UserStateFeature Option[UserState] 用户状态
UserTypeFeature Option[UserType] 用户类型
UuaUserGenderFeature Option[String] UUA 用户性别(DataRecord 兼容)
UuaUserStateFeature Option[Long] UUA 用户状态(DataRecord 兼容)
UuaUserAgeBucketFeature Option[String] UUA 用户年龄分组(DataRecord 兼容)
ViewerSafetyLabels Option[Seq[String]] 查看者安全标签
ViewerIsRateLimited Boolean 查看者是否被限流
ViewerHasJobRecommendationsEnabled Boolean 查看者是否启用工作推荐

3.2 用户偏好与设置特征(5个)

特征名称 类型 说明
ViewerHasPremiumTier Boolean 查看者是否有高级会员
ViewerHasRecruitingOrganizationRecommendationsEnabled Boolean 查看者是否启用招聘组织推荐
ViewerAllowsAdsPersonalizationFeature Option[Boolean] 查看者是否允许广告个性化
ViewerAllowsForYouRecommendationsFeature Option[Boolean] 查看者是否允许"为你推荐"
ViewerAllowsDataSharingFeature Option[Boolean] 查看者是否允许数据共享

3.3 用户行为特征(8个)

这些是推荐系统的核心用户信号:

特征名称 类型 说明
UserActionsFeature Option[UserActionSequence] 用户行为序列(最重要)
UserActionsByteArrayFeature Option[Array[Byte]] 用户行为字节数组
UserActionsSizeFeature Option[Int] 用户行为大小
UserActionsContainsExplicitSignalsFeature Boolean 用户行为是否包含显式信号
UserRecentEngagementTweetIdsFeature Seq[Long] 用户最近参与推文 ID
UserLastExplicitSignalTimeFeature Option[Time] 用户最后显式信号时间
UserEngagedLanguagesFeature Set[String] 用户参与语言(DataRecord 兼容)
UserUnderstandableLanguagesFeature Seq[String] 用户可理解语言

使用场景

  • UserActionsFeature:Phoenix 模型的主要输入
  • 个性化推荐
  • 语言匹配

3.4 用户兴趣特征(2个)

特征名称 类型 说明
UserFollowedTopicsCountFeature Option[Int] 用户关注话题数
FollowsSportsAccountFeature Boolean 是否关注体育账户

3.5 请求上下文特征(20个)

描述请求的上下文信息:

特征名称 类型 说明
ClientIdFeature Option[Long] 客户端 ID(DataRecord 兼容)
DeviceCountryFeature Option[String] 设备国家(DataRecord 兼容)
DeviceLanguageFeature Option[String] 设备语言(DataRecord 兼容)
GuestIdFeature Option[Long] 访客 ID(DataRecord 兼容)
TimestampFeature Long 时间戳(DataRecord 兼容)
TimestampGMTDowFeature Long GMT 星期几(DataRecord 兼容)
TimestampGMTHourFeature Long GMT 小时(DataRecord 兼容)
GetInitialFeature Boolean 是否获取初始(DataRecord 兼容)
GetMiddleFeature Boolean 是否获取中间(DataRecord 兼容)
GetNewerFeature Boolean 是否获取更新(DataRecord 兼容)
GetOlderFeature Boolean 是否获取更旧(DataRecord 兼容)
IsForegroundRequestFeature Boolean 是否前台请求
IsLaunchRequestFeature Boolean 是否启动请求
HasDarkRequestFeature Option[Boolean] 是否有暗色请求
PollingFeature Boolean 是否轮询
PullToRefreshFeature Boolean 是否下拉刷新
ServedIdFeature Option[Long] 服务 ID
TweetLanguageFromLanguageSignalFeature Option[String] 来自语言信号的推文语言

使用场景

  • 时间相关的推荐(工作日 vs 周末)
  • 地理位置相关的推荐
  • 请求类型判断

3.6 时间相关特征(4个)

特征名称 类型 说明
LastNonPollingTimeFeature Option[Time] 最后非轮询时间
LastNegativeFeedbackTimeFeature Option[Time] 最后负反馈时间
FollowingLastNonPollingTimeFeature Option[Time] 关注最后非轮询时间
NonPollingTimesFeature Seq[Long] 非轮询时间列表

3.7 已服务内容特征(6个)

用于去重和避免重复展示:

特征名称 类型 说明
ServedTweetIdsFeature Seq[Long] 已服务推文 ID 列表
ServedAuthorIdsFeature Map[Long, Seq[Long]] 已服务作者 ID 映射
ServedTweetPreviewIdsFeature Seq[Long] 已服务推文预览 ID
TimelineServiceTweetsFeature Seq[Long] 时间线服务推文
TLSOriginalTweetsWithAuthorFeature Seq[(Long, Option[Long])] TLS 原始推文与作者
TLSOriginalTweetsWithConfirmedAuthorFeature Seq[(Long, Long)] TLS 原始推文与确认作者

使用场景

  • 去重过滤
  • 避免重复展示相同内容

3.8 缓存与持久化特征(3个)

特征名称 类型 说明
CachedScoredTweetsFeature Seq[ScoredTweet] 缓存的评分推文
PersistenceEntriesFeature Seq[TimelineResponseV3] 持久化条目
HasRecentFeedbackSinceCacheTtlFeature Boolean 是否有缓存 TTL 后的最近反馈

3.9 过滤与去重特征(3个)

特征名称 类型 说明
DismissInfoFeature Map[SuggestType, Option[DismissInfo]] dismiss 信息(带默认值)
ImpressionBloomFilterFeature ImpressionBloomFilterSeq 印象布隆过滤器(带默认值)
ImpressedMediaIds Seq[Long] 已印象媒体 ID(带默认值)

3.10 用户健康与信号特征(3个)

特征名称 类型 说明
LowSignalUserFeature Boolean 是否低信号用户
NSFWConsumerScoreFeature Double NSFW 消费者分数
NSFWConsumerFollowerScoreFeature Double NSFW 消费者粉丝分数

使用场景

  • 低信号用户使用不同的推荐策略
  • NSFW 内容过滤

3.11 配置与模型特征(2个)

特征名称 类型 说明
NaviClientConfigFeature NaviClientConfig Navi 客户端配置
RealGraphInNetworkScoresFeature Map[UserId, Double] Real Graph 内部网络分数

3.12 嵌入特征(2个)

特征名称 类型 说明
ImmersiveClientEmbeddingsFeature Map[Long, Seq[Double]] 沉浸式客户端嵌入
TweetAuthorFollowersFeature Map[Long, Option[Long]] 推文作者粉丝映射

3.13 注册与来源特征(2个)

特征名称 类型 说明
SignupSourceFeature Option[SignupSource] 注册来源
SignupCountryFeature Option[String] 注册国家

3.14 其他查询特征(3个)

特征名称 类型 说明
WhoToFollowExcludedUserIdsFeature Seq[Long] 关注推荐排除用户 ID(带默认值)
CurrentDisplayedGrokTopicFeature Option[(Long, String)] 当前显示的 Grok 话题(带默认值)

四、结果特征详解(10个)

结果特征用于结果统计和呈现。

4.1 统计特征(5个)

特征名称 类型 说明
ServedSizeFeature Option[Int] 服务大小
UniqueAuthorCountFeature Option[Int] 唯一作者数
MaxSingleAuthorCountFeature Option[Int] 单个作者最大数量
UniqueCategoryCountFeature Option[Int] 唯一类别数
MaxSingleCategoryCountFeature Option[Int] 单个类别最大数量

使用场景

  • 监控多样性指标
  • 确保作者多样性
  • 确保内容类别多样性

4.2 对话模块结果特征(4个)

特征名称 类型 说明
ServedInConversationModuleFeature Boolean 是否在对话模块中服务
ConversationModule2DisplayedTweetsFeature Boolean 对话模块显示推文数
ConversationModuleHasGapFeature Boolean 对话模块是否有间隙

五、特征在推荐流程中的使用

5.1 特征提取阶段

FeatureHydrator 中,系统从各种数据源提取特征:

scala 复制代码
// 示例:提取作者特征
class AuthorFeatureHydrator extends CandidateFeatureHydrator {
  override val features: Set[Feature[_, _]] = Set(
    HomeFeatures.AuthorIdFeature,
    HomeFeatures.AuthorFollowersFeature,
    HomeFeatures.AuthorIsBlueVerifiedFeature
  )
  
  override def apply(
    query: PipelineQuery,
    candidates: Seq[CandidateWithFeatures[TweetCandidate]]
  ): Stitch[Seq[FeatureMap]] = {
    // 从 Gizmoduck 服务获取作者信息
    // 填充到 FeatureMap 中
  }
}

5.2 模型评分阶段

Scorer 中,特征被转换为 DataRecord 输入模型:

scala 复制代码
// 示例:使用特征进行评分
class NaviModelScorer extends Scorer {
  override def apply(
    query: PipelineQuery,
    candidates: Seq[CandidateWithFeatures[TweetCandidate]]
  ): Stitch[Seq[FeatureMap]] = {
    // 1. 提取特征
    val dataRecords = candidates.map { candidate =>
      // 将候选特征转换为 DataRecord
      candidateAdapter(candidate.features)
    }
    
    // 2. 调用模型服务
    modelClient.getPredictionsForBatch(dataRecords)
    
    // 3. 提取预测分数
    // 存储到 PredictedScoreFeatures 中
  }
}

5.3 过滤阶段

Filter 中,使用特征进行内容过滤:

scala 复制代码
// 示例:NSFW 过滤
class NsfwFilter extends Filter {
  override def apply(
    query: PipelineQuery,
    candidates: Seq[CandidateWithFeatures[TweetCandidate]]
  ): Stitch[Seq[CandidateWithFeatures[TweetCandidate]]] = {
    candidates.filter { candidate =>
      // 检查 NSFW 特征
      val isNsfw = candidate.features.getOrElse(
        HomeFeatures.GrokIsNsfwFeature, 
        false
      )
      
      // 检查用户设置
      val allowNsfw = query.features.getOrElse(
        HomeFeatures.ViewerAllowsNsfwFeature,
        false
      )
      
      !isNsfw || allowNsfw
    }
  }
}

5.4 排序阶段

在排序中,使用评分特征进行排序:

scala 复制代码
// 使用 ScoreFeature 进行排序
val sortedCandidates = candidates.sortBy { candidate =>
  -candidate.features.getOrElse(
    HomeFeatures.ScoreFeature, 
    None
  ).getOrElse(0.0)
}

六、关键特征深度解析

6.1 评分特征体系

推荐系统使用多层次的评分特征:

复制代码
EarlybirdScoreFeature (搜索索引分数)
    ↓
TweetMixerScoreFeature (Tweet Mixer 分数)
    ↓
PhoenixScoreFeature (Phoenix 模型分数)
    ↓
WeightedModelScoreFeature (加权模型分数)
    ↓
ScoreFeature (最终排序分数)

ScoreFeature 是最终用于排序的特征,由多个模型分数加权组合而成。

6.2 用户行为特征

UserActionsFeature 是推荐系统的核心输入之一:

  • 包含用户的历史行为序列
  • 用于 Phoenix 模型预测
  • 支持个性化推荐

6.3 内容安全特征

Grok 特征系统提供多层次的内容安全检测:

  • GrokIsNsfwFeature: 检测 NSFW 内容
  • GrokIsSpamFeature: 检测垃圾内容
  • GrokIsViolentFeature: 检测暴力内容
  • GrokIsLowQualityFeature: 检测低质量内容

这些特征用于:

  • 内容过滤
  • 用户偏好设置
  • 合规性检查

6.4 社交图谱特征

InNetworkFeature 是重要的社交图谱特征:

  • true: 推文来自用户关注的账户
  • false: 推文来自外部网络

系统使用这个特征来:

  • 平衡内部网络和外部网络内容
  • 应用不同的推荐策略

七、特征提取流程

7.1 特征提取 Pipeline

复制代码
用户请求
    ↓
【查询特征提取】
├─ 用户基础信息
├─ 用户行为序列
├─ 请求上下文
└─ 已服务内容
    ↓
候选生成
    ↓
【候选特征提取】
├─ 作者特征
├─ 内容特征
├─ 交互特征
├─ 媒体特征
└─ 安全特征
    ↓
模型评分
    ↓
【评分特征提取】
├─ 模型预测分数
└─ 加权组合分数
    ↓
排序与过滤

7.2 特征提取器类型

  1. QueryFeatureHydrator: 提取查询特征
  2. CandidateFeatureHydrator: 提取候选特征
  3. BulkCandidateFeatureHydrator: 批量提取候选特征
  4. DependentBulkCandidateFeatureHydrator: 依赖其他特征的批量提取

7.3 特征提取优化

  • 批量提取: 减少 RPC 调用
  • 缓存: 缓存常用特征
  • 异步提取: 并行提取独立特征
  • 条件提取: 根据配置决定是否提取

八、特征与模型的关系

8.1 DataRecord 兼容特征

约 40 个特征兼容 DataRecord 格式,可以直接用于模型:

  • AuthorIdFeature
  • FavoritedByCountFeature
  • GrokIsNsfwFeature
  • TimestampFeature
  • 等等

8.2 模型输入特征

模型使用约 6000 个特征,包括:

  • HomeFeatures 中提取的特征
  • 派生特征(由基础特征计算得出)
  • 聚合特征(实时或批量计算)

8.3 模型输出特征

模型预测结果存储在 PredictedScoreFeatures 中:

  • PredictedFavoriteScoreFeature
  • PredictedReplyScoreFeature
  • PredictedRetweetScoreFeature
  • 等等

九、特征使用最佳实践

9.1 特征命名规范

  • 使用描述性名称
  • 遵循命名约定(Feature 后缀)
  • 区分候选特征和查询特征

9.2 特征类型选择

  • Option 类型: 特征可能不存在
  • 带默认值 : 使用 FeatureWithDefaultOnFailure
  • DataRecord 兼容: 需要输入模型的特征

9.3 特征提取优化

  • 批量提取减少网络调用
  • 使用缓存避免重复提取
  • 异步提取提高性能

9.4 特征访问模式

scala 复制代码
// 推荐方式:使用 getOrElse 提供默认值
val authorId = candidate.features.getOrElse(
  HomeFeatures.AuthorIdFeature, 
  None
)

// 不推荐:直接访问可能抛出异常
val authorId = candidate.features.get(HomeFeatures.AuthorIdFeature)

十、总结

10.1 特征系统特点

  1. 类型安全: 所有特征都有明确的类型定义
  2. 分类清晰: 按候选/查询/结果分类
  3. 功能完整: 覆盖推荐系统的各个方面
  4. 可扩展: 易于添加新特征

10.2 关键特征总结

  • 评分特征: ScoreFeature, WeightedModelScoreFeature
  • 用户信号: UserActionsFeature, LowSignalUserFeature
  • 内容安全: GrokIsNsfwFeature, GrokIsSpamFeature
  • 社交图谱: InNetworkFeature, FavoritedByUserIdsFeature
  • 内容属性: HasVideoFeature, TweetTextFeature

10.3 特征数量统计

  • 总特征数: 约 230 个
  • 候选特征: 约 160 个
  • 查询特征: 约 60 个
  • 结果特征: 约 10 个

10.4 学习建议

  1. 理解特征分类: 区分候选特征和查询特征
  2. 掌握关键特征: 重点关注评分、用户信号、内容安全特征
  3. 了解特征提取: 理解特征如何从数据源提取
  4. 实践特征使用: 在代码中查看特征的实际使用

附录:完整特征列表

A. 候选特征完整列表(160个)

A.1 基础信息(8个)
  1. AncestorsFeature
  2. AudioSpaceMetaDataFeature
  3. ListIdFeature
  4. ListNameFeature
  5. ValidLikedByUserIdsFeature
  6. BookmarkedTweetTimestamp
  7. ArticleIdFeature
  8. ArticlePreviewTextFeature
A.2 作者相关(15个)
  1. AuthorIdFeature
  2. AuthorAccountAge
  3. AuthorIsBlueVerifiedFeature
  4. AuthorIsGoldVerifiedFeature
  5. AuthorIsGrayVerifiedFeature
  6. AuthorIsLegacyVerifiedFeature
  7. AuthorIsCreatorFeature
  8. AuthorIsProtectedFeature
  9. AuthorFollowersFeature
  10. ViralContentCreatorFeature
  11. GrokContentCreatorFeature
  12. GorkContentCreatorFeature
  13. AuthoredByContextualUserFeature
  14. AuthorSafetyLabels
  15. SourceUserIdFeature
A.3 对话相关(6个)
  1. ConversationFeature
  2. ConversationModuleFocalTweetIdFeature
  3. ConversationModuleIdFeature
  4. DirectedAtUserIdFeature
  5. ExclusiveConversationAuthorIdFeature
  6. InReplyToTweetIdFeature
  7. InReplyToUserIdFeature
A.4 搜索与评分(4个)
  1. EarlybirdFeature
  2. EarlybirdScoreFeature
  3. EarlybirdSearchResultFeature
  4. EntityTokenFeature
A.5 交互统计(10个)
  1. FavoritedByCountFeature
  2. FavoritedByUserIdsFeature
  3. RetweetedByCountFeature
  4. RetweetedByEngagerIdsFeature
  5. RepliedByCountFeature
  6. RepliedByEngagerIdsFeature
  7. FollowedByUserIdsFeature
  8. NonSelfFavoritedByUserIdsFeature
  9. FeedbackHistoryFeature
  10. ViewCountFeature
A.6 内容安全(Grok)(12个)
  1. GrokTranslatedPostIsCachedFeature
  2. GrokVideoMetadataFeature
  3. GrokCategoryDataRecordFeature
  4. GrokTagsFeature
  5. GrokIsGoreFeature
  6. GrokIsNsfwFeature
  7. GrokIsSoftNsfwFeature
  8. GrokIsSpamFeature
  9. GrokIsViolentFeature
  10. GrokIsLowQualityFeature
  11. GrokIsOcrFeature
  12. GrokSunnyScoreFeature
  13. GrokPoliticalInclinationFeature
  14. GrokSlopScoreFeature
  15. GrokAnnotationsFeature
  16. GrokTopCategoryFeature
A.7 去重(2个)
  1. DedupClusterIdFeature
  2. DedupClusterId88Feature
A.8 话题与上下文(4个)
  1. TopicIdSocialContextFeature
  2. TopicContextFunctionalityTypeFeature
  3. BasketballContextFeature
  4. GenericPostContextFeature
A.9 推文类型(15个)
  1. FromInNetworkSourceFeature
  2. FullScoringSucceededFeature
  3. HasDisplayedTextFeature
  4. IsArticleFeature
  5. IsAncestorCandidateFeature
  6. IsBoostedCandidateFeature
  7. IsExtendedReplyFeature
  8. IsInReplyToReplyOrDirectedFeature
  9. IsInReplyToRetweetFeature
  10. IsRandomTweetFeature
  11. IsReadFromCacheFeature
  12. IsRetweetFeature
  13. IsRetweetedReplyFeature
  14. IsSupportAccountReplyFeature
  15. IsColdStartPostFeature
A.10 评分相关(6个)
  1. PredictionRequestIdFeature
  2. PhoenixScoreFeature
  3. ScoreFeature ⭐
  4. WeightedModelScoreFeature ⭐
  5. TweetMixerScoreFeature
  6. LastScoredTimestampMsFeature
A.11 内容特征(15个)
  1. SemanticCoreIdFeature
  2. SimclustersTweetTopKClustersWithScoresFeature
  3. SourceTweetIdFeature
  4. OriginalTweetIdFeature
  5. TweetLanguageFeature
  6. TweetTextFeature
  7. TweetTextTokensFeature
  8. TweetUrlsFeature
  9. TweetLanguageFromTweetypieFeature
  10. QuotedTweetIdFeature
  11. QuotedUserIdFeature
  12. TweetTypeMetricsFeature
  13. SourceSignalFeature
  14. DebugStringFeature
  15. EntityTokenFeature
A.12 媒体特征(18个)
  1. TweetMediaIdsFeature
  2. TweetMediaClusterIdsFeature
  3. TweetMediaCompletionRateFeature
  4. ClipImageClusterIdsFeature
  5. MultiModalEmbeddingsFeature
  6. FirstMediaIdFeature
  7. NumImagesFeature
  8. HasImageFeature
  9. HasVideoFeature
  10. HasMultipleMedia
  11. VideoDurationMsFeature
  12. VideoAspectRatioFeature
  13. VideoDisplayTypeFeature
  14. VideoHeightFeature
  15. VideoWidthFeature
  16. MediaIdFeature
  17. MediaCategoryFeature
  18. MediaUnderstandingAnnotationIdsFeature
A.13 社交图谱(5个)
  1. MentionUserIdFeature
  2. MentionScreenNameFeature
  3. InNetworkFeature ⭐
  4. SGSValidLikedByUserIdsFeature
  5. SGSValidFollowedByUserIdsFeature
A.14 Tweetypie 相关(5个)
  1. IsHydratedFeature
  2. OonNsfwFeature
  3. QuotedTweetDroppedFeature
  4. AuthorEnabledPreviewsFeature
  5. IsTweetPreviewFeature
A.15 其他候选特征(10个)
  1. SlopAuthorFeature
  2. SlopAuthorScoreFeature
  3. CachedCandidatePipelineIdentifierFeature
  4. PositionFeature
  5. ServedTypeFeature
  6. TSPMetricTagFeature
  7. SemanticAnnotationIdsFeature
  8. CurrentPinnedTweetFeature
  9. RequestJoinIdFeature
  10. AdTagUrlFeature
A.16 对话模块(7个)
  1. ServedInConversationModuleFeature
  2. ConversationModule2DisplayedTweetsFeature
  3. ConversationModuleHasGapFeature
  4. FocalTweetAuthorIdFeature
  5. FocalTweetInNetworkFeature
  6. FocalTweetRealNamesFeature
  7. FocalTweetScreenNamesFeature
A.17 用户相关(2个)
  1. ViewerIdFeature
  2. IsColdStartPostFeature
A.18 社交证明(3个)
  1. ScreenNamesFeature
  2. RealNamesFeature
  3. TweetAgeFeature

B. 查询特征完整列表(60个)

B.1 用户基础信息(12个)
  1. AccountAgeFeature
  2. UserFollowingCountFeature
  3. UserFollowersCountFeature
  4. UserScreenNameFeature
  5. UserStateFeature
  6. UserTypeFeature
  7. UuaUserGenderFeature
  8. UuaUserStateFeature
  9. UuaUserAgeBucketFeature
  10. ViewerSafetyLabels
  11. ViewerIsRateLimited
  12. ViewerHasJobRecommendationsEnabled
B.2 用户偏好与设置(5个)
  1. ViewerHasPremiumTier
  2. ViewerHasRecruitingOrganizationRecommendationsEnabled
  3. ViewerAllowsAdsPersonalizationFeature
  4. ViewerAllowsForYouRecommendationsFeature
  5. ViewerAllowsDataSharingFeature
B.3 用户行为(8个)
  1. UserActionsFeature ⭐
  2. UserActionsByteArrayFeature
  3. UserActionsSizeFeature
  4. UserActionsContainsExplicitSignalsFeature
  5. UserRecentEngagementTweetIdsFeature
  6. UserLastExplicitSignalTimeFeature
  7. UserEngagedLanguagesFeature
  8. UserUnderstandableLanguagesFeature
B.4 用户兴趣(2个)
  1. UserFollowedTopicsCountFeature
  2. FollowsSportsAccountFeature
B.5 请求上下文(18个)
  1. ClientIdFeature
  2. DeviceCountryFeature
  3. DeviceLanguageFeature
  4. GuestIdFeature
  5. TimestampFeature
  6. TimestampGMTDowFeature
  7. TimestampGMTHourFeature
  8. GetInitialFeature
  9. GetMiddleFeature
  10. GetNewerFeature
  11. GetOlderFeature
  12. IsForegroundRequestFeature
  13. IsLaunchRequestFeature
  14. HasDarkRequestFeature
  15. PollingFeature
  16. PullToRefreshFeature
  17. ServedIdFeature
  18. TweetLanguageFromLanguageSignalFeature
B.6 时间相关(4个)
  1. LastNonPollingTimeFeature
  2. LastNegativeFeedbackTimeFeature
  3. FollowingLastNonPollingTimeFeature
  4. NonPollingTimesFeature
B.7 已服务内容(6个)
  1. ServedTweetIdsFeature ⭐
  2. ServedAuthorIdsFeature
  3. ServedTweetPreviewIdsFeature
  4. TimelineServiceTweetsFeature
  5. TLSOriginalTweetsWithAuthorFeature
  6. TLSOriginalTweetsWithConfirmedAuthorFeature
B.8 缓存与持久化(3个)
  1. CachedScoredTweetsFeature
  2. PersistenceEntriesFeature
  3. HasRecentFeedbackSinceCacheTtlFeature
B.9 过滤与去重(3个)
  1. DismissInfoFeature
  2. ImpressionBloomFilterFeature
  3. ImpressedMediaIds
B.10 用户健康与信号(3个)
  1. LowSignalUserFeature ⭐
  2. NSFWConsumerScoreFeature
  3. NSFWConsumerFollowerScoreFeature
B.11 配置与模型(2个)
  1. NaviClientConfigFeature
  2. RealGraphInNetworkScoresFeature
B.12 嵌入特征(2个)
  1. ImmersiveClientEmbeddingsFeature
  2. TweetAuthorFollowersFeature
B.13 注册与来源(2个)
  1. SignupSourceFeature
  2. SignupCountryFeature
B.14 其他查询特征(2个)
  1. WhoToFollowExcludedUserIdsFeature
  2. CurrentDisplayedGrokTopicFeature

C. 结果特征完整列表(10个)

C.1 统计特征(5个)
  1. ServedSizeFeature
  2. UniqueAuthorCountFeature ⭐
  3. MaxSingleAuthorCountFeature ⭐
  4. UniqueCategoryCountFeature
  5. MaxSingleCategoryCountFeature
C.2 对话模块结果(4个)
  1. ServedInConversationModuleFeature
  2. ConversationModule2DisplayedTweetsFeature
  3. ConversationModuleHasGapFeature

十一、特征系统架构图

复制代码
┌─────────────────────────────────────────────────────────┐
│                  特征定义层                              │
│              HomeFeatures.scala                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ 候选特征      │  │ 查询特征      │  │ 结果特征      │  │
│  │ ~160个       │  │ ~60个        │  │ ~10个        │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────────────────┐
│                  特征提取层                              │
│         FeatureHydrator (各种提取器)                     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ QueryFeature │  │ Candidate    │  │ Bulk        │  │
│  │ Hydrator     │  │ Feature      │  │ Feature     │  │
│  │              │  │ Hydrator     │  │ Hydrator    │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────────────────┐
│                  特征存储层                              │
│              FeatureMap                                 │
│  ┌──────────────────────────────────────────────────┐  │
│  │ Map[Feature[_, _], Any]                         │  │
│  │ - 类型安全的特征存储                              │  │
│  │ - 支持默认值                                     │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────────────────┐
│                  特征使用层                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ Scorer       │  │ Filter       │  │ Selector     │  │
│  │ (模型评分)    │  │ (内容过滤)    │  │ (候选选择)    │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘

十二、常见问题

Q1: 为什么需要这么多特征?

A: 推荐系统需要从多个维度理解内容和用户:

  • 内容维度: 文本、媒体、作者、交互等
  • 用户维度: 行为、偏好、上下文等
  • 关系维度: 社交图谱、相似性等

每个特征都提供了不同的信息,组合起来才能做出准确的推荐。

Q2: 特征是如何提取的?

A: 特征通过 FeatureHydrator 提取:

  1. 从外部服务获取数据(Tweetypie、Gizmoduck 等)
  2. 计算派生特征
  3. 填充到 FeatureMap

Q3: 特征和模型的关系是什么?

A:

  • 特征 → DataRecord → 模型输入
  • 模型输出 → PredictedScoreFeatures → 最终分数

Q4: 如何添加新特征?

A:

  1. HomeFeatures.scala 中定义新特征
  2. 创建对应的 FeatureHydrator
  3. 在 Pipeline 配置中添加 Hydrator

结语

X 推荐算法的特征系统是一个庞大而精密的工程,230+ 个特征覆盖了推荐系统的各个方面。理解这些特征的含义和使用方式,是深入理解推荐系统的关键。

参考文件:

  • home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala
  • home-mixer/server/src/main/scala/com/twitter/home_mixer/model/PredictedScoreFeature.scala
相关推荐
上海云盾-小余2 小时前
高防CDN+AI协同:零误封精准拦截CC攻击的7层策略拆解
网络·人工智能·tcp/ip·游戏
aigcapi2 小时前
矩阵系统哪家好?2026主流矩阵系统TOP5测评+全场景选型指南
大数据·人工智能·矩阵
LDG_AGI2 小时前
【机器学习】深度学习推荐系统(二十七): X 推荐算法rerank机制详解
深度学习·机器学习·推荐算法
浮鱼浮鱼2 小时前
基于T矩阵的多结构系统的特征模计算
算法·矩阵·天线设计·特征模理论·计算电磁学
victory04312 小时前
Minimind-MOE 模型参数量计算
人工智能
、我是男生。2 小时前
tensorflow、pytorch
人工智能·pytorch·tensorflow
子午2 小时前
【2026原创】鱼类识别系统~Python+深度学习+CNN卷积神经网络算法+模型训练+图像识别
图像处理·python·深度学习·cnn
清铎2 小时前
leetcode_day14_矩阵_《绝境求生》
算法
地理探险家2 小时前
【YOLOv8实战】15组衣物类深度学习数据集分享|附加载+标签管理代码
人工智能·python·深度学习·yolo·模型训练·电商视觉