专栏首页机器学习AI算法工程XDeepFM 模型,字节跳动短视频内容理解和推荐系统

XDeepFM 模型,字节跳动短视频内容理解和推荐系统

一图胜千言,仅一张图片就包含大量信息,难以用几个词来描述,更何况是短视频这种富媒体形态。面对短视频内容理解的难题,字节跳动作为一家拥有海量短视频素材和上亿级用户行为数据的公司,通过视频内容特征和用户行为数据,可以有充足的数据来预测用户对短视频的喜好。

AI项目体验地址 https://loveai.tech

模型介绍

Track 1 Method

1. XDeepFM-based method

该方法基于 XDeepFM 模型,具体特征工程和模型描述如下。

特征工程

  1. 1) 计数特征: 文件:count_feats_series_1.py, count_feats_series_1.py, count_feats_series_1.py 描述:计算单个类别特征和多个类别特征共现的次数
  2. 2) 人脸特征: 文件:003_face_feats_1.py, 003_face_feats_1_2.py, 描述:人脸的数目,男性数目和女性数目,人脸位置,高度和宽度,面积,beauty
  3. 3) 标题特征: 文件:004_title_feats.py 描述:题目长度,题目中包含的词的数目
  4. 4) 比例特征: 文件:005_ratio_feat.py 描述:在当天和当前小时下 'uid','item_id','item_city','author_id','duration_time','music_id','device'的出现次数和比例。

模型

文件:model.py, train_fm.py; 描述:模型使用XDeepFM, 其中 'uid','item_id','author_id','item_city','channel','music_id','device' 作为 稀疏特征,其余特征作为 dense feature 输入到模型。

2. Result

基于上述模型对 Track1 线上数据进行预测,最优结果为:0.777015024545725

Track 2 Method

1. LGB-based method

该方法基于 LGB 模型,具体特征工程和模型描述如下。

特征工程

  1. 1) 基础特征:原始特征
  2. 2) 统计特征:我们用的都是常规操作,如 count、ratio、nunique 和 ctr 相关特征。count:一维+二 维 count 计数特征 # 对交叉特征求 count
  3. 3) ratio:类别偏好的 ratio 比例特征
  4. 4) nunique:类别变量的 nunique 特征
  5. 5) face 相关的特征:图像的位置(width, height, x, y),beauty 的统计特征(max, avg),男性数量,女性 数量,是否有男性或者女性,face 的数量等 ['face_nums', 'x', 'y', 'width', 'height', 'size', 'male_cnt', 'female_cnt', 'avg_beauty', 'max_beauty', 'author_male_cnt', 'author_female_cnt','uid_female_ratio']
  6. 6) title 相关的特征:title 中不同词的数量(unique)以及 title 的长度
  7. 7) 在该条样本时间前,针对 uid,authorid,musicid 等 组合的正负样本数量统计特征

模型

- 最终使用了 基础特征,count 特征,ratio 特征,face 特征,title 特征,正负样本数量统计特征 - 针对 finish 和 like 采用上述的同一套特征,使用 lgb 模型,对两个任务分别预测

- clf = lgb.LGBMClassifier( boosting_type='gbdt', num_leaves=100, reg_alpha=0.0, reg_lambda=1, max_depth=-1, n_estimators=args.num_trees, objective='binary', subsample=0.7, colsample_bytree=0.7, subsample_freq=5, learning_rate=0.05, min_child_weight=100, random_state=2018, n_jobs=6, verbose=1

)

2. XDeepFM-based methods

该方法基于 XDeepFM 模型,基于不同的特征输入,训练了两个 XDeepFM 模型,该方法主要考虑了行 为特征和受众特征,它们起到了协同过滤作用。具体特征工程和模型如下所述。

特征工程

  1. 1) 基本特征:uid, user_city, item_id, item_city, author_id, channel, device_id, music_id;
  2. 2) 行为特征:(训练集+测试集中)浏览过的视频、音乐、作者、城市列表,计算 TF 值(取前 500 维);
  3. 3) 受 众 特 征 :( 训 练 集 + 测 试 集 中 ) 视 频 、 音 乐 、 作 者 的 用 户 u i d 列 表 , 计 算 T F - I D F 值 ( 取 前 4 0 0 维 );
  4. 4) 标题特征:计算 TF-IDF 值;
  5. 5) 脸部特征:{“num_face”: “人脸数目”, “female_ratio”: “女性比例”, “max_beauty”: “beauty 最大值”, “min_beauty”: “beauth 最小值”, “avg_beauty”: “beauty 平均值”, “max_area”: “最大人脸面积”, “avg_area”: “平均人脸面积”};
  6. 6) 时间特征:通过时间戳获取年、月、日、时、分,以及工作日特征,月-日交叉表示节日特征;
  7. 7) video 嵌入:128 维原始特征;
  8. 8) audio 嵌入:128 维原始特征;

9) count 特征: 计算单个类别特征和多个类别特征共现的次数。

模型 1

model: XDeepFM 输入特征:特征 1-8 模型文件: XDeepFM.py result:

public finish auc: 0.7366 public like auc: 0.728

模型 2

model: XDeepFM 输入特征:特征 1-9 模型文件: XDeepFM.py result:

public finish auc: 0.7367 未训练 like 任务

模型 1 和模型 2 超参数是一致的,隐藏单元数: [200,100,75,50,25], CIN 单元数:[50,50,50,50]。 训练超参数为:batch_size=32, learning_rate=0.005, dropout_rate=0.0。 此外,模型 1 与模型 2 的精度不一样,前者是 float64,后者是 float32

模型训练过程

1) 构建统计特征:用户行为特征、物品受众特征 2) 构建标题特征 3) 构建时间特征 4) 调用 DataParser.py 生成特征文件: 对 track2 数据进行分块,并行构造特征,生成 tf_record 记录 5) 调用 Main.py 进行训练

具体运行命令,请参见模型目录下 build_features.sh 和 run_model.sh

3. 模型融合

Track2 线上最优结果是通过模型融合获得的,融合方式是根据经验启发式的设计各模型结果权重,具体 计算公式如下:

finish = ( 0.5 * xdeepfm1_finish + 0.5 * xdeepfm2_finish) * 0.7 + 0.3 * lgb_finsh

like = 0.4 * xdeepfm1_like + 0.6 * lgb_like 根据上述方式融合之后,track2 线上 private 最终得分为 0.799658049326414。


本文分享自微信公众号 - 机器学习AI算法工程(datayx)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你还在用“人工特征工程+线性模型”?

    作者:李沐M 11年的时候我加入百度,在凤巢使用机器学习来做广告点击预测。当时非常惊讶于过去两年内训练数据如此疯狂的增长。大家都在热情的谈特征,每次新特征的...

    机器学习AI算法工程
  • 特征工程全过程

      有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是...

    机器学习AI算法工程
  • 一战成名,用户贷款风险预测 参赛代码与数据集分享

    队伍名“一战成名” 最终线上排名第七。 ? 任务 融360与平台上的金融机构合作,提供了近7万贷款用户的基本身份信息、消费行为、银行还款等数据信息,需要参...

    机器学习AI算法工程
  • ​特征工程系列:特征构造之概览篇

    关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~

    木东居士
  • 谷歌机器学习白皮书全解析 43条黄金法则(二)

    【AI科技评论按】:此白皮书为谷歌总结的机器学习(ML)最优实践方法,浓缩了其多年技术积累与经验,尤其是 YouTube、Google Play 和 Googl...

    AI科技评论
  • 【技术分享】推荐系统中的自动化特征工程

    在机器学习的各个子领域中,特征工程都扮演着重要的角色。业界有这么一句话,数据和特征决定了机器学习算法的上限,而模型、算法的选择和优化只是在不断逼近这个上限。通过...

    腾讯智能钛AI开发者
  • 特征工程之特征选择

        特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法...

    刘建平Pinard
  • 不想累死就来看看 : 特征工程之特征选择

    地址:https://www.cnblogs.com/pinard/p/9032759.html

    机器学习算法工程师
  • 这些“秘密武器”,让你轻松跻身Kaggle前2%

    Kaggle的比赛真的好玩到令人上瘾。在享受比赛的过程中,如果比赛成绩能够名列前茅那就非常棒了~~~

    CDA数据分析师
  • 特征工程方法综述

    随着我们底层特征库中特征数目的不断增长,如何组合特征,如何针对不同场景选择适合的特征,如何评估特征优劣?这些问题已经日益凸显,所以这次想梳理现有的特征工程方法,...

    DevOps时代

扫码关注云+社区

领取腾讯云代金券