天池新人赛之新浪微博互动预测

       

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


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 攻略进阶


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

  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
天池新人 O2O 优惠券是一项在线比赛,旨在鼓励参者运用数据分析和机器学习技术来解决O2O优惠券发放的问题。O2O即“线上到线下”,是指将线上平台的服务与线下实体商店的购物场景结合起来的商业模式。而优惠券则是一种促销手段,可以为消费者提供折扣、赠品或者其他优惠活动。 这个比赛的主要任务是根据用户的线上活动行为、线下消费行为,以及优惠券的相关信息,预测用户是否会在规定的时间内使用优惠券来购买指定的商品。通过分析大量的历史数据,参者需要构建准确的预测模型,同时考虑到用户的行为特征和优惠券的属性,从而提高优惠券的使用效率和商家的销售转化率。 此项比赛的意义在于挖掘并优化O2O优惠券的发放策略,提供更精准的目标营销。通过合理分析用户行为和优惠券的匹配关系,商家可以有针对性地向潜在消费者发放优惠券,从而提高用户的购买转化率和忠诚度。同时,这也可以减少优惠券的浪费,降低商家的营销成本。 通过参与天池新人 O2O 优惠券竞,参者将面临来自各方面的挑战和难题。不仅需要运用数据分析和机器学习算法进行预测,还需要对于O2O领域的相关知识有一定的了解。此外,参者还可以通过与其他选手的交流和分享经验,提高自己的解题能力以及理解O2O优惠券的商业价值。 总的来说,天池新人 O2O 优惠券是一项挑战性的比赛,旨在促进数据分析和机器学习在O2O领域的应用,为商家提供更智能化、精确化的优惠券发放策略,同时为消费者提供更个性化、经济实惠的购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值