[新浪微博互动预测大赛]来自内部赛冠军的问候,教你破40啦!

天池微博大赛攻略进阶
分享者:新浪微博互动预测大赛冠军  紫净
 


一.训练目标
本次比赛制胜的最关键点就是搞清楚训练目标。如果使用XLAB或其它算法包上的已有算法,一般的大致思路是这样的:构造各种特征,使用GBDT,RF等分别预测每条微博的转发,评论与点赞数量,然后作为答案。但很遗憾,如果你预测的是连续值,XLAB或其它算法包里面的模型的默认学习目标是准确率最高,每一条微博的权重都是一样的,那么预测的答案最终肯定会要么都是0,要么都很接近0。
而本题的评分公式中,每一条微博都有一个权重(转发数+评论数+点赞数+1),显然本题中的得分最高,与转发,评论,点赞预测结果的准确率最高是两个差距很大的目标。
举个例子:
一个人发了100条微博,其中90条都是0转发,0评论,0点赞,10条都是33转发,33评论,33点赞,现在有两种策略:
(1)预测这100条微博的结果都是全0的
(2)预测这100条微博的结果都是全33的
如果以准确率为目标,方案(1)的准确率是方案(2)的约10倍;
如果以本题的评分方案为目标,方案(2)的得分是方案(1)的约10倍;
(当然这是个极端的例子,但可以说明:准确率最高与本题中的评分结果最高是有着很大差距的)
如果使用准确率最高作为目标而不考虑权重影响的话,训练出来的目标很容易出问题,导致评分较低。
如何解决权重这一关键问题呢?我推荐两种方案:
(1)将预测值分为几档。如0-5,5-10,10-100等等,将预测连续值变为一个分类问题,然后利用置信度和权值计算出一个能够使最终得分数学期望最高的预测值。
(2)直接使用评分目标作为最终目标。我们的目标不再是提高一条微博的预测准确率,而是从宏观上提高整体的得分。不过这需要自己动手来改造或实现一个模型,GBDT,神经网络,遗传算法,或是自己设计的简单模型。但这个模型要做到:每迭代一次,都需要使用新产生的模型计算测试集一个月微博的得分,然后向着最优的方向继续迭代。


二.NLP特征
NLP特征的使用可分为宏观和微观两种,宏观上是指情感分析,主题抽取等句子维度的聚合特征,微观上是指词维度的统计特征。下图中可以看出不同词的统计结果差距还是很大的:

另外,还可以通过一些特殊符号确定是否有主题,是否@某人,是否是转发红包与广告等,进而可以从特殊符号的意义中抽象出特征,必要时也可以分开建模。

 

转载地址: http://bbs.aliyun.com/read/255893.html?spm=5176.7189909.0.0.RGMa4I

posted @ 2015-09-08 14:01  欣欣点灯  阅读(2402)  评论(0编辑  收藏  举报