微博和Twitter的个性化推荐算法,通过机器学习算法计算用户的行为和兴趣,为用户推荐与之相关的内容,从而使得用户能够更容易地发现自己感兴趣的内容,不断让我们去刷新各种博客或推文,最终甚至沉迷于社交媒体平台。而这种个性化推荐算法计算的最重要基础就是针对用户以及其喜欢的博客或推文个性化设计的各类特征组合。
上文讲到了Twitter推特开源机器学习算法学习——For You重排名器及TwHIN嵌入特征算法,其中讲到了For You重排名器中使用的特征组,本文就接着为大家详细介绍下Twitter中的Heavy Ranking模型中输入的主要特征组。具体包括聚合特征、非聚合特征与嵌入特征。
这里要注意的是,由于用户设置或其他限制,并非每个请求都具有可用的每个特征,并且基于不同的变量,“For You”的排名可能存在一些差异。
Twitter的聚合特征包括Twitter的大部分特征计数,并且通过在特定时间窗口内特定范围内维护特征值的滚动聚合来生成。我们计算长期(50天计数)和短期(“实时”-3天计数以下,通常为30分钟计数)的聚合。
聚合要素是由多个要素组成的组,这些要素从模板生成为笛卡尔十字,其格式为
Feature Group Name特征组名称 | Engagement Scope参与范围 | Feature To Aggregate聚合特征 | Aggregation Spec具体聚合 |
---|
"user_aggregate"
对唯一的user_id进行聚合, "user_author_aggregate"
对所有用户-作者对进行聚合。它还确定在使用特征时将其连接到哪些字段。在 "user_author_aggregate"
的情况下,特征被结合到与特定用户和特定作者相对应的数据。recap.engagement.is_favorited
,在这种情况下,我们只聚合那些也被点赞的推文。any_feature
,这意味着我们聚合推文计数。例如,user_aggregate_v2.pair.recap.engagement.is_favorited.any_feature.50.days.count
将是每个用户在过去50天内喜欢的记录数。对于每个特征组,我们为参与范围、要聚合的功能和聚合规范的每个可能组合生成一个特征。特别是,下表中的每一行与列之间的每个可能交叉生成一个特征。
示例:例如,一个这样的特征可以是user_aggregate_v2.pair.recap.engagement.is_favorited.engagement_features.in_network.replies.count.50.days.count
,其可以被解析成
Feature Group Name | Engagement Scope | Feature To Aggregate | Aggregation Spec |
---|---|---|---|
user_aggregate_v2.pair | recap.engagement.is_favorited | engagement_features.in_network.replies.count | 50.days.count |
这意味着这个特征聚合:
然后使该特征可用作特定用户的特征。
这些特征聚合在推文的作者(或原作者)上。有些特征持续时间较短(30分钟),有些则更长(50天)。这些特征跟踪作者的推文有多少被参与。
这些特征聚集在特定的推文作者和特定的主题上。我们只累积长(50天)计数。
这些特征聚合与用户交互的推文的其他参与者的用户交互的计数。
例如,可以如下解析 user_engager.recap.engagement.is_favorited.any_feature.50.days.count.sparse_top1
特征:
对于用户喜欢的所有推文,累积50天内的运行计数,其中累积与推文互动的每个其他用户的互动事件数量。参与被定义为喜欢或回复。我们现在有了一个参与度计数列表,这些用户参与了用户喜欢的推文,我们将最高计数作为特征值。
这些特征聚合了用户与来自我们内部预测的推断主题的推文之间的短期和长期参与(无论推文是否实际标记为该主题)。
这些特征聚合了用户与不同类型的媒体(照片、视频等)交互的频率
这些特征聚合了用户与提及其他用户的推文的交互计数。
设置查看推文的原始用户为 user1 ,设置user2, user3, …, user_n 为推文中提到的用户。此特征组聚合了 user1 与提及 user2, user3,…, user_n 的其他推文之间的交互。
这里 sparse_sum
表示我们对所有提到的用户的聚合值求和, sparse_top1
表示我们对提到的作者取聚合值的最大值, sparse_top2
表示我们对提到的作者取聚合值的第二高值,等等。
这些特征聚合了请求上下文中的参与,考虑时间的影响,可以是同一周的某一天(dow)或同一天的某一小时(hour)。
这些特征聚合了用户与来自特定主题的推文之间的长期特征值。
我们有许多独立的特征来捕获有关用户、推文、作者和推文上下文的信息。
这个特征组包含了关于用户和推文作者之间“两跳
”交互的特征。两跳
交互的示例是:如果用户1喜欢用户2的推文,并且用户2喜欢用户3的推文,则用户1和用户3之间的“favorite.favorited_by”
两跳
特征将存在正值。
特征组由以下特征的所有可能交叉组成。
此特征组包含有关用户和推文作者之间交互的功能。特征组由以下特征的所有可能交叉组成。
此特征组包含有关用户与其他各种用户之间交互的特征,包括:
请注意,上述所有用户都包含在交互集中,而不仅仅是推文作者。
特征组由以下特征的所有可能交叉组成。
该特征组包含无论是来自推文服务还是来自搜索服务(“Earlybird”)关于推文的特征,它还包含与用户设备类型相关的特征。
recap.earlybird.fav_count_v2
recap.earlybird.reply_count_v2
recap.earlybird.retweet_count_v2
recap.searchfeature.blender_score
recap.searchfeature.fav_count
recap.searchfeature.reply_count
recap.searchfeature.retweet_count
recap.searchfeature.text_score
recap.source.type
recap.tweetfeature.bidirectional_fav_count
recap.tweetfeature.bidirectional_reply_count
recap.tweetfeature.bidirectional_retweet_count
recap.tweetfeature.contains_media
recap.tweetfeature.conversational_count
recap.tweetfeature.embeds_impression_count
recap.tweetfeature.embeds_url_count
recap.tweetfeature.from_inactive_user
recap.tweetfeature.from_mutual_follow
recap.tweetfeature.from_verified_account
recap.tweetfeature.has_card
recap.tweetfeature.has_consumer_video
recap.tweetfeature.has_hashtag
recap.tweetfeature.has_image
recap.tweetfeature.has_link
recap.tweetfeature.has_mention
recap.tweetfeature.has_multiple_hashtag_or_trend
recap.tweetfeature.has_multiple_media
recap.tweetfeature.has_native_image
recap.tweetfeature.has_native_video
recap.tweetfeature.has_news
recap.tweetfeature.has_periscope
recap.tweetfeature.has_pro_video
recap.tweetfeature.has_trend
recap.tweetfeature.has_video
recap.tweetfeature.has_vine
recap.tweetfeature.has_visible_link
recap.tweetfeature.is_author_bot
recap.tweetfeature.is_author_new
recap.tweetfeature.is_author_profile_egg
recap.tweetfeature.is_author_spam
recap.tweetfeature.is_business_score
recap.tweetfeature.is_extended_reply
recap.tweetfeature.is_offensive
recap.tweetfeature.is_reply
recap.tweetfeature.is_retweet
recap.tweetfeature.is_sensitive
recap.tweetfeature.language
recap.tweetfeature.link_count
recap.tweetfeature.link_language
recap.tweetfeature.match_searcher_langs
recap.tweetfeature.match_searcher_main_lang
recap.tweetfeature.match_ui_lang
recap.tweetfeature.mention_searcher
recap.tweetfeature.num_hashtags
recap.tweetfeature.num_mentions
recap.tweetfeature.prev_user_tweet_enagagement
recap.tweetfeature.reply_other
recap.tweetfeature.reply_searcher
recap.tweetfeature.retweet_other
recap.tweetfeature.retweet_searcher
recap.tweetfeature.signature
recap.tweetfeature.tweet_count_from_user_in_snapshot
recap.tweetfeature.unidirectiona_fav_count
recap.tweetfeature.unidirectional_reply_count
recap.tweetfeature.unidirectional_retweet_count
recap.tweetfeature.user_rep
recap.tweetfeature.video_view_count
recap.user_agent.client_name
recap.user_agent.client_source
recap.user_agent.client_version
recap.user_agent.client_version_code
recap.user_agent.device
recap.user_agent.manufacturer
recap.user_agent.network_connection
recap.user_agent.sdk_version
recap.v2.tweetfeature.is_retweet_directed_at_user_in_first_degree
recap.v2.tweetfeature.is_retweet_of_reply
recap.v2.tweetfeature.is_retweeter_bot
recap.v2.tweetfeature.is_retweeter_new
recap.v2.tweetfeature.is_retweeter_nsfw
recap.v2.tweetfeature.is_retweeter_profile_egg
recap.v2.tweetfeature.is_retweeter_spam
recap.v2.tweetfeature.retweet_of_mutual_follow
recap.v2.tweetfeature.source_author_rep
recap.v3.tweetfeature.probably_from_follow
此特征组包含有关推文媒体的特征以及有关推文的对话相关特征。
tweetsource.tweet.media.aspect_ratio_den
tweetsource.tweet.media.aspect_ratio_num
tweetsource.tweet.media.bit_rate
tweetsource.tweet.media.height_1
tweetsource.tweet.media.height_2
tweetsource.tweet.media.height_3
tweetsource.tweet.media.height_4
tweetsource.tweet.media.num_tags
tweetsource.tweet.media.resize_method_1
tweetsource.tweet.media.resize_method_2
tweetsource.tweet.media.resize_method_3
tweetsource.tweet.media.resize_method_4
tweetsource.tweet.media.video_duration
tweetsource.tweet.media.width_1
tweetsource.tweet.media.width_2
tweetsource.tweet.media.width_3
tweetsource.tweet.media.width_4
tweetsource.tweet.text.has_question
tweetsource.tweet.text.length
tweetsource.tweet.text.length_type
tweetsource.tweet.text.num_caps
tweetsource.tweet.text.num_newlines
tweetsource.tweet.text.num_whitespaces
tweetsource.v2.tweet.media.color_1_blue
tweetsource.v2.tweet.media.color_1_green
tweetsource.v2.tweet.media.color_1_percentage
tweetsource.v2.tweet.media.color_1_red
tweetsource.v2.tweet.media.face_areas
tweetsource.v2.tweet.media.has_app_install_call_to_action
tweetsource.v2.tweet.media.has_description
tweetsource.v2.tweet.media.has_selected_preview_image
tweetsource.v2.tweet.media.has_title
tweetsource.v2.tweet.media.has_visit_site_call_to_action
tweetsource.v2.tweet.media.has_watch_now_call_to_action
tweetsource.v2.tweet.media.is_360
tweetsource.v2.tweet.media.is_embeddable
tweetsource.v2.tweet.media.is_managed
tweetsource.v2.tweet.media.is_monetizable
tweetsource.v2.tweet.media.num_color_pallette_items
tweetsource.v2.tweet.media.num_faces
tweetsource.v2.tweet.media.num_stickers
tweetsource.v2.tweet.media.view_count
如果推文是回复,则此特征组包含回复推文的特征。
in_reply_to_tweet.recap.earlybird.fav_count_v2
in_reply_to_tweet.recap.earlybird.reply_count_v2
in_reply_to_tweet.recap.earlybird.retweet_count_v2
in_reply_to_tweet.recap.searchfeature.fav_count
in_reply_to_tweet.recap.searchfeature.reply_count
in_reply_to_tweet.recap.searchfeature.retweet_count
in_reply_to_tweet.recap.searchfeature.text_score
in_reply_to_tweet.recap.tweetfeature.bidirectional_fav_count
in_reply_to_tweet.recap.tweetfeature.bidirectional_reply_count
in_reply_to_tweet.recap.tweetfeature.bidirectional_retweet_count
in_reply_to_tweet.recap.tweetfeature.conversational_count
in_reply_to_tweet.recap.tweetfeature.from_mutual_follow
in_reply_to_tweet.recap.tweetfeature.from_verified_account
in_reply_to_tweet.recap.tweetfeature.has_hashtag
in_reply_to_tweet.recap.tweetfeature.has_image
in_reply_to_tweet.recap.tweetfeature.has_mention
in_reply_to_tweet.recap.tweetfeature.has_news
in_reply_to_tweet.recap.tweetfeature.has_video
in_reply_to_tweet.recap.tweetfeature.has_visible_link
in_reply_to_tweet.recap.tweetfeature.is_author_bot
in_reply_to_tweet.recap.tweetfeature.is_author_new
in_reply_to_tweet.recap.tweetfeature.is_author_nsfw
in_reply_to_tweet.recap.tweetfeature.is_author_spam
in_reply_to_tweet.recap.tweetfeature.is_offensive
in_reply_to_tweet.recap.tweetfeature.is_reply
in_reply_to_tweet.recap.tweetfeature.is_sensitive
in_reply_to_tweet.recap.tweetfeature.num_mentions
in_reply_to_tweet.recap.tweetfeature.prev_user_tweet_enagagement
in_reply_to_tweet.recap.tweetfeature.unidirectiona_fav_count
in_reply_to_tweet.recap.tweetfeature.unidirectional_reply_count
in_reply_to_tweet.recap.tweetfeature.unidirectional_retweet_count
in_reply_to_tweet.recap.tweetfeature.user_rep
in_reply_to_tweet.timelines.earlybird.decayed_favorite_count
in_reply_to_tweet.timelines.earlybird.decayed_quote_count
in_reply_to_tweet.timelines.earlybird.decayed_reply_count
in_reply_to_tweet.timelines.earlybird.decayed_retweet_count
in_reply_to_tweet.timelines.earlybird.has_quote
in_reply_to_tweet.timelines.earlybird.quote_count
in_reply_to_tweet.timelines.earlybird.weighted_fav_count
in_reply_to_tweet.timelines.earlybird.weighted_quote_count
in_reply_to_tweet.timelines.earlybird.weighted_reply_count
in_reply_to_tweet.timelines.earlybird.weighted_retweet_count
in_reply_to_tweet.timelines.earlybird_score
in_reply_to_tweet.tweetsource.tweet.media.aspect_ratio_den
in_reply_to_tweet.tweetsource.tweet.media.aspect_ratio_num
in_reply_to_tweet.tweetsource.tweet.media.height_1
in_reply_to_tweet.tweetsource.tweet.media.height_2
in_reply_to_tweet.tweetsource.tweet.media.video_duration
in_reply_to_tweet.tweetsource.tweet.text.has_question
in_reply_to_tweet.tweetsource.tweet.text.length
in_reply_to_tweet.tweetsource.tweet.text.num_caps
该特征组将由搜索和轻排名服务(“Earlybird”)使用的特征传递给重排名器。
timelines.earlybird.decayed_favorite_count
timelines.earlybird.decayed_quote_count
timelines.earlybird.decayed_reply_count
timelines.earlybird.decayed_retweet_count
timelines.earlybird.embeds_impression_count_v2
timelines.earlybird.embeds_url_count_v2
timelines.earlybird.fake_favorite_count
timelines.earlybird.fake_quote_count
timelines.earlybird.fake_reply_count
timelines.earlybird.fake_retweet_count
timelines.earlybird.has_quote
timelines.earlybird.is_composer_source_camera
timelines.earlybird.label_abusive_flag
timelines.earlybird.label_abusive_hi_rcl_flag
timelines.earlybird.label_dup_content_flag
timelines.earlybird.label_nsfw_hi_prc_flag
timelines.earlybird.label_nsfw_hi_rcl_flag
timelines.earlybird.label_spam_flag
timelines.earlybird.label_spam_hi_rcl_flag
timelines.earlybird.periscope_exists
timelines.earlybird.periscope_has_been_featured
timelines.earlybird.periscope_is_currently_featured
timelines.earlybird.periscope_is_from_quality_source
timelines.earlybird.periscope_is_live
timelines.earlybird.preported_tweet_score
timelines.earlybird.quote_count
timelines.earlybird.visible_token_ratio
timelines.earlybird.weighted_fav_count
timelines.earlybird.weighted_quote_count
timelines.earlybird.weighted_reply_count
timelines.earlybird.weighted_retweet_count
用户-作者交互特征。类似于RealGraph,但更新更快。
realtime_interaction_graph.click.count
realtime_interaction_graph.click.days_since_last
realtime_interaction_graph.fav.count
realtime_interaction_graph.fav.days_since_last
realtime_interaction_graph.mention.count
realtime_interaction_graph.mention.days_since_last
realtime_interaction_graph.profile_view.count
realtime_interaction_graph.profile_view.days_since_last
realtime_interaction_graph.retweet.count
realtime_interaction_graph.retweet.days_since_last
realtime_interaction_graph.soft_follow.count
realtime_interaction_graph.soft_follow.days_since_last
推文与用户最近参与的推文的相似性。
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.fav_1d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.fav_1d_last_10_max
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.fav_7d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.fav_7d_last_10_max
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.follow_30d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.follow_30d_last_10_max
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.follow_7d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.follow_7d_last_10_max
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.retweet_1d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.retweet_1d_last_10_max
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.retweet_7d_last_10_avg
user_tweet.recommendations.sim_clusters_recent_engagement_similarity.retweet_7d_last_10_max
user-tweet.recommendations.sim_clusters_scores.user_interested_in_tweet_embedding_dot_product_20m_145k_2020
在这里,我们列出了任何特征组中未涵盖的单个特征
author_health.num_connect
author_health.num_connect_days
author_health.num_followers
engagement_features.in_network.favorites.count
engagement_features.in_network.replies.count
engagement_features.in_network.retweets.count
request_context.display_dpi
request_context.display_height
request_context.display_width
request_context.is_get_initial
request_context.is_get_middle
request_context.is_get_newer
request_context.is_get_older
request_context.is_session_start
time_features.earlybird.last_favorite_since_creation_hrs
time_features.earlybird.last_quote_since_creation_hrs
time_features.earlybird.last_reply_since_creation_hrs
time_features.earlybird.last_retweet_since_creation_hrs
time_features.earlybird.time_since_last_favorite
time_features.earlybird.time_since_last_quote
time_features.earlybird.time_since_last_reply
time_features.earlybird.time_since_last_retweet
time_features.is_tweet_recycled
time_features.non_polling_requests_since_tweet_creation
time_features.time_between_non_polling_requests_avg
time_features.time_since_last_non_polling_request
time_features.time_since_source_tweet_creation
time_features.time_since_tweet_creation
time_features.time_since_viewer_account_creation_secs
time_features.tweet_age_ratio
Embedding是指将客观世界中离散的物体或对象(如单词、短语、图片等)映射到特征空间中的操作。Embedding Feature是指映射后的特征空间中连续且稠密的高维向量。
Twhin是一个在Twitter数据上训练的大型图嵌入。我们使用来源于Twhin算法三个200维的嵌入。
我们在用户-用户关注图上训练了两个嵌入,一个表示谁可能关注用户,另一个表示用户可能关注谁。每个嵌入是200维的。
我们在用户-推文参与图上训练了一个嵌入,基于他们可能参与的推文来表示用户。这个嵌入是200维的。
如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻
阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。