大数据比赛总结
---恢复内容开始---
我们参加的大数据竞赛初赛已经结束,经过这些天的努力,我们也成功进入复赛。我们在初赛的最高成绩的准确率为97.65%;作为一名大一生,在与那些名校的竞争中,我们有这样的成绩,我们倍感高兴与自豪;现在我想从我们刚开始参加比赛时做一个简要的总结。
matlab入门
作为一名大一新生,别说对于大数据,对计算机都是小白一只;所以我们优秀的指导老师让我们学习了一个专业处理大数据的工具——matlab。老师的见解很独特,他让我们一边学习matlab,又不落下我们的专业课的情况下,花了近一个月时间粗略地学习了matlab;老师认为只有实践才是硬道理,他希望我们通过这一个月的时间知道有MATLAB这一件工具,往后通过时间与实践熟悉它。正巧这个时候出现了腾讯的这一次大数据比赛——2017全国高校计算机比赛,比赛的方向是 运用大数据知识判断区分人工鼠标移动轨迹和机械鼠标移动轨迹,这将是一次很好的锻炼。
python入门
很显然这是一次大数据比赛,运用的肯定是一些专门处理大数据的计算机语言,如果说有人用Java去比赛,那我相信这人一定是旷世奇才、一朵璀璨的奇葩;这个时候老师推荐我们学习Python,我们按照学习matlab的经验,又花了一个月时间学习Python;关于Python的入门是我博客里提的最多的,它记载了我们Python的学习过程,从最初的艰难安装、轻松入门、艰难学习算法、艰难运行算法、艰难寻找特征 到 艰难寻找特征、艰难运行算法 到 艰难寻找特征、艰难运行算法 到......(不是卡壳,而是最真实的情况)
大数据比赛
这次大数据比赛,目的是学习MATLAB和Python语言、掌握算法、以及学习 机器学习 这门神奇的学问。我们参加比赛的模型是随机森林,随机森林的种种优点这里就不再提了,在博客里曾经写过,学习过算法的同胞们都知道随机森林的优越性——简单、稳定,但是这种算法的缺点也是很棘手的——分数基础很高,但是提升慢、难,这里是个人见解,不赞同的完全可以指导在下:
当我们找到8个特征的时候成绩已经达到58.6分了,随着特征增加到14个之前分数一直在递增,等到第14个特征一加进去,分数就立即降回59分,当时是6月3号,整个团队第二天都几乎都去复习考试了,觉得没戏。。。
后来我们的特征增加到17个的时候,分数就趋于稳定在67分左右了,但是这个时候陆陆续续开始考试了,比赛几乎放一边了,几乎是在6月30才提交一次数据,这一次数据提交的非常有意义,76分,我记得那个时候前两百名也就是80多一点,那个时候组员都几乎被自己吓一跳——没错,这是实力
但是有点飘飘然,结果接连提交的6次数据都是73、74,神奇般地走下坡路。这告诉我们一个道理——骄傲会死人的
这时我们记得英明的指导老师曾叫我们寻找特征组合,就是在已有的特征中找到一组分数高的特征,一组的意思:比如已有24个特征,选出14个或者多一点,这一组的分数高于全部特征加一起的分数,我曾找出3个特征,这3个特征的分数就可以达到最初的分数 58分!!神不神奇.....
曾经一组员——华老师(很能干,有能力,尊称为华老师)用Python做出GUI平面,作用就是是上面提到的筛选特征组合,自从有了这个程序,分数就跟开了挂一样一路飙升,最优成绩97.47,当然并不是一个平面就可以达到这种成绩,还有另外两名优秀成员一直在提特征
特征提取
这是比赛的最重要的部分之一,选择好模型之后便是选取有用的特征,我们花了大量的时间在这;期末考试临近的时候,我们必须中途停下来一边应付考试,一边抽出点时间看看那些鼠标轨迹图;现在我来讲一下我们是如何提取特征:
用程序将一部分图画出来,通过着他们之间的共有的规律来找特征,但是我们很难辨别找出来的特征是不是普遍存在、是否有较强的实用性,所以我们会把提出的特征单独在3000测试集中测试出分数,并且后来通过学习他人,我们学会使用xgboost来观察特征是不是普遍存在
特征的提取是非常单调乏味的,一般人都不喜欢天天做,我们的特征数量到最后比赛结束也不是太多,这是我感到最后悔的地方,因为我发现别人的随机森林有130多特征,而我们进入复赛时只有60多个,去除一些测试起来分数低的,就不到40个了,原因我总结了一下:
1.没有经验,比赛前其实就只是认为有50多个特征就可以了,认为随机森林50多个特征就是不小规模了
2.因为曾经达到97分的时候我们的特征也确实就只有20多个
我比较感谢我们小组找特征的同学,很不容易,我切身体会到找特征的困难与乏味
我记得那天是暑假返乡,小编我买票买晚了,只有站票,而且是站一晚上,于是我站着看了一晚上的鼠标轨迹图,找了几个特征,结果只有一个被采纳了,这种苦差事,就是努力了不一定有收获
我们曾使用wx来制作了一个gui来筛选最佳的特征组,节约找特征组合的时间;但是随着特征数量的增加,这种方法筛选特征花费的时间越来越多,所以我们采取了另一种方法:我们将所有的特征加入,然后用Python程序来识别他们的重要性并进行打分,选取重要的特征,这种方法简单有效,此外也可以通过matlab画图把提取的特征通过图形呈现从而简单明了了判断特征是否明显(强弱)。
特征处理
我们发现分数高的同特征加入之后,比赛分数并没有提高多少。我们碰到了瓶颈,我们很困惑,不明白为什么强特征加强特征为什么分数反而低了
我们将原因归咎于:特征的预测数据交集较大(其实这种解释我并不满意,因为我们的特征选择方面已经避开很多相似特征,什么是交集?我们谁都答不出来)
后来我终于明白了交集的意思:特征太少,或者特征并不是有效特征,才导致随机森林分类不明确,模型糊涂了,结果会好吗?
经过老师的指导,我们选取了一些分数并不高的特征加入分数高的特征中,这就是前面提到的组合,发现分数提高很多,这个方法也一直用到比赛结束。
结语
我们只是大一新生,能进入复赛,已经是莫大荣耀,虽然决赛并没有进入前50,没有证书,但是没有遗憾了,面包以后肯定会有的。最后我想说:有很多人认为搞大数据很难,其实你只要找对方法,坚持下去,那就并不难,这是一个不断学习的过程,我的老师曾经对我们说过,机器学习就是一层窗户纸,捅破了,你就知道原来这么简单。
---恢复内容结束---