[落选]2021微信大数据挑战赛_方案
目录
- 问题概述
- baseline
- 改进-0
- 改进-1
- 改进-2
- 改进-3
- 改进-4
- 结果
- 参考
- 更新
问题概述
先来看看这冗长的赛题说明1
baseline
最早是参考麻婆豆腐AI
2的baseline,跑了一遍。
这份代码用了LabelEncoder
、OneHotEncoder
,好像没做特征工程,直接丢进去了
后来在周周星的分享上找了一个baseline3,结构相对来说更清晰一点,就按照这个改进。
先聊一下这份代码的基础特征吧
详细描述如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
滑窗提取特征:
首先是滑窗提取特征,即过去N天内,看过多少视频、点赞多少视频等等
baseline当中N取的是5,后续参考其他文献等改为7,有提升
这里的时间粒度都是天,也就是说,如果用户在当天内重复观看某条视频,那他只有一条数据行,只是在
is_finish
列为1
,而在play_times
列可能是2
或者其他,在play
列的时长要超过视频的时长videoplayseconds
。但如果用户在另一天重复观看此视频,则会是一条新的数据行。两种情况的数据行在userid
、feedid
、authorid
等列都保持一致,但在date_
列则是两个数值。下面的计不计人重复,一般都是对当天内的重复观看的情况而言的。然后这些滑窗的特征如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
曝光数据
该用户看过多少个视频
在
天
的尺度内,计量单位是个
,也就是说当用户在某天内观看某个视频两次,在这里仍旧被记作一次,但如果在另一天再次观看,则被记为两次,下同该视频被多少个人播放
该作者被多少个人播放
该用户看过该作者多少个视频
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
转化数据
该用户看完的视频个数在看过的视频个数当中的占比
即对标记是否完整观看的
is_finish
列进行求平均,即为完成率该视频被看完的次数在被看到的次数当中的占比
此处同样不计入当天内的重复观看,同样对
is_finish
列进行求平均该作者被看完的次数在被看到次数当中的占比
同上
在该用户观看过的该作者的视频当中,看完的百分比
同上
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
对于每个用户而言
对其在过去N天观看单个视频的次数,
play_times
列此处计入当天内的重复观看的次数,即对同一个视频反复观看
求平均
求最大
对其在过去N天对单个视频的观看时长,
play
列此处计入当天内的重复观看的情况,即观看时长超出视频时长的情况
求平均
求最大
对其在过去N天在单个视频的停留时长,
stay
列求平均
求最大
对于每个视频而言
对其在过去N天被观看的次数,
play_times
列此处计入当天内重复观看的情况,即对同一个视频反复观看
求平均
求最大
对其在过去N天被观看的时长,
play
列此处计入当天内重复观看的次数,即观看时长超出视频时长的情况
求平均
求最大
对其在过去N天的停留时长,
stay
列求平均
求最大
对于每个作者而言
同上
每个观看过的每个作者
同上
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
对每个用户而言,在过去N天内
其点赞的视频数量的
求和
平均
其查看评论的视频数量的
求和
平均
其点击头像的视频数量的
求和
平均
其转发的视频数量的
求和
平均
对每个视频而言,在过去N天内
其点赞的数量的
求和
平均
其查看评论的数量的
求和
平均
其点击头像的数量的
求和
平均
其被转发的数量的
求和
平均
对每个作者而言,在过去N天内
同上
每个用户对每个作者,在过去N天内
同上
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
全局提取特征
这里针对的是用户的所有历史数据。由于baseline当中在开头就把测试集和训练集放在一起做特征工程,所以这里其实统计的是过去15天的历史数据,即包含了将要预测的第15天的观看次数等。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
曝光数据
此处计入不同日期的重复观看的情况
用户一共看过几个视频
该视频一共被多少人看过
该作者的视频一共被多少个人看过
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用户与视频
对于每个用户而言,在所有历史数据当中,其看过几个视频
此处不计入不同日期的重复观看,在所有历史数据意义上的
个
对于每个视频而言,在所有历史数据当中,其被几个用户看过
此处同样不计入重复,同上
用户与作者
对于每个用户而言,在所有历史数据当中,其看过几个作者
此处不计入不同日期的重复观看,在所有历史数据意义上的
个
对于每个作者而言,在所有历史数据当中,其被几个用户看过
此处同样不计入重复,同上
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用户与作者
用户在某一天内看某个作者多少次
即按照
userid
和authorid
进行groupby
之后,对date_
列进行计数。假设这种情况下,10
在date_
列出现两次,即意味着用户在第10
天看过该用户2
次。用户看过的该作者作品在该作者所有作品当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?用户看过的该作者作品,在该用户看过所有视频当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?同上
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用户观看过视频的平均时长
作者创作视频的平均时长
作者创作过几个视频
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
改进-0
其实这个不算改进吧,就使用optuna
45对baseline进行了调参,大概上升了0.03%
?
然后后面就没啥用了,可能是我代码的问题,做了新的特征之后调出来的参数竟然和之前一致,没有变化
改进-1
参考了文章67,对特征进行改进
其实也就是在相应的for
循环当中加入了新的特征列名
baseline当中,滑窗类的特征主要做了以下四个:
用户
视频
作者
用户对作者
在上面的基础上追加特征:
背景音乐
背景音乐的歌手
用户对背景音乐
用户对背景音乐的歌手
在全局特征当中追加:
+++++++++++++++++++++++++++++
曝光数据
背景音乐被播放几次
歌手被播放几次
+++++++++++++++++++++++++++++
与用户与视频
和用户与作者
相并列的特征
用户与音乐
用户听过多少次这个音乐
这个音乐被多少个用户听过
用户与歌手
用户听过多少次这个歌手
歌手被多少个用户听过
+++++++++++++++++++++++++++++
与第二个用户与作者
相并列的特征
用户与音乐
用户在某一天内看某个音乐多少次
用户看过的该音乐在该作者所有作品当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?用户看过的该音乐,在该用户看过所有视频当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?同上
用户与歌手
- 同上
+++++++++++++++++++++++++++++
改进-2
加入device
的特征,感觉这个没啥用
同时将全局特征的统计限定在前14天,也就是不统计测试集的观看数据
后来想想不太对,这个地方其实应该统计全部15天包含测试集的数据
是这样的,真实情况下,我们不知道第15天的行为对应的标签
也就是说,当我们去做推荐的时候,用户还没有对这个视频产生交互
但是在打比赛的时候不一样,打比赛的时候已经有标签了
那也就意味着,测试集当中的数据,应该是发生过的
是属于用户画像的一部分的
+++++++++++++++++++++++++++++
在时间滑窗当中加入:
设备,
device
设备对作者
设备对歌曲
设备对歌手
+++++++++++++++++++++++++++++
在曝光当中加入:
- 设备,
device
+++++++++++++++++++++++++++++
相应加入:
设备对视频
该型号看过几个个视频
该视频被几个型号的看过
设备对作者
- 同上
设备对歌曲
- 同上
设备对歌手
- 同上
+++++++++++++++++++++++++++++
设备与作者
设备在某一天内看某个作者多少次
设备看过的该作者作品在该作者所有作品当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?设备看过的该作者作品,在该设备看过所有视频当中的占比
此处分母上有
+1
,不要清楚有什么作用,为了防止分母出现0
?同上
设备与歌曲
- 同上
设备与歌手
- 同上
+++++++++++++++++++++++++++++
改进-3
加入embedding
使用
word2vec
对keyword
和tag
进行编码,生成32
维的向量,作为视频的特征数据使用
pca
将feed_embeddings
降维到32对以词为单位的
description
、ocr
、asr
使用word2vec
生成32
维的向量,并计算两两之间的差距
改进-4
对以字为单位的
description
、ocr
、asr
使用word2vec
生成32
维的向量,并计算两两之间的差距尝试统计用户点赞过、评论等操作的视频抽取其特征,形成用户的兴趣特征。但没有成功
结果
A榜当时好像0.659吧?我印象还在0.66挣扎,就差一点,B榜根本没提交
周周星3也用单模的树模型,都能干到0.675
参考
她来了她来了,乘风破浪的微信视频号推荐算法8
微信视频号推荐算法挑战赛baseline分享9
微信大数据挑战赛:LightGBM vs DeepFM10
更新
OTTO队伍的树模型方案,https://github.com/juzstu/WBDC2021_Tree_Solution
江离的方案 ,https://github.com/ji1ai1/202105-WEIXIN
关于NetworkX,用图构建用户和视频的关系,做协同过滤
定量分析方法第17讲:NetworkX基础
特征工程之tag-pooling,以微信大数据比赛数据为例
这个我好像用的是第二种方式,word2vec
对每个视频的tag
进行embedding
之后求平均
微信大数据竞赛Trick–如何3ID上0.706+
这里好像是按照视频对用户进行groupby
,将每个视频的观看用户理解为文档,将视频列表理解为文档列表,对用户进行TFIDF
编码,然后使用TruncatedSVD
降维。
该特征的本质就是希望找到基于视频的用户共现性,如果某些视频某些用户总是一起出现,那么就说明这些用户大概率有相同的爱好,就很可能一起转发,一起评论并且同时关注了。
下面这两个也有使用这个方法
中科大倪茹:感谢开源,我从入门竞赛到Top 10的经验分享
2020DCIC智能算法赛-智慧海洋建设TOP1方案
微信大数据挑战赛 ↩︎
[某比赛的baseline/线上0.63/Lightgbm] ↩︎
6.14周周星(第一名)分享 ↩︎ ↩︎
席卷Kaggle的调参神器,NN和树模型通吃! ↩︎
【机器学习】Optuna机器学习模型调参(LightGBM、XGBoost) ↩︎
微信视频号推荐算法解题思路 ↩︎
微信大数据比赛我用树模型怎么从514到671 ↩︎
她来了她来了,乘风破浪的微信视频号推荐算法 ↩︎
微信视频号推荐算法挑战赛baseline分享 ↩︎
微信大数据挑战赛:LightGBM vs DeepFM ↩︎
[落选]2021微信大数据挑战赛_方案相关推荐
- 2021微信大数据挑战赛—参赛总结
2021微信大数据挑战赛-参赛总结 目录 2021微信大数据挑战赛-参赛总结 摘要 赛题任务 数据处理 特征工程 特征筛选 模型选择 赛题得分 参考链接 推荐阅读 写在最后 摘要 比赛网址:https ...
- 2021微信大数据挑战赛-初赛-NN思路分享
总结 模型 该方案是基于Deepfm的baseline模型,线上加权在0.661左右.未进行调参,未进行多折,若后续想提分,可以从模型方面进行着手调试. 特征工程 主要是通过基础id做的embeddi ...
- 2022微信大数据挑战赛复盘,rank60+菜鸟
2022微信大数据挑战赛复盘,rank60+菜鸟 说明 初赛 模型选择 trick implement details 复赛 模型选择 trick implement details 一些遗憾的地方 ...
- 2019大数据挑战赛TOP5方案总结
2019 BDC 比赛总结(图片完整版访问请访问github上的pdf文件) 图片完整版访问请访问github上的pdf文件!!!! 2019中国高校计算机大赛已正式结束.对于我个人而言,这是第一次进 ...
- 2021中国高校大数据挑战赛A题复盘+解题思路
引言 由于个人安排的原因,没有时间参加微信大数据挑战赛,倒是参加了2021年中国高校大数据挑战赛.这次比赛做的是中国电信提供数据集的A题,是一个异常检测的题目,一个人做的本科组二等奖,觉得还是不错的. ...
- 2021年大数据Hive(四):Hive查询语法
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 hive查询语法 一.SELECT语句 1.语句结构 2.全表查 ...
- 2021年大数据Hadoop(三十):Hadoop3.x的介绍
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Hadoop3.x的介绍 介绍 Hadoop 3.0新特性 ...
- 2021年大数据Hadoop(十五):Hadoop的联邦机制 Federation
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Hadoop的联邦机制 Federation 背景概述 F ...
- 2021中国大数据产业发展白皮书 附下载
"十三五"时期,我国大数据产业取得了突破性的发展.大数据产业规模持续稳步提升,产业价值不断释放:大数据相关政策陆续出台,产业发展环境日益优化:新型数据中心.5G等大数据相关基础设施 ...
最新文章
- 为什么说康托尔知道聚宝盆的秘密?
- 13 款惊艳的 Node.js 框架——第1部分
- System_Recovery_21.0.3_62137_Multilingual_Product
- C++构造函数和析构函数的学习(一)
- 鸿蒙os智慧屏体验,华为智慧屏首发体验!搭载鸿蒙OS+AI芯片,还有AI教你健身
- ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
- JAVA团队开发手册 - 2.代码管理
- ZJOI2019 线段树
- dev gridcontrol 单选框效果
- 【.net core 跨平台】第一步 在Ubuntu16.04 配置.net core环境
- CorelDRAW X4 SP2 简体中文正式版精简增强版
- Python爬取美女图片 爬虫基础
- npm ERR path /Users/user/Desktop/app/node_modules/node-sass
- 友善串口助手使用教程_友善串口调试助手基本功能怎么使用-友善串口调试助手使用教程...
- java捕鱼设计_JAVA毕业设计教程:用swing实现捕鱼达人代码教程
- Photon网络中Player中存取数据
- FileReader和FileOutputStream
- 矩阵与行列式的几何意义
- 【转】国人须知道的76个常识
- Web阶段--Oracle数据库基础知识点
热门文章
- Future home of something quite cool.
- Kafka的安全认证机制SASL/PLAINTEXT 2020.11.12
- Java笔记-Java日常笔记-Java核心语言-史上最全Java笔记-Java烂笔头-实时更新(~v~)
- 全球与中国喷雾指示染料市场深度研究分析报告
- 巨人的崛起 Android操作系统发展历程
- uniapp中键盘抬起挤压界面
- 浅析泵站自动化技术的发展趋势
- 【转】汽车零件产品开发过程A样件、B样件和C样件的区别?
- 晒晒牛人老公的爆笑忏悔
- iOS开发--使用NSTimeInterval获取2个时间间隔