2018.3.20號左右,由於研究生的數據挖掘課程的老師要求咱們集體參加一個比賽 ,因此在比賽參與時間、比賽難度和比賽類型的幾種條件下,咱們選擇了2018平安產險數據建模大賽-駕駛行爲預測駕駛風險比賽,這個比賽是由平安保險公司提供數據,藉由DataFoundation和CCF聯合平臺舉辦的賽事。參加比賽一共兩個月,由於是初次參加參賽,加上投入的時間不夠,因此結果不是很好。可是此次經驗是爲了下個學期再參加比賽積累,因此特此總結一個整個比勝過程,檢討一下。html
比賽數據、比勝過程記錄、比賽代碼都已經上傳到github 地址https://github.com/20130353/pingan_competition.git,方便隨時回顧。python
比賽最開始的時候,由於時間不夠,臨時分析了一下數據。可是此次比賽不同的是,有線上和線下數據的區別,咱們只分析了線下數據,徹底沒有考慮線上數據。做爲數據分析人員,作比賽的時候咱們必需要充分了解數據特性和數據分佈,同時須要打比賽的時候要肯定線上和線下數據是否一致。並針對結果進行不一樣的處理。固然不少時候線上數據和線下數據分佈應該是同樣的,由於線下數據是從線上數據中隨機抽取的一部分。git
正如第一點所說,咱們只分析了線下數據沒有分析線上數據,可是事實上比賽方只是把線下數據做爲測試用例,真正的訓練數據和預測數據都在線上,因此咱們一開始分析的只是測試用例,這對後面的數據挖掘徹底沒有用。github
沒有肯定數據的範圍和缺失也意味着沒有預處理,通過後來的預處理結果和沒有預處理的結果對比,發現通過預處理的結果效果提議提高0.01。因此最開始仍是要預處理。segmentfault
小組每一個成員對於丟失數據的處理方式對不同,每一個人有每一個人的道理,可是事實上訓練數據達到百萬級別,丟失數據和錯誤數據的比例很小,不一樣的預處理方式影響很小,因此沒有必要考慮太複雜的預處理方式。同時考慮到此次比賽的平臺計算要求,咱們應該選擇代價的方式處理數據。因此這個問題告訴咱們,預處理的方式不必定只考慮最後結果,要在軟件和硬件兩方面的考慮下,選擇最合適的方式。工具
由於對python不熟,因此寫代碼很是慢,即便是有想法可是實現想法可能須要幾天甚至是幾個星期。學習
由於比賽平臺的硬件條件不好,因此對時間和內存要求很大,咱們在優化代碼方面耗時很是長,可是事實上是沒有必要的,一方面咱們能夠直接從網上找最簡單的方式優化代碼,另外一方方面能夠直接問同窗,畢竟咱們是一個班參加比賽,你們遇到的問題差很少,爲何不直接請教同窗從而快速解決問題呢?當時我想問同窗時,同組成員以爲這是別的同窗的辛苦勞動成果,擔憂人家是否會給咱們,擔憂不少問題,可是我以爲這只是個比賽,同窗直接就是相互學習,沒有必要把競爭放到這裏來,可是我仍然是在嘗試了好久以後才問同窗的,中間耽誤了很多時間,因此我應該吸收教訓。以求在最短期內解決問題,比賽就是要在最短期內找到最好的結果。測試
原始數據只提供了九個特徵,因此咱們得本身創造特徵,咱們找了不少資料創造了不少合理的特徵,可是結果並很差,因此咱們認爲是特徵的問題。可是有同窗不斷實踐證實特徵的結果搭配好的模型能夠提醒效果。而咱們從頭至尾只使用了一種模型,遇到結果很差,咱們就認爲是特徵很差,否認了這些特徵,這樣實際上浪費了這些特徵的價值,同時也是浪費時間。優化
詳細地說就是眼界不夠廣,不知道不少現成的工具包,只知道sklearn的幾個基本工具包,可是sklearn裏的模型都是很舊的模型,效果也通常。最近不少的xgboost、lightBGM等模型,就用模型的默認值就能夠取得很好的效果。.net
感觸很深的是代碼寫完以後常常是線下測試數據沒有問題,可是線上就出錯。寫代碼的時候徹底沒有想過線上是否可行,每次等待在線測試幾個小時以後出bug了才知道,可是浪費幾個小時的時間。這也反映出本身寫代碼的不嚴謹性,因此之後要多考慮看看在提交。
在做比賽的過程當中參考了不少有意義的博客,在這裏mark一下,爲後面做比賽作準備。
博客中重點要看的是:
整套流程博客 https://blog.csdn.net/guoxinian/article/details/73740746
天池比賽經驗總結 - http://www.javashuo.com/article/p-yajnrfxm-p.html
由於這兩篇博客的都包含整個流程,對剛開始作比賽的同窗來講,這個具備很大的指導意義。其中天池比賽經驗的博客的實戰意義更好。
剩下的就是一些常規博客。
在比勝過程,我養成了記錄文檔的習慣,同時又將文檔分紅python學習記錄文檔、比勝過程記錄兩個文檔,我以爲這樣記錄有助於幫助思考和記錄過程,有時候由於研究生學業太忙一段時間沒有作比賽就會忘記作到哪裏了,須要話很長時間來回憶,有文檔以後能夠直接查文檔,並且文檔的時候會有源源不斷的新想法冒出來,幫助擴展想法。
可是有個問題是,我是將比賽結果記錄和想法記錄記錄寫在一塊兒的,有時候要看本身的比賽結果就很不方便,因此下次做比賽須要把想法和結果單獨分開來寫。