这段话写在全球知名预测建模与分析平台 kaggle 的 TalkingData 全球算法大赛介绍页面上。
Kaggle 平台的注册用户现在已经超过60万,来自于全球194个国家,具有各行各业的背景,Kaggle 平台因为赛制的科学和开放的态度,也成为了很多重要数据科学竞赛的支持平台。目前,在 Kaggle 算法众包平台上一共举办了超过1200场比赛,多数比赛来自于工业界,提供了很多数据科学的解决方案。
从另外一个角度而言,这个平台类似于一个江湖武林排行榜,有一些人会借此一战成名。
2012年,美国制药公司默克(Merck)在 Kaggle 上发布了一项为期60天的挑战赛,由参赛者通过15种药物的各种数据预测它们的生物活性,如药物的靶点和非预期靶点(off-target)等等。结果,一个来自加拿大多伦多大学的5人团队 gggg 获得了第一。
如果直接介绍这支队伍,大家可能要翻一个白眼——这是谁?,但是他们背后的人却来头不小。相信很多从事数据科学的人都不陌生,他就是 Geoffrey hinton 。
三大牛 Yann LeCun、Yoshua Bengio 和 Geoffrey Hinton 在深度学习领域的地位无人不知,吃瓜群众可以看看,他长这样。
说了这么多,意思就是,kaggle 很牛X,不服就来参加个比赛试试。
在 kaggle 这个牛气的平台上,中国第三方移动数据平台 TalkingData 和机器学习公司 Turi 联合举办了一场全球算法大赛。这场比赛在7月11日开始,9月5日结束。
按照 TalkingData 数据科学部直接负责大赛的科学家路瑶告诉雷锋网的信息,原本在国内看上去稀松平常的一个算法大赛,应该是搞不出一个什么大新闻的,但是, 最终的比赛经过账号排重之后,居然有1689支队伍参加,囊括了1961个选手,一共有24000多次提交。
而且,路瑶还盘点了这次大赛上有意思的一些事儿,在勾起大家的兴趣前,先说说这是个什么样的比赛。
牛!感觉不会再爱了
本次大赛的挑战题目是通过移动设备行为数据来预测设备使用者的性别和年龄分组。
大赛提供了约20万用户的脱敏数据,分成了12组,比如,男性,22到25岁,女性,30到35岁等。同时也提供了用户行为属性,比如,时间点、地理位置、手机品牌、机型等,选手要通过这些信息推测用户属于哪一个组。
嗯,看上去有点难。
大赛的评估方式是——选手需算出用户在不同分组上的概率,一个用户只能在一个分组,理想状态下,如果能算出概率是1,其他为0的话,那么就是没有任何概率损失,但他们的答案一般是在不同的分组上,这个用户以不同的概率属于这个组别,这时就有概率损失,大赛的评估指标就是概率损失。
再看一次,很复杂对不对?好吧,我们可以再复杂一些。
表格里的数据首先是年龄性别分组,每个用户用是一个ID表示。一个用户的行为是在一系列的事件里,每一个事件里的信息包括:ID在什么时间点出现在哪个经纬度上,安装了哪些APP、使用了哪些APP,手机品牌和机型。
当然,APP 的 ID,包括经纬度等都进行了严格和科学的脱敏。
然而,APP 上呈现的只是脱敏后的 ID,选手对 APP 本身没有什么概念,为了让选手更好地解读数据,主办方给 APP 贴了一些标签,比如社交、游戏等,一共有1000多个标签。
围观群众表示,看样子像大海捞针对不对?
可对这些数据的解读仅仅是成功的第一步,下一步是特征工程。
选手提取了哪些特征?比如,用户是在什么时间活跃?休息日还是工作日?白天还是晚上?
数据还包括海外数据,有时差的问题。用户有了轨迹,轨迹分布是怎样?是聚集在某一块?还是聚集在几个点?之间距离有多远?常出现的位置是在中国的东南沿海还是在西北地区?这些地点又有什么样的特性。
另外,安装的APP哪些是安装了但是好长时间没有用?这又能提供什么样的信息。
天了噜,十万个为什么?不可否认的是,这些特征取值很有学问,是取01值还是更具体的权重,完全是个技术活。
路瑶一边介绍,一边冒出“星星眼”。因为在比赛中出现了非常有想象力的做法,而她在做项目过程中根本没有想到!
当你预测出结果之后,结果是不是可以作为特征反馈到模型?比如,预测年龄和性别的分组,性别相对是好预测的,准确率高一些,预测后把性别特征返回来是不是可以提高年龄的预测?年龄准确率会低一些,但是一些特殊的年龄段特征比较明显。如果把这些找出来之后再返回到模型里面,是不是也能提高整体的结果?
做完特征工程之后,进入到调模型的环节,这也是考验数据科学家经验和技巧的活。单一模型下调参数的时候,最简单的初始参数怎么选?是给一个随机值,还是给一个特别值?对于收敛速度可能会有很大的影响。
在模型集成上,学问就更多了。以神经网络为例,在神经网络里设计神经元,要知道每一层有多少个、有多少层,在模型集成里面也要有类似的思想。这些模型分成几层,谁和谁是并联、谁和谁是串联关系,如果是串联关系,下一层要处理上一层什么样的信息,是直接处理结果,还是误差或是什么。
有了好模型、好特征,提交了结果,在排名上很靠前,是不是这个事就搞定了,就可以拿到奖金了?
呵呵哒,真不一定。
还有一个大敌叫过拟合。
过拟合的方法在特定数据集里会表现非常好,但是这个数据集稍微一变,模型性能就迅速下降。
此次比赛分测试集和训练集,训练集是把所有的信息都告诉了选手,然后在测试集里要推测分组。
选手可以看到的是提交结果后的公开榜单,但私密榜单却只有管理员能看到,但比赛结果却是由私密榜单决定的,公开榜单仅供参考。
公开榜单的测试集只包括了1/4~1/3的数据,而 Kaggle 又不限制提交次数,如果你在公开榜单排名靠前,那么呵呵,有可能在私密榜单排名很惨。
如何解决这个问题,Kaggle 的老司机告诉你,永远要做交叉验证!!!!拿小本本记下来!!
迄今为止,虽然大赛还未正式公布获奖名单,但是在kaggle该大赛主页上,私密榜单已经出炉!我们来看一下——
这次比赛也有几个有趣的点,可以简单扒一扒!
1.TalkingData 首席数据科学家张夏天告诉雷锋网(公众号:雷锋网),虽然数据量比较小,只有约20万组,但是却是“稀疏”数据,即拿来真实数据进行脱敏后,有些数据可能维度不齐全,相比于一些比赛提供的标签齐全的数据,意思是,难度加大,你开心就好。
2.在 Kaggle 社区,第一次出现 TalkingData 中国的数据,上面的大神对此很感兴趣,甚至把kaggle 排行榜上所谓的“上古神兽”炸出来不少,Kaggle 比较牛的那些人玩的时间长了,兴趣不大,已经不太爱在平台上出现。Kaggle榜单前10名里有7名参加TalkingData 的比赛,前20名中有14名。是的,中国就是个神秘的国度……
3.最后有70多个国家的参赛选手提交了结果,选手最多的不是中国……是美国。那第二呢?第二依然不是中国,是印度,第三才是中国,含台湾、香港地区,第四是俄罗斯,第五是英国。
4.在 kaggle 的 TalkingData 大赛社区里,由于数据来自中国,很多选手需要讨论中国国情,最热衷给大家科普中国国情特征的是一个法国兄弟……