Follow me!百万奖金由你拿 | 精准资助机器学习(三)
2019獨角獸企業重金招聘Python工程師標準>>>
通過前面兩篇的數據探索,我們對教育精準資助的數據已經有所了解了,接下來我們就要建立模型來進行機器學習了。
一、機器學習之分類概況
大千世界中“人以類聚,物以群分”,就是指具有相同(或相近)特征的事物總是歸于一類或者說能聚在一起的事物總是擁有相同(或相近)的特征。
機器學習最基本的研究就是解決分類問題,比如哪些郵件是垃圾郵件,哪些郵件是正常郵件,哪些訪問(日志)是正常的,哪些訪問是不正常的。對于我們這次教育競賽來講就是要分出哪些人需要資助1000,哪些人需要資助1500,哪些人需要資助2000,哪些人不需要資助的問題。
解決這些問題最常規的辦法是編寫規則條件,滿足某個條件是什么類,滿足另外的條件是什么類。當問題復雜到一定程度,即不能寫出明確的規則或者規則很復雜時就可以考慮用機器學習的方法來解決。
那么機器又是如何學習的呢?看下圖:
首先,機器學習是要數據的,而且是兩類數據:一類能標識人(和物)的特征數據,如每一人的消費次數,消費總額,單筆最大等等;另一類則是標記了人的分類的答案數據(或標記數據),就是需要人根據經驗來告訴機器哪些人是一類的,哪些物是一類的。這樣再選擇合適的算法,讓機器來學習。給的數據越多,機器就學習的越多,機器就會變得越”聰明“。我們把這個機器學習的過程叫做訓練,訓練的結果就是模型。有了這個模型后,就可以進行預測,看下圖:
首先是要預測的數據的格式和特征數據的格式一樣,不能添加或減少特征,也不能變更特征的名稱和順序,然后使用模型來預測,最后就會得到預測結果。
整個機器學習的過程就是這樣了,還簡單吧,下面我們就用教育資助的數據操練起來。
二、機器學習過程
(一)數據準備
精準資助主要集中反映在日常的消費數據中,我們先使用消費數據來構造特征數據和標記數據(答案數據)。
特征數據的一個要求是使用一行來描述一個對象(人或物),對象是不重復的,特征數據均為數字類型,不能出現其他類型,如果是字典類型,如性別男女也應該用0,1表示。
標記數據的要求是和特征數據一一對應,同樣一行代表一個人(或物),標記需要使用整數形,一個數代表了一個分類。這里的專業叫法是標稱型(變量),取值是有限的整數,不能是小數(分類再多總有個最大值的,小數就不知道是哪一類的了,呵呵)。和標稱型對應的是數值型,如果標記的答案是數值型的,那就不是分類問題了,與之相對應的是機器學習的另一類應用回歸。
Part one:以同學ID為對象來計算消費特征數據
1、加載一卡通訓練數據
2、修改列名
分別修改字段0、1、2、3、4、5、6為id、pos、address、catalog、time、cost、have
3、根據id進行分組,然后根據cost字段計算每個人的消費情況(消費總額,單次最大消費,單詞最小消費,消費均值,消費中位數,消費次數),結果保存到df表card_cost。
輸入以下統計函數:
cost_sum:sum,cost_max:max,cost_min:min,cost_mean:mean,cost_meidan:median,cost_count:count
4、然后計算卡內余額(最大值,最小值,平均值),結果保存到df表card_have
輸入以下統計函數:
have_max:max,have_min:min,have_mean:mean,have_median:median
5、兩張合起來,一個人的消費狀況就非常清晰了
6、查看關聯后的表?
Part two:計算資助金額標記數據
1、加載助學金發放訓練數據
2、修改列名。分別修改字段0、1為id、money
由于有資助的不一定有消費,有消費的不一定出現在資助名單中,所以card_money和stn的行不一定是一一對應的,我們一定要確保card_money的數據中沒有空值,card_money和stn的行一一對應(數量一致,關連一致)。
可以采用如下方式:
1、還原card_money的index為id列?
2、以資助名單為準關聯消費記錄
3、用-1填充a的空值
4、選出新的特征數據
5、修改card_money中id列的類型為int
6、設置id列為索引
(二)選擇算法
有了特征數據和標記數據,接下來我們就要選擇算法了,FEA支持的分類算法有以下幾種:
也許你該問了,這么多算法我該使用哪個呢?這就和你的數據息息相關了,這也是經驗的問題。
而在實際的工程中,我們往往會使用多種分類器,來比較一下分類的效果再做選擇。那你也許又該說了,這么多算法一個一個試下來,不是很麻煩嗎。呵呵,FEA想你之所想,在新的版本中FEA將添加自動分類功能,自動進行多種分類器的訓練并打分,有你來選擇適合你的一款。
本次我們使用gbdt分類器和svm來做下面的實驗。
(三)訓練模型
訓練數據構建模型
1、設置工作區
2、使用迭代決策樹分類算法gbdt,構建模型和訓練數據,一步完成,模型名稱命名為gbdt
3、評估模型,給模型打分,結果保存到DF表score
?4、查看結果
結果的取值在0到1之間,代表預測的準確度,最大為1,準確度100%,千萬不要看到1就很開心哦,很多情況下1代表了預測結果和你的數據完全擬合,或者說擬合,當真的有新數據來預測時,反而很不準。可以換一個算法試試。
5、使用向量機分類算法svm構建模型和訓練數據,一步完成,模型名稱命名為model
6、評估模型,給模型打分,結果保存到DF表score
7、查看結果
(四)機器預測
模型構建訓練好后,我們就可以來進行預測了,預測數據和特征數據的計算方法一樣,就不在這里詳細描述了。
預測數據的文件為match/fund/card_test.csv
預測人員的文件為match/fund/studentID_test.csv
假定預測數據的DF表為card_money1,則預測過程如下:
1、使用gbdt模型預測
2、使用svm模型預測
3、查看結果
是不是很簡單?
沒錯,照上面的步驟玩下來,你就完成了機器學習的基本過程,就對機器學習有了初步的了解。
(五)保存模型
機器學習是不是每次都得經過上述步驟(準備數據、訓練模型、預測)才能應用呢?
不是的!
當我們訓練好一個模型后,可以將模型保存下來,可以分發和部署到新的環境(機器)中直接進行預測,而不用重復訓練過程,具體的語句如下:
1、保存gbdt模型預測
?2、保存svm模型預測
3、查看保存的模型
其中0列存儲的就是模型文件的名稱,然后就可以到數據目錄里下載此模型文件。
發布模型和此相反,先上傳模型文件到數據目錄,然后加載模型。
三、小結
本文以可視化操作的方式結合教育精準資助數據講解了機器學習的典型過程,為還在機器學習大門口徘徊的人們點亮了一盞明燈,不要猶豫不要徘徊,機器學習,你可以的!
對于機器學習的一些高級話題,如特征選取,參數設置,過采樣等將在后續的系列中進行探討和交流,教你如何打造一個準確率和召回率等都滿足實戰的模型。
在此也和大家叮囑一下,模型的優化是無止境的,要耗費大量的腦力和體力。
FEA準備好了,你準備好了嗎?
轉載于:https://my.oschina.net/u/3115904/blog/839513
總結
以上是生活随笔為你收集整理的Follow me!百万奖金由你拿 | 精准资助机器学习(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring解决ajax跨域问题
- 下一篇: bootstrap 标签页tab切换js