“第一屆騰訊高校算法大賽”初賽失敗總結

經過一個月的無用功,竟然都沒有走進複賽,失望的心情難以平復。在知道這個消息的時候立即寫一篇失敗總結,讓自己獲取一些經驗。這篇總結我將按照《精進》這本書裏面提到的幾個方面進行總結:信息,預期,結果,進度,工具,情緒,阻礙,優勢,缺憾,意義。

賽題

騰訊社交廣告高校算法大賽是面向高校大學生的算法大賽,作爲騰訊核心的廣告業務單元,騰訊社交廣告通過對海量社交數據進行深入分析,構建多樣廣告場景,與8億用戶連接對話。在大數據、機器學習領域的持續創新投入,驅動社交廣告生態發展。本次大賽旨在開放騰訊在社交和數字廣告領域的真實數據,面向高校學生徵集最智慧的算法解決方案。
網址:http://algo.tpai.qq.com/

信息

在研究生期間我特別關注大數據類的比賽,不過之前的幾次由於在實習或者其他的事情,都是淺嘗輒止。每一次只是提取了部分的特徵,套一個模型,結果不算好也不算太壞。這次我在學校,經常晚上都用來寫代碼,還吸取了之前的教訓,不是單打獨鬥了,拉上兩個小夥伴一起搞定這個事情。在他們的陪伴下,我終於完整的走完了整個初賽。
在這次的比賽裏面,我經常在關注比賽的羣消息,裏面經常有人討論賽題中的小的trick,重要特徵之類的,還有官方微信平臺上的分享。後面在遇到bottleneck,我常常翻閱羣消息,確實得到了幾個很好的idea。還是可能遺漏了一些重要的信息,還要kaggle的開源的代碼值得我去研究。這次比賽中,我研究了兩份代碼,也是主要看特徵和模型,這是一個特別重要的點,他山之玉可以攻石。我還是沒有很詳細的研究這些代碼,只是粗略的閱讀了源代碼,並沒有考慮這個特徵跟這個比賽有沒有什麼關係。但是也不能完全依賴這些open的code,畢竟不同的賽題有不同的問題。這裏面我缺少與其他隊伍以及自己隊友的的充分交流。這一點未來需要謹記。

預期

在參加這個比賽之前,預期的是每天晚上9點之後開始打比賽,結果最少也要擠進複賽。形成這樣的預期是由於我實習的經歷以及我參加過幾次類似的比賽。造成預期與事實之間的偏差應該有多方面的原因:

我的預期有點阻礙了事情的進展,在第一天的時候,只利用了基本的特徵表,我們取得了第七名的好成績。但是隨後的30天中一直在往下掉,只有少數的幾次提升了。在我的整個預期中,覺得按照這樣,肯定能夠進入決賽。所以一開始我並不是很急。而在後期的時候,成績一直提不高,我就有點急躁了,沒有靜下心來好好想這個問題。其實在整個比賽的過程中,我都是由於現實的因素沒有好好的靜下來思考過這個問題,就一股腦的堆特徵。

結果

我在6月7號下午還在寫代碼,完全忘記了那天是初賽截止日期。還以爲是10好,所以還有很多工作沒有來的及做,只提交了一個半成品,結果當然不好啦。

進度

前期太慢,後期太急躁。沒有一個嚴格的進度規劃!!!!

工具

這裏我使用了xgboost, scikit-leartn, pandas, numpy, jupyter(這要感謝隊友童大神,謝謝完成了一臺服務器的所有環境配置,沒有硬件基礎,根本沒辦法提取那麼多特徵,雖然並沒有什麼卵用)。

情緒

在做這件事的過程中,我的情緒狀態是有問題的,要不特別懈怠,要不特別緊張。在這過程中,我並沒有有意識的調整自己的情緒。這裏需要改進,找一個安靜的環境,仔細的分析這個題目。

阻礙

這個比賽過程中的阻礙是有的,就是現實中太多的干擾的事情了。現實中的事情更重要,沒有合理的安排好自己的時間。恩,沒有合理的安排好自己的時間,是我遇到的最大的阻礙。以後謹記,合理的安排好自己的時間。每天都要列一個TodoList,這將有利於自己安排好自己的時間,能夠有條不紊的安排自己的時間。說道這,我在大學期間,有一個很好的方法,就是每天在早起刷牙的時候,想好一天要幹什麼事情。講每個小時需要乾的事情都想一遍。並不需要專門拿筆記下來,堅持就是勝利!!!!!!嚴格安裝時間計劃表來執行!!!!!!!!!!!!,這是我送給我接下來一段時間的話。

優勢

這個比賽中,我的優勢應該在於我很早就接觸大數據,數據挖掘了,做過幾次比賽。沒有充分的利用隊友的力量,open的資源。主要的收穫,理清楚了一條應該怎麼打比賽的思路流程,以及怎麼找特徵和意識到數據預處理的重要性。在這過程中,通過看open的code,接觸到了更多很優秀的解決方案,自己的python代碼水平提高了,對問題的理解加深了。自己還要很多需要向其他人學習的,交流,閱讀open code等等,仔細研究模型,有條理,這些都是我欠缺的。

缺憾

在這期間,我的遺憾是沒有進入決賽;在自己沒有準備好的情況下已經結束了;整個代碼有點亂;沒有謀而後動;等等在這次比賽中,我暴露如下一些不足。
第一,從題目的角度,我並沒有完全的理解這個問題。只是把這個單純的當做了一個分類問題來做,但是實際上數據挖掘是跟具體的問題有這息息相關的聯繫的。在做挖掘的時候,一定要把這個問題理解透,並且將自己代入到這個題目中,想象一下,如果我是用戶,有哪些因素影響了我自己是否下載,這個將有助於找到強相關的特徵。 雖然我們在比賽的一開始的時候做過思維導圖,但是那個是一個大致的方向。
第二,沒有好好的觀察數據。在數據中找到一些userID, createID, positionID等將這些數據可視化,或者print出來,好好仔細的觀察這些數據,將有利於自己理解這批數據,並且能夠找到這些數據的問題,比如重複的用戶,只點不下載的用戶,誤點了的用戶等等。也可以將一些分佈打印出來,觀察是不是有強相關行。
第三,並不是越多特徵越好。另外兩個隊友對數據挖掘並不是很熟悉,所以幾乎都是我在做特徵提取,經常我提取了一堆特徵。但是這些特徵並沒有效果,有的還會有反作用。一次性都扔到模型中,其實我在認爲的引入噪聲。我覺得我應該在觀察數據,並且在代入的時候確實相關的情況下再引入這個特徵。或者一條一條的特徵引入,並觀察結果以及使用excel記錄。有的特徵單運行都話費了十幾個小時,所有有針對性的找特徵真的特別重要。在整個比賽中我找了有300多種特徵,將這些特徵全部用來訓練,很快的就產生了過擬合!!!
第四,沒有做好去噪和預處理的工作。這批數據裏面肯定有很多異常數據,我並沒將這些數據去除,就直接扔到模型,當然不會得到好的結果啦。
第五,對模型的理解還是有一點欠缺。在xgboost模型調參的時候這一點影響了我的工作。
第六,線下訓練集和測試集的劃分。一開始的時候,線下訓練集和測試集的劃分沒有做好,耽誤了整個線下找特徵的工作。

意義

讓我清醒的認識到了,自己要學的還要很多!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章