【機器學習PAI實踐八】用機器學習演算法評估學生考試成績

李博Garvin發表於2017-06-12

(本文資料為實驗用例)

一、背景

母親是老師反而會對孩子的學習成績造成不利影響?能上網的家庭,孩子通常能取得較好的成績?影響孩子成績的最大因素居然是母親的學歷?本文通過機器挖掘演算法和中學真實的學生資料為您揭祕影響中學生學業的關鍵因素有哪些。

本文的資料採集於某中學在校生的家庭背景資料以及在校行為資料。通過邏輯迴歸演算法生成離線模型和學業指標評估報告,並且可以對學生的期末成績進行預測。

二、資料集介紹

資料集由25個特徵和一個打標資料構成,

具體欄位如下:

欄位名 含義 型別 描述
sex 性別 string F是女,M表示男
address 住址 string U表示城市,R表示鄉村
famsize 家庭成員數 string LE3表示少於三人,GT3多於三人
pstatus 是否與父母住在一起 string T住在一起,A分開
medu 母親的文化水平 string 從0~4逐步增高
fedu 父親的文化水平 string 從0~4逐步增高
mjob 母親的工作 string 分為教師相關、健康相關、服務業
fjob 父親的工作 string 分為教師相關、健康相關、服務業
guardian 學生的監管人 string mother,father or other
traveltime 從家到學校需要的時間 double 以分鐘為單位
studytime 每週學習時間 double 以小時為單位
failures 掛科數 double 掛科次數
schoolsup 是否有額外的學習輔助 string yes or no
fumsup 是否有家教 string yes or no
paid 是否有相關考試學科的輔助 string yes or no
activities 是否有課外興趣班 string yes or no
higher 是否有向上求學意願 string yes or no
internet 家裡是否聯網 string yes or no
famrel 家庭關係 double 從1~5表示關係從差到好
freetime 課餘時間量 double 從1~5從少到多
goout 跟朋友出去玩的頻率 double 從1~5從少到多
dalc 日飲酒量 double 從1~5從少到多
walc 周飲酒量 double 從1~5從少到多
health 健康狀況 double 從1~5從狀態差到好
absences 出勤量 double 0到93次
g3 期末成績 double 20分制

資料截圖:

三、離線訓練

首先,實驗流程圖:

資料自上到下流入,先後經歷了資料資料預處理、拆分、訓練、預測與評估。

1.SQL指令碼-資料預處理

select (case sex when 'F' then 1 else 0 end) as sex,
(case address when 'U' then 1 else 0 end) as address,
(case famsize when 'LE3' then 1 else 0 end) as famsize,
(case Pstatus when 'T' then 1 else 0 end) as Pstatus,
Medu,
Fedu,
(case Mjob when 'teacher' then 1 else 0 end) as Mjob,
(case Fjob when 'teacher' then 1 else 0 end) as Fjob,
(case guardian when 'mother' then 0 when 'father' then 1 else 2 end) as guardian,
traveltime,
studytime,
failures,
(case schoolsup when 'yes' then 1 else 0 end) as schoolsup,
(case fumsup when 'yes' then 1 else 0 end) as fumsup,
(case paid when 'yes' then 1 else 0 end) as paid,
(case activities when 'yes' then 1 else 0 end) as activities,
(case higher when 'yes' then 1 else 0 end) as higher,
(case internet when 'yes' then 1 else 0 end) as internet,
famrel,
freetime,
goout,
Dalc,
Walc,
health,
absences,
(case  when G3>14 then 1 else 0 end) as finalScore
from ${t1};

這裡SQL指令碼主要處理的邏輯是將文字資料結構化。比如說源資料分別有yes和no的情況,我們可以通過0表示yes,1表示no將文字資料量化。一些多種類的文字型欄位,比如說Mjob,我們可以結合業務場景來抽象,比如說如果工作是teacher就表示為1,不是teacher表示為0,抽象後這個特徵的意義就是表示工作是否與教育相關。對於目標列,我們按照大於18分設為1,其它為0,擬在通過訓練,找出可以預測分數的模型。

2.歸一化

去量綱,將所有的欄位都轉換成0~1之間,去除欄位間大小不均衡帶來的影響。結果圖:

3.拆分

將資料集按照8:2拆分,百分之八十用來訓練模型,剩下的用來預測。

4.邏輯迴歸

通過邏輯迴歸演算法訓練生成離線模型。具體演算法詳情可以https://en.wikipedia.org/wiki/Logistic_regression

5.結果分析和評估

通過混淆矩陣可以檢視模型預測的準確率。

可以看到預測準確率為82.911%。
根據邏輯迴歸演算法的特性,我們可以通過模型係數挖掘出一些比較有意思的資訊,首先檢視模型:

根據邏輯迴歸演算法的演算法特性,權重越大表示特徵對於結果的影響越大,權重是正數表示對結果1(期末高分)正相關,權重負數表示負相關。於是我們可以挑選幾個權重較大的特徵進行分析。

欄位名 含義 權重 分析
mjob 母親的工作 -0.7998341777833717 母親是老師對於孩子考高分是不利的
fjob 父親工作 1.422595764037065 如果父親是老師,對於孩子取得好的成績是非常有利的
internet 家裡是否聯網 1.070938672974736 家裡聯網不但不會影響成績,還會促進孩子的學習
medu 母親的文化水平 2.196219307541352 母親的文化水平高低對於孩子的影響是最大的,母親文化越高孩子學習越好。

以上結論只是從實驗的很小的資料集得到的結論,僅供參考。

四、其它

作者微信公眾號(與我聯絡):

相關文章