最近参加了天池上的新人赛,把比赛的流程走了一遍,收获挺大。现把比赛思路简单记录一下,欢迎大家一起来讨论交流。

1. 对训练数据进行简单分析

拿到数据集,先对整个数据集做个简要分析,比如数据量大小、每种数据取值范围等,让自己对数据集有个大致认识。因此我对数据集简单分析可得到:训练数据共有122,5088条(仅三条内容有缺失值),涉及37251个用户,每个用户至少发一条博文,博文最多数量前十在4909~31015条。

2.划分训练集和测试集

第二步就是划分合理的训练集和测试集。 整个数据集的时间跨度为(2015-02-01至2015-07-31),我打算以三个月的数据为训练集,之后的一个月数据集为测试集。因此整个数据集可以划分为以下三个部分:

- 训练集一(674019):2015-02-01 ~ 2015-04-30    - 测试集一(188029):2015-05-01~2015-05-31

- 训练集二(621376):2015-03-01 ~ 2015-05-31    - 测试集二(178823):2015-06-01~2015-06-30

- 训练集三(573141):2015-04-01 ~ 2015-06-30    - 测试集三(184214):2015-07-01~2015-07-31

- 预测集(177923):2015-08-01~2015-08-31

3.特征工程

第三步是最为关键的,因此要找出最直观、最重要的特征。这里我从三个方面入手:用户特征、时间特征、博文特征。

3.1 用户特征

-最大评论数、点赞数、转发数

-最小评论数、点赞数、转发数

-平均评论数、点赞数、转发数

-最大评论/点赞率、转发/点赞率

-最小评论/点赞率、转发/点赞率

-平均评论/点赞率、转发/点赞率

-评论数、点赞数、转发数大于平均值的概率

3.2 时间特征

-是星期几

-是否周末

-是否是节假日

-发文时间段(分24个时间段)

3.3 博文特征

由于不会nlp,因此就只是使用jieba提取出现频率最高的20个关键字。

前1000个数据:cn,http,小伙伴,转发,PS,教程,分享,Photoshop,转给,大家,技巧,学习,设计,需要,微博,方法,效果,程序员,简单,doge。

前100个数据:小伙伴,转给,cn,http,Photoshop,分享,PS,教程,大家,技巧,需要,方法,效果,参考,学习,转发,设计,实用,利用,照片。
       选用关键词:小伙伴、分享、转发、转给、教程、大家、技巧、方法、效果、学习、实用、简单、红包、免费、福利、奖。

- 是否含有“小伙伴、分享、转发、转给、教程、大家、技巧、方法、效果、学习、实用、简单、红包、免费、福利、   奖”等关键字眼(处理成含有关键字的数量)

- 是否有主题(微博内容中含有##)

- 是否@他人

- 是否是转发他人的微博(微博中含有“【】”)

4.模型

4.1 线性回归模型

先讨论不同训练集训练的线性回归模型的准确率情况:不同训练集训练的模型大致相似,对预测结果起决定性影响的是预测数据特征的准确性,因此如何保证预测数据的特征的准确性是至关重要的,尤其是对缺失值的处理。

现讨论缺失值如何处理问题:利用所有数据集进行预测有699个用户无法获得特征值,那么是用0来填充还是均值来填充效果更好?分析思路,对前几个训练集分析新增用户的函数值是趋于0还是趋于均值。

- 训练集一:3251条新数据,用0填充的准确率为 0.579239766082,用均值来填充的准确率为0.0178362573099

- 训练集二:9112条新数据,用0填充的准确率为 0.781565753953,用均值来填充的准确率为0.00817585807944

- 训练集三:5206条新数据,用0填充的准确率为 0.624848973017,用均值来填充的准确率为0.0299033427306

可见缺失值填充为0的效果显著,从现实意义上也很容易理解,若用户在前几个月没有数据则该用户很大可能是新用户,因此相应点赞数、评论数、转发数也很可能为0。

在训练模型的过程中,发现仅使用用户特征预测的准确率(28%左右)要高于用上所有特征的预测结果(26%左右),然后我就怀疑是不是我的特征提取的不合理。带着这个问题,我打开了SPSS分析软件进行相关性分析,结果表明:不存在某个特征变量与转发量、评论量、点赞量同时不相关,大部分特征变量都同时与转发量、评论量、点赞量相关。后来才知道,本题给出的评判标准并非准确率,而是一种关于相对准确的计算(后面会分析)。

利用用户特征进行线性拟合,提交结果系统给出的评判结果为:27.27373545%。


4.2 决策树回归

由于觉得决策时模型比较容易理解,然后我就尝试用决策树回归模型来预测该问题。通过对三个数据集调参发现,决策树的最大深度为20,最小划分样本和最小叶子样本数都为10,mse小于1(这些参数选择相对最优)。可最终提交结果系统给出的评判结果为:26.23863679% (20,10,10)、26.01225228%(20,10,5),效果还没有线性回归好,我崩溃了。。。不解为啥模型逼格上去了,预测结果竟然下来了。一边安慰自己“最简单的就是最好的”,一边分析原因,然后我把锅又推给了评判标准,接着就有了下面的搜索模型。

4.3 搜索模型

提取的特征工程不起作用?复杂模型预测效果不好?答案就是评判标准。然后我就按照网上这种思路:以评判标准为导向,对于每一个用户取使其评判值最高的数据。这里也是两种思路:

第一种是一层循环,仅循环该用户已出现的所有组合。

- 对测试集一进行测试的准确率结果:0.358746969504

- 对测试集二进行测试的准确率结果:0.359069119304

- 对测试集三进行测试的准确率结果:0.365967187456

提交结果系统给出的评判结果为:30.04590604% 。

第二种是三层循环,对转发数、评论数、点赞数分别从最小值循环到最大值。(由于代价太高,只能对部分数据使用此方法,而且步长也设置一个相对值),由于只针对有用的数据进行三重循环,因此没有测试线下数据的结果,提交结果系统给出的评判结果为:30.05774245%。


4.4 攻略进阶

我感觉搜索模型就是一种比赛的套路,对于实际工作没有参考价值,不过这个想法蛮有意思的。如果你想认认真真比赛,请参考:天池微博大赛攻略进阶。

天池新人赛之新浪微博互动预测相关推荐

  1. 天池新人赛幸福感数据分析+预测

    天池新人赛幸福感预测赛题链接 https://tianchi.aliyun.com/competition/entrance/231702/introduction 本文将按以下几个步骤描述,数据分析 ...

  2. 阿里天池新人赛——幸福感挖掘

    本文简要介绍参加阿里天池新人赛--幸福感挖掘的相关思路 整体思路 1.分析问题,提出分析目的 2.数据清洗.数据预处理及数据可视化 3.数据分析 4.建模计算 5.分析结果及竞赛成绩 1.分析问题,提 ...

  3. python数据分析-杭州市地铁站人流量【数据源---阿里云天池新人赛】

    python数据分析-杭州市地铁站人流量[数据源-阿里云天池新人赛] 前言 天池新人实战赛是针对数据新人开设的实战练习专场,以经典赛题作为学习场景,提供详尽入门教程,手把手教你学习数据挖掘.天池希望新 ...

  4. 天池学习赛:工业蒸汽量预测5——特征优化

    上一篇<天池学习赛:工业蒸汽量预测4--模型验证> 目录 1 特征优化的方法 1.1 合成特征 1.2 特征变换 1.3 用决策树创造新特征 1.4 特征组合 2 赛题特征优化代码 1 特 ...

  5. 天池学习赛:工业蒸汽量预测4——模型验证

    上一篇<天池学习赛:工业蒸汽量预测3--模型训练>中已经是使用了几种机器学习的模型,接下来将介绍一些模型的评价方法. 目录 1 模型评估的方法 2 模型调参 3 赛题模型验证与调参 3.1 ...

  6. 天池学习赛:工业蒸汽量预测3——模型训练

    接上一篇<天池学习赛:工业蒸汽量预测2--特征工程> 数据划分: from sklearn.model_selection import train_test_split #切分数据new ...

  7. 天池学习赛:工业蒸汽量预测2——特征工程

    上一篇<天池学习赛:工业蒸汽量预测1--数据探索> 目录 1.特征工程 1.1 预处理 1.2 特征处理 1.3 特征降维 1.3.1 特征选择 1.3.2 线性降维 2.赛题代码 3 结 ...

  8. 天池学习赛:工业蒸汽量预测1——数据探索

    目录 0.赛题介绍 1.数据分析知识 2.代码实现 0.赛题介绍 火力发电的基本原理是:燃料在燃烧时加热水生成蒸汽,蒸汽压力推动汽轮机旋转,然后汽轮机带动发电机旋转,产生电能.在这一系列的能量转化中, ...

  9. NLP学习实践天池新人赛打卡第一天

    NLP学习实践天池新人赛打卡第一天 Task1 赛题理解 学习目标 赛题数据 数据标签 评测指标 数据读取 解题思路 Task1 赛题理解 赛题名称:零基础入门NLP之新闻文本分类 赛题目标:通过这道 ...

最新文章

  1. 深入浅出Pytorch:02 PyTorch基础知识
  2. 静态页转换平台(StaticPol)-静态页生成终极解决方案
  3. DLA实现跨地域、跨实例的多AnalyticDB读写访问
  4. 【C语言简单说】十:小结
  5. 第一百零九期:双十一光棍节调试一个商城必备功能,Java Springboot开源秒杀系统
  6. Visual Studio 2005/2008的代码段编辑器
  7. 在GridView的行绑定中应用Animation动画效果
  8. 在一个机器上创建多个独立Firefox运行环境
  9. 文件权限管理命令chmod,chown与文本搜索命令grep
  10. Linux快捷键详解
  11. 合成孔径雷达成像——算法与实现图【2.3】仿真——rect函数、sinc函数的傅里叶变换matlab仿真
  12. 弗雷歇距离 matlab,离散Fréchet(弗雷歇) 距离评价曲线相似度
  13. 《深度学习:21 天实战 Caffe》资源已上传至码云、github
  14. 神经网络未来发展趋势,神经网络未来发展前景
  15. 新华三防火墙简单配置安全域
  16. Windows系统路径中的C:/WINDOWS/Explorer.exe是什么?
  17. Android SDK proxy代理加速
  18. 图神经网络和常见的神经网络的区别
  19. ❤️❤️熬夜整理!最新零基础至高级自动化测试面试题,题多涵盖面广(建议收藏)❤️❤️
  20. bzoj3208 花神的秒题计划Ⅰ

热门文章

  1. 约瑟夫生者死者游戏:有N个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难;无奈,大家只得同意这种办法,并议定N个人围成一圈,由
  2. ORACLE 按照指定的ID 顺序排序
  3. iOS Resume【简历模板】
  4. 四个程序员编辑器,编程必备!!!
  5. 华为路由器学习指南_BGP_路由反射器与联盟
  6. CentOS安装scp命令及其scp的使用
  7. office 2016 for Mac打开时 出现隐藏模块中出现编译错误: link
  8. UE4加载Excel表格CSV数据及解决中文乱码问题
  9. csgo国服一直连不上服务器,csgo国服显示连接服务器发生错误 | 手游网游页游攻略大全...
  10. CabloyJS微信模块、企业微信模块已出齐