实战微博互动预测之一_问题分析

1. 天池竞赛平台

 微博互动预测是一个天池平台的竞赛,和其它平台相比,天池的数据量更大,赛题更接近实际场景。微博互动比赛算是其中比较小的,训练数据也有300多M,上百万条记录(虽然数据较多,但也是普通开发机可以处理的量级)。数据内容也比较丰富,和提供匿名纯特征拼算法的竞赛相比,它需要研究业务,发挥的空间也更大。
 天池平台的大多数比赛分为线下赛和线上赛。第一阶段线下赛和Kaggle,DC差不多,就是在本地计算,然后上传预测结果,线上评分排名(每天两次),如果第一阶段排名靠前,可进入第二阶段线上赛,线上赛使用天池平台算力和工具,海量数据,支持分布计算,但也被线上工具所限。

2. 新浪微博互动预测

 微博互动预测是前两年的赛题,现在仍开放线下赛,可以上传预测结果,计分并排名。它代表了现实中的一大类应用:数据量大,需要参赛者提取特征,数据有现实中的意义,无规律数据占多数,可多维度分析等等。赛题具体见:
https://tianchi.aliyun.com/getStart/introduction.htm?spm=5176.100066.0.0.6f2c778dQSMdqc&raceId=231574

3. 观察数据

 微博互动预测的训练集是123W条微博,预测测试集中数据转发,评论和赞的情况。
 训练数据中,字段并不多,包括:用户标记,博文标记,发博时间,转发数,评论数,赞数,博文内容。

  • 用户标记:大多数用户发文不止一条,可通过转发数,评论数,赞数预测该用户的粉丝,以及粉丝的习惯。
  • 博文标记:是微博的id,可看作索引。
  • 发博时间:可分解出工作日,节假日,时间段等属性。
  • 转发数,评论数,赞数:是预测的目标,也可用于计算用户的特征和分析其相关性。
  • 博文内容:可解析出更多特征,如分词聚类,情绪分析,是否包含链接,是否包含表情,是否包含视频,是否自动生成,是否为广告(含:天猫,淘宝,超便宜),长度,是否@谁,是否为转发#,文章分类(新闻,技术,笑话,心情…)

4. 统计数据

(1) 统计转发,评论,点赞个数(后统称反馈)

 我们既可以把它当成回归问题,也可以把它当成分类问题,如果是分类问题,则是非均衡分类,score时需要考虑分布情况。
 可见,如果把所有情况都预测成0,也能拿到一定分数。

(2) 反馈个数做图

 下面列出了转发,评论,点赞的分布图,横坐标是反馈个数(如转发数),纵坐标是该反馈出现的次数,如0次转发出现了上百万次(由于影响显示,做图截取掉了)。

(3) 反馈均数

 平均每篇获得反馈个数是,转发:3.54,评论:1.26,赞:2.22。
 可见,虽然大多数人没得到反馈,但被关注的少数人拉高了平均分。

(4) 统计用户

 训练数据中共37000多个用户,人均发文33篇,首先用把每个用户得到的转发,评论,点赞的均值加在一起,可计算出关注度,即下图中的黑线,按关注度对用户排序,下图分别显示了关注度和各种反馈之间的关系,以及分布,从中也能看到在30000多人里只有几十个人平均每篇的反馈之和超过100,且以转发为主。
 截掉了图的左侧,其中显示有15000多人,从未得到过任何反馈,占了全体用户数的0.412,所以说没人理也很正常。估计可能因为不太使用微信,只发广告,自动生成消息,或者好友太少。后面会做进一步分析。

(5) 单个用户分析

 下面是对某个用户的转发分析,他共发文733篇,其中最多的一篇被转发8949次,也因为影响显示被截掉了,其中有167篇文是0次转发,大多数分布在0-100次以内。从中还可以估计一下他的粉丝数,至少有8949人,方法是max(f,l,c)。
 可见,在粉丝多的情况下,反馈更多地取决于内容。

5. 问题分析

 再来看看比赛的评分标准,下面公式中f代表转发,c代表评论,l代表赞,p代表预测,r代表真实值;deviation是真实值与预测值的偏差,具体公式如下:

precision是准确率,根据偏差算出:

sig为符号函数,当x>0时sig(x)=1,当x<=0时,sig(x)为0。Counti为每篇的反馈总数,当Counti>100时,以按100计算。
 也就是说,当计算的偏差和在正负20%以内,则将反馈总数计入成绩。有两点需要注意:
 第一,反馈越多在评分中权重越大,比如反馈为500的文章,如果预测正确,贡献是反馈为0文章的500倍。
 第二,反馈越多偏差越大,比如实际为200次转发,预测成了500次,偏差deviation=(500-200)/(200+5)=1.63;实际为2次,预测成5次,deviation=(5-2)/(2+5)=0.43。

6. 整体分析

 从直觉上看,最强的特征应该是用户的被关注度,其次是内容,然后是时间。
 试验了一下,计算出了每个用户转发,评论,赞的均值,对于训练集中出现过的用户,直接将均值四舍五入作为预测,对没出现过的用户预测为0(整体均值)。线上得分26.49%,排名260名左右。加入一些算法后成绩反而下降了,估计可能是由于少量有规律数据和大量无规律数据混在一起,规律被湮没了,当然也有算法的选择问题。
 从不同角度看:直接可见的是文章,间接可见的是用户的特征。从已有数据可以提取到用户的发文数,各种反馈的均值,方差,关注度,估计粉丝数,以及他的粉丝对他各种文章的反馈。也可以根据不同反馈(不同的人,身边不同圈子)给用户做聚类。当某个用户个人信息不足时,取他所属类别的均值,这有点像股票分析也要先分析某支股票的股性,再分析其行为。
 初步觉得这应该是一个聚类,分类和回归结合的问题,有点像树回归。我觉得在前期,相对于分析信息内容,分析用户行为可能带来更大的信息增益。

你可能感兴趣的:(实战微博互动预测之一_问题分析)