不知道看完前三篇的人裏面有沒人真正操做一遍,而後去智慧中國杯的官網提交結果的。若是有的話,說明你真是FEA的粉絲,咱們應該支持你,同時確定也很沮喪,由於提交的結果不知排到哪裏去了(150名之內找不到)。算法
榜單刷新的很快的,不進則退哦!dom
好了,廢話很少說,咱們正是開始機器學習的優化之旅。機器學習
1、優化路徑學習
一、概述測試
結合本人的經驗給出了一個大體的作機器學習工程方法,以下圖:優化
接到一個項目或任務後,結合項目的需求和背景,對數據進行有針對性的探索,而後再評估數據樣本是否不平衡,須要對數據重採樣等處理,並能給出主要的維度信息出來。人工智能
接下來就能夠精心初步的算法選擇和參數的肯定,結合項目需求和自身對算法的瞭解程度來進行選擇,沒有惟一答案,必定要善於突破。spa
而後就可進行訓練評估,結果還基本滿意就能夠進入深刻分析數據不斷增長和變換維度上來,維度的選擇對模型的成功起相當重要的做用。.net
當你實在沒有新的維度增長是,這是能夠考慮經過微調參數,看能不能提升模型的準確率,這時也必定要注意過擬合的問題,以避免實驗結果很好,一實際應用就不行的怪圈當中,最後固話模型。設計
仍是那句話,這是腦力和體力的結合,堅持天天打怪升級,你能夠的!
二、重採樣
由於樣本數據的不均衡性,勢必會致使分類結果的傾斜,致使準確率虛高(好比都預測資助爲0)。本次的樣本中,獲得資助的只佔15%左右,若是不對數據進行過採樣的話,勢必影響訓練的結果。
這時咱們可使用重採樣的方式來平衡訓練數據,重採樣又分爲兩種:
過採樣就是重複增長一部分小分類的樣本數據;
欠採樣就是刪除一部分大分類的樣本數據。
咱們的樣本總數很少,因此經過過採樣的方式,在訓練數據中增長小分類的數據,來達到均衡的目的。
首先過濾出資助金分別爲1000、1500、2000的數據,分別保存爲df表t一、t1五、t20。此處以過濾1000的數據爲例。
分別增長5倍1000資助金、8倍1500資助金、10倍2000資助金的數據量。此處以增長5倍1000資助金爲例。
進行分組統計
繪製餅圖,直觀感覺過採樣以後訓練數據的分佈狀況
這個5,8,10是經驗值,到最後的時候均可以進行微調。
2、算法選擇
算法的選擇對於初學者來講是一個障礙,由於算法實在太多了,想把每個算法的每個細節都吃透,每每是徒勞的。這就是好多人的一個疑惑,我要搞機器學習搞人工智能,是否是先要去念個博士?都說股票市場是經濟的晴雨表,說明股票和經濟是有很大關係的,那你有沒據說哪一個人爲了炒股,先去讀個經濟學博士的。
不要躊躇千里不敢邁出一步,機器學習重在實幹,對算法不全瞭解沒關係,你能夠選擇一到兩個重點突破,其餘的知道就行,真到用時再去深鑽。
FEA經常使用分類算法一表:
而真正在工程實踐中,能夠選擇複合型的算法,如GBDT和隨機森林,它們都是有多棵決策樹組成,對結果進行屢次迭代,效果更好。在屢次大賽中都看到他們的身影。我仍是給你們推薦幾個算法,對於初學者能夠先看決策樹,這個算法比較簡單且是個白盒算法,就是你建好模型後,能夠將整個決策樹圖形展現出來,找到每一個分支的邊界,特別適合那些喜歡較真的同窗。^V^
三、參數優化
參數優化是個大命題,這裏一樣已GBDT和隨機森林的最經常使用有:n_estimators(子模型數量),random_state(隨機對象)等。子模型數量越大精度會越高,但有可能形成過擬合,預測時反而效果很差;隨機對象對預測結果影響很小,根據本身的喜愛先設置一個。
初步選擇以下:
用a表和b表作GBDT迭代決策樹分類模型
用a表和b表作隨機森林分類模型
四、緯度選擇
通過前面幾步以後,剩下最重要的就是基於業務的理解,作出好的維度特徵數據來,這是一個模型可以成果的關鍵。
上篇文章中,只使用了消費數據的維度,並無成績,圖書館,教室等維度,這些信息對於提高準確率也是有用的。
一、成績維度
加載成績數據
合併表
修改字段名
對成績數據按照學院進行分組,統計排名最大的
重置索引
關聯表
排名比值
二、圖書館進出維度
加載圖書館進出數據
合併表
修改字段名
以人爲單位,對圖書館進出的數據進行分組統計
重置索引
修改字段名
三、宿舍進出維度
加載宿舍進出數據
合併表
修改字段名
以人爲單位,對宿舍進出的數據進行分組統計
重置索引
修改字段名
過濾出全部進入宿舍的數據
以人爲單位,對進入宿舍的數據進行分組統計
重置索引
修改字段名
關聯表
五、注意事項
在整個維度計算和選擇的過程當中,我也發現了幾個好玩的事情,給你們介紹一下,避免你們從新跳到坑裏面去。
一、學生ID
在剛時作這個系列的時候,我就一直和官方的提供的開源程序作了對比,明明個人維度比之要多要好,但在成績上就是沒有超過官方的。最後通過我仔細的排查才發現少了一個我一直認爲和這個預測沒有關係的學生ID。
這個ID是從0開始,顯然是通過脫敏處理的,但按照什麼樣的規則咱們並不清楚,但不要少了這個維度,他可能包含了某方面的信息,加上這個維度後我就完全超過了官方提供的基準成績。
二、成績數據要訓練和測試集合並後再分拆
本次競賽的數據直接分紅了,訓練和測試數據,若是沒有交集是不必合併後才分拆的。但成績數據只有排名,若是不合並,你根本不知道這個排名的意義,因此要合併起來,找出最大值,計算每一個人的排名比值(自身排名/最大排名),而後在根據預測人數據進行分拆。這裏麪包括了學院ID等信息,都對預測有影響。
三、不是全部維度都是積極的
我講了維度很重要,維度的質量和多少都很關鍵,通常意義上來說有效維度越多越好,但維度並非都是積極向上的,有些維度的引入反而會帶來消極做用,影響你的成績。
在第二篇的《學霸去哪了》文中我分析了深夜出入宿舍的維度,我就沒多想,直接加入進行訓練了,結果反而致使成績大幅降低。看來深夜出入宿舍的維度和資助關係不大,至少和本次的數據關係不大。
因此你們在選擇維度時,也要精心考慮設計過。
六、小結
經過本文的詳細解讀,精準教育資助的這個話題就告一段落了。
喜歡這個系列的朋友不要忘記給我點贊哦,你的支持是我更新最大的動力。