李曉偉
(四川大學計算機學院,成都610065)
隨著數(shù)據(jù)科學定義的提出,機器學習、數(shù)據(jù)挖掘[1]、數(shù)據(jù)可視化等概念變得越來越流行,與學生相關(guān)的網(wǎng)絡服務乘著移動互聯(lián)網(wǎng)的東風迅猛發(fā)展,成為了最受歡迎、用戶最多的服務之一。越來越多的互聯(lián)網(wǎng)廠商和計算機科學研究人員開始將數(shù)據(jù)科學和社會網(wǎng)絡結(jié)合起來,依托龐大的用戶所產(chǎn)生的數(shù)據(jù)進行行為分析,為用戶提供個性化服務。學生每天會進行消費刷卡,會上課學習,這些行為等會產(chǎn)生許多的數(shù)據(jù)?;诖髮W生的消費數(shù)據(jù)和成績數(shù)據(jù),可以分析出一些大學生生活和學習方面的規(guī)律。例如,大學生的消費習慣是否和成績相關(guān),來自同一生源地的學生是否會喜歡在同一家餐廳吃飯,不同性別的學生的選課習慣是否不同。
本文使用某院校一個學院一個年級的成績數(shù)據(jù)和學生卡消費數(shù)據(jù),使用決策樹(Decision Tree)和支持向量機(Support Vector Machine,SVM)兩種算法預測好友關(guān)系,采用了隨機采樣大類平衡小類的方法解決數(shù)據(jù)不平衡的問題。并使用調(diào)查問卷的形式獲取學生真實好友關(guān)系,進行真實數(shù)據(jù)驗證,使用的好友關(guān)系預測方法的精確率(Precision)、召回率(Recall)和 F1分數(shù)(F1 Score)均較高,達到了預測效果,后期使用可視化工具進行好友關(guān)系分析。
綜上所述,本文的貢獻主要分為以下幾點:
(1)提取特征進行預測性分析。根據(jù)算法的需要從源數(shù)據(jù)中選擇能夠被用來預測好友關(guān)系的大學生行為特征;
(2)通過編寫Python程序挖掘和清洗數(shù)據(jù),通過RapidMiner等數(shù)據(jù)挖掘工具進行算法選擇和測試;
(3)使用決策樹和SVM兩種算法訓練和測試數(shù)據(jù)集,通過數(shù)據(jù)調(diào)整提高精確率和召回率;
(4)通過調(diào)查問卷獲取大學生真實好友關(guān)系以及交友情況,驗證實驗預測結(jié)果;
(5)使用 D3.js、ECharts、Matplotlib等可視化工具實現(xiàn)可視化模型并進行分析。
本文使用的數(shù)據(jù)集為大學生校園卡、校園網(wǎng)、教務網(wǎng)等系統(tǒng)所產(chǎn)生的教育數(shù)據(jù)。所有數(shù)據(jù)都經(jīng)過加密算法處理,將學生相關(guān)信息匿名化。這些數(shù)據(jù)遍布各個學院和各個年級,文件數(shù)量眾多,數(shù)據(jù)量龐大,使得數(shù)據(jù)具有代表性和普適性。為了保證數(shù)據(jù)真實性的可驗證性,選取了某院校一個學院一個年級所有學生2014年全年消費數(shù)據(jù)和2013年至今的成績數(shù)據(jù)進行實驗。
數(shù)據(jù)處理是機器學習預測算法進行預測之前非常重要的一步。它包含數(shù)據(jù)預處理和數(shù)據(jù)整合與清洗兩個關(guān)鍵步驟。數(shù)據(jù)預處理是要提取出消費數(shù)據(jù)中的兩名學生刷卡重疊次數(shù)和成績數(shù)據(jù)中的兩名學生選修課重疊次數(shù)。數(shù)據(jù)整合與清洗是要將數(shù)據(jù)集中所有學生兩兩配對,將兩名學生學籍相關(guān)信息(學號、姓名、性別、生源地等)和數(shù)據(jù)預處理步驟中提取出的學生刷卡重疊次數(shù)和選修課重疊次數(shù)整合,并對缺失數(shù)據(jù)、非常規(guī)數(shù)據(jù)進行清洗。
表1 部分整合后的數(shù)據(jù)表
針對不同的分類問題需要選擇不同機器學習算法。例如,樸素貝葉斯這樣的高偏差低方差型分類算法,適用于樣本數(shù)量較少的小訓練集。但是隨著數(shù)據(jù)量的增大,KNN這樣的低偏差高方差分類算法將具有優(yōu)勢。RapidMiner是現(xiàn)如今數(shù)據(jù)挖掘和預測分析領(lǐng)域最流行的解決方案之一[2]。它可以不通過編程完成機器學習預測的工作,內(nèi)置多種算法,選擇數(shù)據(jù)集后可以立刻可以進行算法測試。本文選用RapidMiner對算法進行測試和選擇,測試了樸素貝葉斯、KNN、決策樹、SVM四種方法。最終考慮到預測的精確率和召回率,以及選擇不同表現(xiàn)類型的算法的需求,選擇了決策樹和SVM兩種算法進行預測,前者可以毫無壓力地展示特征間的關(guān)系,后者能夠十分良好地避免過擬合問題。
決策樹算法采取通過 Python的NumPy、Scipy、Sklearn等模塊進行實現(xiàn)[3],再自行配置和優(yōu)化的方案。由于數(shù)據(jù)集存在不均勻的正負樣本分布的情況,也就是說,好友對數(shù)作為正類,非好友對數(shù)作為負類,樣本數(shù)量差距大。引入了糾偏數(shù)對大類(負類)進行隨機選擇和抽樣處理,以平衡兩者的比例差距。程序包括數(shù)據(jù)讀入、標簽轉(zhuǎn)換、拆分訓練集與測試集、選擇劃分標準、剪枝、訓練、畫決策樹、測試、打印結(jié)果幾個部分。數(shù)據(jù)讀入是把整合后的數(shù)據(jù)讀入,存儲特征和標簽到x、y矩陣中;標簽轉(zhuǎn)換是把“是否是好友”中的“是”與“否”標簽轉(zhuǎn)換為Sklearn能夠處理的“1”與“0”;拆分訓練集與測試集是將讀入的數(shù)據(jù)以二八比例拆分為訓練集(80%)和測試集(20%)。選擇劃分標準時,選擇信息增益作為劃分標準,Sklearn的決策樹采用CART算法,經(jīng)過這樣的配置后,相當于實現(xiàn)了ID3算法;剪枝的目的是避免決策樹生長的節(jié)點過多導致過擬合問題;訓練后生成模型,并以圖片的形式導出決策樹到PDF;測試后,打印出詳細的精確率、召回率,決策樹預測結(jié)果如表2所示。
表2 決策樹算法測試結(jié)果示例
其中,Label為標簽值,即是否是好友分類的類別。Support為測試集中真實的正負樣本數(shù)量,Avg/Total為精確率、召回率、F1分數(shù)的平均值和真實測試樣本數(shù)量的總數(shù)。在所有評估指標中,隨機一次測試的數(shù)值都是高于85%的,這充分說明決策樹算法對本課題數(shù)據(jù)預測的有效性。
SVM算法的實現(xiàn)與決策樹算法類似,不過加入了Matplotlib模塊進行繪圖,另外程序不包括選擇劃分標準、剪枝、訓練、畫決策樹部分,但是加入了SVM核函數(shù)選擇和作圖的部分。選擇了包括線性核函數(shù)、多項式核函數(shù)、徑向基核函數(shù)、Sigmoid核函數(shù)這四種常用的核函數(shù)[4]。在圖1中,每張小圖的橫坐標為刷卡重疊次數(shù),縱坐標為選修課重疊次數(shù)。藍色部分劃分為非好友,棕色部分劃分為好友,一個小圓對應一條記錄。我們可以明顯地觀察到Sigmoid核函數(shù)的分界存在較大問題,線性核函數(shù)和多項式核函數(shù)分界較好,但徑向基核函數(shù)分界最佳,如表3所示,隨機一次測試的所有平均評估指標數(shù)值都是高于85%的。
圖1 SVM核函數(shù)測試圖
表3 徑向基核函數(shù)測試結(jié)果示例
通過實驗,完成了力引導關(guān)系圖和環(huán)狀關(guān)系圖這兩種關(guān)系圖。組織并可視化了大學生之間的社會關(guān)系,呈現(xiàn)不同人群的信息,為了解不同的人群提供了快速瀏覽交互,如圖2和圖3所示,其中圖2左下圖為鼠標放于節(jié)點上,右下圖為鼠標放于兩節(jié)點的連線上,圖3右圖為鼠標放于節(jié)點上。圖中的每個節(jié)點以學號代表了一個學生。通過多次可視化數(shù)據(jù)分析,賦予不同社會關(guān)系一定權(quán)重的策略,能夠發(fā)現(xiàn)力引導關(guān)系圖中節(jié)點的分布較為緊密。具有好友關(guān)系的人,同時會具有同性、老鄉(xiāng)、同專業(yè)同學、同班同學的社會關(guān)系,呈明顯的正相關(guān)性。而是否是同年出生對是否是好友幾乎無影響。這一結(jié)論在環(huán)狀關(guān)系圖中同樣可以得到驗證。根據(jù)結(jié)論逆向分析,如果兩個大學生都是女性,那么她們在寢室等地方接觸的機會將更多,也更容易選擇瑜伽這樣女性學生較多的課程;如果兩個大學生是老鄉(xiāng),那么他們能夠用方言交流,飲食和生活習慣類似,對于家鄉(xiāng)的感情也會讓他們更可能在老鄉(xiāng)會等組織相遇;同專業(yè)同學、同班同學長期一起學習,接觸時間多;結(jié)合上述分析,具有這一類社會關(guān)系的人都會更可能成為好友。而同是年級相同或相近的大學生,是否年齡相近不會成為好友關(guān)系的阻礙。因此,從關(guān)系圖中得出的結(jié)論,符合社會習慣。
隨著數(shù)據(jù)科學的流行和發(fā)展,大數(shù)據(jù)相關(guān)業(yè)務積累了足夠的信息量,如何借助機器學習和數(shù)據(jù)可視化挖掘這些數(shù)據(jù),增強用戶個性化服務效果,已經(jīng)越發(fā)受到信息技術(shù)學術(shù)界和工業(yè)界的重視。本文預測大學生可能存在的好友關(guān)系,結(jié)合可視化分析,對社會關(guān)系的影響因素進行發(fā)現(xiàn)。本文對多種機器學習算法進行比較,選擇了決策樹算法和以徑向基函數(shù)作為核函數(shù)的SVM算法進行實現(xiàn)。之后將預測預處理的數(shù)據(jù)和預測結(jié)果相關(guān)的數(shù)據(jù)和網(wǎng)絡爬蟲抓取的生源地省份經(jīng)緯度等數(shù)據(jù)整合,繪制了好友關(guān)系圖,交互式分析數(shù)據(jù)。機器學習預測的平均精確率、召回率、F1分數(shù)等指標均高于85%,預測結(jié)果的可信度較高。最后,通過可視化分析,得出了好友關(guān)系與是否是同性、是否是老鄉(xiāng)、是否是同專業(yè)或同班同學存在一定聯(lián)系,并且是否是老鄉(xiāng)這一特征的權(quán)重較大的結(jié)論。
圖2 力引導關(guān)系圖
圖3 環(huán)狀關(guān)系圖