智慧中國杯算法賽解讀 | 精準資助數據探索(一)

智慧中國杯是由DataCastle(數據城堡)主辦的全國大數據創新應用大賽,提供了百萬的競賽獎金,數據城堡的創始人周濤是《大數據時代》的中文翻譯者,在業內享有很高的名氣。算法

OpenFEA將對這次大賽進行持續關注和報道,以推動大數據在國內的發展,讓更多的人蔘與到大數據的應用創新當中來,爲社會培養大數據人才出一份本身的力量。微信

這次大賽分爲三個環節,第一是算法賽,任何我的和組織團體均可以參加,無資格限制,提交比賽結果便可。算法賽最後截止時間爲2017年2月20日,在此以前提交結果都有效,如今報名還來的及哦!機器學習

《智慧中國杯算法賽解讀系列》以算法資格賽爲關注點,將詳細解讀此次比賽的三個主題(教育、交通、金融)的算法和數據,爲您深刻了解這場大賽以及進入大數據分析的大門提供全方位的支持。學習

所以,此篇文章是這個系列的第一篇,將對教育主題的精準資助競賽進行數據的初步探索,也將帶你進入獲取百萬獎金的大門(哇,好多money ^v^)測試

1、(大學生助學金精準資助預測)概況大數據

大數據時代的來臨,爲創新資助工做方式提供了新的理念和技術支持,也爲高校利用大數據推動快速、便捷、高效精準資助工做帶來了新的機遇。基於學生天天產生的一卡通實時數據,利用大數據挖掘與分析技術、數學建模理論幫助管理者掌握學生在校期間的真實消費狀況、學生經濟水平、發現「隱性貧困」與疑似「虛假認定」學生,從而實現精準資助,讓每一筆資助經費獲得最大價值的發揮與利用,幫助每個貧困大學生順利完成學業。所以,基於學生在校期間產生的消費數據運用,大數據挖掘與分析技術對實現貧困學生的精準挖掘具備重要的應用價值。     優化

教育算法資格賽採用某高校201四、2015兩學年的助學金獲取狀況做爲標籤,2013~201四、2014~2015兩學年的學生在校行爲數據做爲原始數據,包括消費數據、圖書借閱數據、寢室門禁數據、圖書館門禁數據、學生成績排名數據,並以助學金獲取金額做爲結果數據進行模型優化和評價。 翻譯

本次競賽需利用學生在2013/09~2014/09的數據,預測學生在2014年的助學金得到狀況;利用學生在2014/09~2015/09的數據, 預測學生在2015年的助學金得到狀況。雖然全部數據在時間上混合在了一塊兒,即訓練集和測試集中的數據都有2013/09~2015/09的數據,可是學生的行爲數據和助學金數據是對應的。orm

此競賽賽程分爲兩個階段,以測試集切換爲標誌,2017年2月13日切換。內存

2、數據初探

官方提供的數據分爲兩組,分別是訓練集和測試集,每一組都包含大約1萬名學生的信息紀錄:    

 圖書借閱數據borrow_train.txt和borrow_test.txt;

 一卡通數據card_train.txt和card_test.txt;

 寢室門禁數據dorm_train.txt和dorm_test.txt;

 圖書館門禁數據library_train.txt和library_test.txt;

 學生成績數據score_train.txt和score_test.txt;

 助學金獲獎數據subsidy_train.txt和subsidy_test.txt(實際下載的數據是studentID_test.txt,即您須要預測的學生樣本)。   

訓練集和測試集中的學生id無交集,詳細信息以下(注:數據中全部的記錄均爲「原始數據記錄」直接通過脫敏而來,可能會存在一些重複或異常的記錄,請參賽者自行處理)。

OpenFEA爲作好本次活動的深度支持和報道,特下載了上述數據,參賽者能夠在互聯網上搭建的在線試用環境中直接分析此數據(請訪問www.openfea.cn的下載專區),全部數據放在match/fund目錄下,文件後綴名改爲了csv。

(一)助學金獲獎數據

在FEA的高級交互分析功能中,能夠很輕鬆的來將這些csv文件加載進來進行分析,示例以下:

#加載助學金髮放訓練數據

stn = load csv by match/fund/subsidy_train.csv with (header=-1)

#看數據量大小 (10885行)

show tables

#查看數據

dump stn

0列是學生ID,1列是發放金額,接下來修改列名,對發放的數量進行統計:

#修改列名

rename stn as (0:"id",1:"money")

#按發放數量進行分組

gt = group stn by money

#統計人數

stn_count = agg gt by id:count

#查看

dump stn_count

用圖看一下更直觀,plot stn by 04。以下圖:沒有助學金的佔85%以上。

助學金的另一個文件是studentID_test.csv,是須要最終預測的學生樣本,只有學生id一列,和訓練數據關聯重複,有10783行,和訓練數據(10885)是同一個量級。

(二)一卡通數據

一卡通的數據是學生的消費數據,能比較好的反應學生在學校的消費狀況,對本次比賽來說很關鍵,這部分數據在card_train.csv和card_test.csv。這兩個文件都很大,都在1G左右,裝載到內存要將近10G左右,通常的機器是跑不起來的,好在OpenFEA提供的在線環境是256G的,這點數據仍是小意思了。若是裝載數據的時間長的話,load數據時可使用:=,這樣就是在後臺執行,咱們不用關心超時,只要看任務結束就行了。

#加載一卡通訓練數據

card := load csv by match/fund/card_train.csv with (header=-1)

#產看任務執行狀況

show tasks

#看數據量大小 (12455558行)

show tables

#查看數據

dump card

裝載花了22秒,一共是1245.5萬,至關於每秒56.6萬條。(哈哈,FEA的速度比較給力吧!),下面看數據:

第5列是消費數據,淋浴只要5毛錢,看看真懷念學生時代啊。

接下來對列名進行修改,計算一下每一個人的消費次數,消費金額,最大剩餘金額和最小剩餘金額和平均剩餘金額,以及消費行爲的種類等。

#修改列名

rename card as (0:"id",1:"pos",2:"address",3:"catalog",4:"time",5:"cost",6:"have")

#根據id進行分組

gt2 = group card by id

#計算每一個人的消費狀況,消費總額,單次最大消費,單次最小消費,消費均值,消費中位數,消費次數

card_cost = agg gt2.cost by (cost_sum:sum,cost_max:max,cost_min:min,cost_mean:mean,cost_meidan:median,cost_count:count)

#而後計算卡內剩餘金額的最大數,最小數,平均數

card_have = agg gt2.have by (have_max:max,have_min:min,have_mean:mean,have_median:median)

#兩張合起來,一我的的消費情況就很是清晰了

card_money = join card_cost,card_have by index

#查查

dump card_money

看告終果也嚇一跳,總消費上萬的也好多啊,消費的均值也不高,整體狀況咱們使用card_desc = @udf card_money by udf0.df_desc來查看一下:

消費總額最高的是3萬多,中位數是8903,單筆最大的消費是4407元,中位數是300,有人單筆最低是93元,看來此同窗屬於土豪行列,出現的負數多是退款或誤扣等,這個要結合業務知識去判斷了,也能夠做爲噪音處理一下。

卡里保有金額最大爲4399元,中位數爲316元,還比較符合對學生的印象。

(三)小結

數據探索這裏,有經驗的老司機均可以直接使用FEA中的機器算法進行訓練了!固然本篇是數據探索的第一篇,下一篇將繼續探索剩下的4種數據,機器學習要放到第三篇。哈哈不要急,只要你關注OpenFEA的微信公衆號,跟着咱們的解讀節奏,必定能讓您開啓機器學習的大門,贏取百萬獎金也不是夢哦!

相關文章
相關標籤/搜索