---恢復內容開始---
我們參加的大數據競賽初賽已經結束,經過這些天的努力,我們也成功進入復賽。我們在初賽的最高成績的准確率為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,沒有證書,但是沒有遺憾了,面包以后肯定會有的。最后我想說:有很多人認為搞大數據很難,其實你只要找對方法,堅持下去,那就並不難,這是一個不斷學習的過程,我的老師曾經對我們說過,機器學習就是一層窗戶紙,捅破了,你就知道原來這么簡單。
---恢復內容結束---