紀 娟
(1.四川開放大學(xué),成都 610073;2.國家開放大學(xué)教育信息管理與信息系統(tǒng)研究中心,北京 100039)
隨著大數(shù)據(jù)時代的到來和數(shù)據(jù)挖掘技術(shù)的迅猛發(fā)展,客戶流失預(yù)測模型再一次被研究者們關(guān)注。在激烈的市場競爭環(huán)境下,企業(yè)客戶流失問題越來越嚴重。國內(nèi)外對客戶流失模型的研究最早應(yīng)用于通信業(yè)[1],目前已廣泛應(yīng)用于金融、保險、郵政、商品推銷等領(lǐng)域[2-5]。為了減少客戶流失率,企業(yè)通過建立大量基于不同算法和數(shù)據(jù)分析方法的客戶流失預(yù)測模型提前預(yù)測潛在的流失用戶,對模型預(yù)測出的流失用戶制定個性化的營銷套餐,以此為策略來挽留用戶。如張宇等[6]基于C5.0決策樹算法以中國郵政短信服務(wù)的100多萬條實際業(yè)務(wù)數(shù)據(jù)為研究對象,建立了客戶流失預(yù)測模型,得出的C5.0決策樹模型有較高的命中率和覆蓋率,具有良好的預(yù)警功能,能幫助企業(yè)及時發(fā)現(xiàn)有可能流失的客戶,減少客戶流失率;盧美琴等[7]針對商業(yè)銀行貴賓客戶流失率不斷提高的問題,綜合應(yīng)用決策樹、支持向量機和貝葉斯網(wǎng)絡(luò)3種算法分別生成流失預(yù)警子模型,再利用神經(jīng)網(wǎng)絡(luò)對3個子模型進行組合,構(gòu)建客戶流失預(yù)測模型,得出的組合預(yù)測模型的準確率明顯優(yōu)于單一模型,能幫助企業(yè)提前定位可能流失的用戶,幫助銀行更好地進行貴賓關(guān)系的管理。由此可見,通過建立有效、高準確率的流失預(yù)測模型,解決企業(yè)客戶流失問題是目前市場上成熟有效的策略。
國內(nèi)教育研究者們一直關(guān)注學(xué)習(xí)者的流失問題,也積累了一些研究成果。與金融和通信行業(yè)相比,我國關(guān)于學(xué)習(xí)者流失預(yù)警模型的研究成果較少,這些研究成果集中在輟學(xué)預(yù)測模型上,即根據(jù)學(xué)習(xí)者的課程學(xué)習(xí)行為數(shù)據(jù),預(yù)測未來退出課程學(xué)習(xí)的概率。如孫霞等[8]從課程學(xué)習(xí)行為數(shù)據(jù)中自動提取有用的特征,使用卷積神經(jīng)網(wǎng)絡(luò)的長短期記憶模型,動態(tài)預(yù)測不同時間階段的學(xué)習(xí)者輟學(xué)率。郭文鋒等[9]以學(xué)習(xí)行為數(shù)據(jù)為基礎(chǔ),使用二元邏輯回歸模型,預(yù)測學(xué)習(xí)者退課率。盧曉航等[10]在課程數(shù)據(jù)基礎(chǔ)上提取19個特征,使用機器學(xué)習(xí)算法構(gòu)建滑動窗口模型,動態(tài)預(yù)測學(xué)習(xí)者輟學(xué)率。
從在線學(xué)習(xí)者的完整學(xué)業(yè)流程來看,學(xué)習(xí)者的課程學(xué)習(xí)行為只是學(xué)業(yè)中的一個重要業(yè)務(wù),僅根據(jù)課程學(xué)習(xí)行為數(shù)據(jù)建立流失預(yù)測模型,則使預(yù)判學(xué)習(xí)者流失的因素存在片面性和不完整性。因此,筆者在分析遠程教育學(xué)生核心業(yè)務(wù)的基礎(chǔ)上,通過量化學(xué)生在核心業(yè)務(wù)上的活躍度,加入可以影響學(xué)生流失的關(guān)鍵基礎(chǔ)屬性,使用深度學(xué)習(xí)算法,建立一套基于深度學(xué)習(xí)的遠程教育學(xué)生流失預(yù)測模型,為全面和深入地分析遠程教育中學(xué)習(xí)者的流失因素提供科學(xué)依據(jù)。
人工神經(jīng)網(wǎng)絡(luò)是客戶流失預(yù)測中常用的一種算法,而深度學(xué)習(xí)(DeepLearning,DL)是人工神經(jīng)網(wǎng)絡(luò)的延伸和發(fā)展,是一種擁有多隱層的人工神經(jīng)網(wǎng)絡(luò)算法。該算法通過模擬人腦,多層、逐級地抽取信息特征,最終獲得能夠較好地表示輸入數(shù)據(jù)的特征[11]。2006年,Hinton等[12]提出的深度置信網(wǎng)絡(luò)(DBN)是當前深度學(xué)習(xí)算法的框架,打破了深層神經(jīng)網(wǎng)絡(luò)難以有效訓(xùn)練的僵局。
深度學(xué)習(xí)是從已標注分類的實驗數(shù)據(jù)中學(xué)習(xí)類似人腦處理信息的神經(jīng)結(jié)構(gòu),實現(xiàn)實驗數(shù)據(jù)的自動分類的過程[13]。深度學(xué)習(xí)網(wǎng)絡(luò)內(nèi)部應(yīng)用了激活函數(shù)、損失函數(shù)、神經(jīng)單元誤差反向傳播法、梯度下降法等多種數(shù)學(xué)工具,具備嚴謹?shù)目茖W(xué)性。通過不斷地計算數(shù)據(jù)和損失,得到可以用于預(yù)測或分類的神經(jīng)網(wǎng)絡(luò)模型[14]。目前,深度學(xué)習(xí)算法大多是基于DNN,它分為輸入層、輸出層和隱藏層,網(wǎng)絡(luò)的每一層都由許多神經(jīng)元組成,層與層間采用全連接結(jié)構(gòu)[15]。
深度學(xué)習(xí)算法從人工神經(jīng)網(wǎng)絡(luò)算法發(fā)展而來,其本質(zhì)是含有多隱層的神經(jīng)網(wǎng)絡(luò)。它的思想來源于人腦的啟發(fā),從信息處理角度出發(fā)對人腦神經(jīng)元網(wǎng)絡(luò)進行抽象,建立簡單模型;它的工作原理借鑒于人腦的視覺機理,從原始信息開始低層提取特征,逐漸向高層迭代提取特征,層級越高特征越抽象;它的動機是通過構(gòu)建具有多隱層的機器模型,由此模型對海量數(shù)據(jù)進行訓(xùn)練,由機器學(xué)習(xí)獲取更加有效的特征,從而最終提升分類和預(yù)測的準確性。
筆者研究的目標是使用多隱層的人工神經(jīng)網(wǎng)絡(luò)算法,建立遠程教育本科學(xué)生流失預(yù)測模型。與使用決策樹、回歸分析和人工神經(jīng)網(wǎng)絡(luò)等算法建模的流程一樣,基于深度學(xué)習(xí)算法建模主要有理解數(shù)據(jù)、清洗數(shù)據(jù)、建立基于深度學(xué)習(xí)的流失預(yù)測模型和評估模型4個步驟。其建模流程圖如圖1所示。
圖1 基于深度學(xué)習(xí)的建模流程圖
理解數(shù)據(jù)是建立流失預(yù)測模型的關(guān)鍵步驟,其主要目的是對遠程教育本科生的相關(guān)數(shù)據(jù)進行分析和研究,在此基礎(chǔ)上確定目標建模數(shù)據(jù),從而獲取建模數(shù)據(jù)以供建模時使用。具體包括:(1)確定目標建模數(shù)據(jù);(2)對流失學(xué)生的定義。
3.1.1 確定目標建模數(shù)據(jù)
據(jù)統(tǒng)計發(fā)現(xiàn),近年來遠程教育本科生已達到畢業(yè)年限未能按期畢業(yè)的學(xué)生人數(shù)逐漸上升。四川省近年來遠程教育本??普猩鷶?shù)及本科未按期畢業(yè)人數(shù)統(tǒng)計數(shù)據(jù),如表1所示。
表1 四川省遠程開放教育本??普猩鷶?shù)及本科未按期畢業(yè)人數(shù)統(tǒng)計 單位:人
表1中,本科未按期畢業(yè)人數(shù)表示的是在當前年度學(xué)期入學(xué)的本科生已達到畢業(yè)年限還未畢業(yè)的人數(shù)。按本科畢業(yè)年限2.5年計算,2016年秋季及以前入學(xué)的學(xué)生均已達到畢業(yè)年限,但每期都存在大量未畢業(yè)的學(xué)生,且每期未按期畢業(yè)率均高于10%。從統(tǒng)計數(shù)據(jù)可以看出,2012―2016年本科生每期招生總數(shù)基本相同,而本科生每期未按期畢業(yè)人數(shù)則呈逐期上升趨勢。這些未按期畢業(yè)的學(xué)生,如果未采取相應(yīng)的挽留措施,久而久之成為流失生的可能性很大。而遠程教育中,??粕恼猩?guī)模和畢業(yè)規(guī)模一直處于穩(wěn)定發(fā)展期,流失率較小。因此,筆者研究的目標學(xué)生范圍是2012―2016年期間入學(xué)的本科生。
確定流失預(yù)測的目標學(xué)生之后,接下來是特征工程的選擇。特征工程的選擇依賴于流失預(yù)測模型的類型。目前常見的流失預(yù)測模型包含基于用戶屬性、基于關(guān)鍵事件、基于負體驗、基于業(yè)務(wù)黏性和基于活躍度這5種類型。其中基于關(guān)鍵事件的預(yù)測類型需要梳理詳細的流程事件,難度較大;基于負體驗的預(yù)測類型需要梳理產(chǎn)品使用中的負體驗,這與遠程教育中學(xué)生主體關(guān)聯(lián)不大;活躍度是界定用戶流失的最直接明了的指標,在數(shù)學(xué)模型中這樣的指標具有優(yōu)越性,但是,活躍度是結(jié)果,是因變量,在解釋形成流失的原因方面存在一定的劣勢,因此基于活躍度的流失預(yù)測意義不大;而基于業(yè)務(wù)黏性的流失預(yù)測模型主要分析用戶在核心業(yè)務(wù)功能上的活躍度表現(xiàn),模型既保留了最優(yōu)指標,又具有自變量元素。綜合考慮,采用基于業(yè)務(wù)黏性的流失預(yù)測模型。
基于業(yè)務(wù)黏性的流失預(yù)測模型重點在于定義核心業(yè)務(wù)和活躍行為。結(jié)合遠程教育本科生的業(yè)務(wù)范疇,確定學(xué)生的核心業(yè)務(wù)為入學(xué)、注冊和考試3個方面,各核心業(yè)務(wù)具有的活躍行為是入學(xué)以來課程注冊后繳費的行為、完成各種類型考核后獲得成績的行為和最后一次課程注冊行為。通過量化行為生成活躍度屬性,最終組成模型特征工程的第1部分內(nèi)容。深度學(xué)習(xí)算法具有逐層迭代提取特征的能力,為了體現(xiàn)它在特征工程方面的優(yōu)越性,加入了可以影響學(xué)生流失的關(guān)鍵基礎(chǔ)屬性作為特征工程的第2部分內(nèi)容。因此,基于深度學(xué)習(xí)的流失預(yù)測模型的最終特征工程包括學(xué)生的基礎(chǔ)屬性和核心業(yè)務(wù)的活躍度屬性。其中,學(xué)生的基礎(chǔ)屬性包括:學(xué)生的性別、出生日期(年齡)和身份證號(學(xué)生戶籍所在地類型);核心業(yè)務(wù)的活躍度屬性包括:入學(xué)學(xué)期數(shù)、最近一次課程注冊學(xué)期距離本期的學(xué)期數(shù)、已交課程注冊費用、獲得及格成績課程門數(shù)。特征工程選項和釋義如表2所示。
表2 流失預(yù)測模型的特征工程表
3.1.2 定義流失學(xué)生
學(xué)籍庫中學(xué)生的學(xué)籍狀態(tài)屬性記錄了學(xué)生的狀態(tài),此屬性具有明確的流失記錄值。但是,只通過學(xué)籍狀態(tài)屬性來定義學(xué)生流失是不全面的,這是因為此記錄行為屬非必要行為,在系統(tǒng)中與其他業(yè)務(wù)沒有必要的流程關(guān)聯(lián)性,并不是所有的業(yè)務(wù)人員在實際操作時都完成了此項操作,從學(xué)生的相關(guān)數(shù)據(jù)分析也驗證了上面的結(jié)論。筆者以學(xué)籍狀態(tài)為條件對本科學(xué)生分組后,通過增加時間節(jié)點和部分核心業(yè)務(wù)行為指標來定義流失。具體內(nèi)容如下:
(1)獲取2012―2016年入學(xué)的本科生的學(xué)籍狀態(tài),根據(jù)學(xué)籍狀態(tài)將學(xué)生分成3組:已經(jīng)畢業(yè)的學(xué)生、在籍學(xué)生和其他狀態(tài)學(xué)生。其中,學(xué)籍狀態(tài)為已經(jīng)畢業(yè)的是已經(jīng)順利完成學(xué)業(yè)且獲得畢業(yè)證書的學(xué)生,這部分學(xué)生定義為非流失生;學(xué)籍狀態(tài)為其他的學(xué)生定義為流失生;學(xué)籍狀態(tài)為在籍的學(xué)生流失狀態(tài)待定,需要增加時間節(jié)點等信息確定。
(2)明確在籍學(xué)生的流失狀態(tài)。增加2個關(guān)鍵信息:最近一次注冊課程信息距離本學(xué)期的時間lRCtime和已經(jīng)獲得學(xué)分的課程數(shù)目tCount。當lRCtime>6個學(xué)期,定義學(xué)生為流失狀態(tài);當lRCtime≤6個學(xué)期,且獲得學(xué)分的課程總數(shù)tCount≤20,定義學(xué)生為流失狀態(tài);當lRCtime≤6個學(xué)期,且獲得學(xué)分的課程總數(shù)tCount≥20,定義學(xué)生為非流失狀態(tài)。
為了提高訓(xùn)練模型時模型的執(zhí)行效率,需要在外部環(huán)境下對數(shù)據(jù)進行清洗,包括標準化數(shù)據(jù)、填補建模數(shù)據(jù)的缺失值、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)不平衡等預(yù)處理。筆者使用SQL語言在數(shù)據(jù)庫環(huán)境下對建模數(shù)據(jù)預(yù)處理。主要有以下內(nèi)容:
3.2.1 標準化學(xué)生戶籍所在地信息
身份證號是學(xué)生身份的唯一標識,在注冊信息時必須用身份證號、護照、軍官證或其他能代表學(xué)生唯一身份的證件注冊。因此,將學(xué)生的戶籍所在地類別標準化處理為省內(nèi)、省外、外籍和其他4種類別,并將這4種類別的數(shù)據(jù)類型轉(zhuǎn)化為數(shù)值型數(shù)據(jù),分別用1~4表示。
3.2.2 填補建模數(shù)據(jù)缺失值
空值會造成模型不能正常訓(xùn)練,需要對模型的所有輸入值進行填補處理。學(xué)生的身份證號、出生日期是非空項,不需要替換,學(xué)生注冊費用和學(xué)生已獲得及格成績的課程門數(shù)依據(jù)學(xué)生的行為獲取,存在缺失值,填補這2項的缺失值為0。
3.2.3 計算轉(zhuǎn)換數(shù)據(jù)
包括:(1)根據(jù)出生年月值計算年齡;(2)根據(jù)最后一次課程注冊學(xué)期值計算最近一次課程注冊時間距離本學(xué)期的學(xué)期數(shù);(3)根據(jù)入學(xué)學(xué)期值計算入學(xué)時間距離本學(xué)期的學(xué)期數(shù)。
3.2.4 處理不平衡數(shù)據(jù)
根據(jù)前文提到的相關(guān)條件提取2012—2016年期間入學(xué)的學(xué)生數(shù)據(jù),發(fā)現(xiàn)流失的學(xué)生有8 856 人,非流失的學(xué)生有64 641 人,流失和非流失學(xué)生數(shù)之間存在較大的差距,在數(shù)據(jù)上存在數(shù)據(jù)不平衡問題。為了使模型預(yù)測更有意義,減少非流失學(xué)生數(shù),只選取非流失學(xué)生數(shù)中的10 000 條數(shù)據(jù),加上流失學(xué)生數(shù),最終建模數(shù)據(jù)集有18 856 條。
筆者研究的深度學(xué)習(xí)算法采用1個輸入層、2個隱藏層和1個輸出層的全連接神經(jīng)網(wǎng)絡(luò),使用Keras高級Python API快速構(gòu)建和訓(xùn)練基于深度學(xué)習(xí)的流失預(yù)測模型,使用Tensorflow深度學(xué)習(xí)框架作為它的后端,使用Tensorboard將模型可視化?;谏疃葘W(xué)習(xí)的流失預(yù)測模型的結(jié)構(gòu),如圖2所示。
圖2 流失預(yù)測模型結(jié)構(gòu)圖
從圖2中可以了解網(wǎng)絡(luò)模型的整體結(jié)構(gòu)、數(shù)據(jù)流的方向和大小。模型實現(xiàn)的關(guān)鍵步驟具體描述如下。
3.3.1 拆分建模數(shù)據(jù)
Dense_input是最低層,是建模數(shù)據(jù)的入口。為了防止模型過擬合,從建模數(shù)據(jù)集中隨機抽取67%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),用來訓(xùn)練模型的參數(shù);其余33%的數(shù)據(jù)作為驗證數(shù)據(jù),用來檢驗?zāi)P偷男阅?。使用Sklearn拆分數(shù)據(jù)集后訓(xùn)練數(shù)據(jù)有12 633 條,測試數(shù)據(jù)有6 223 條。
3.3.2 搭建神經(jīng)網(wǎng)絡(luò)模型
使用Keras搭建基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型,可以快速實現(xiàn)模型,包括:選擇模型類型、構(gòu)建模型的網(wǎng)絡(luò)層、編譯模型、訓(xùn)練模型和預(yù)測。
構(gòu)建模型的網(wǎng)絡(luò)層包括建立神經(jīng)網(wǎng)絡(luò)的輸入層、2個隱藏層和輸出層,并設(shè)置每層的神經(jīng)元數(shù)和激活函數(shù)的類型。網(wǎng)絡(luò)的輸入層有7個神經(jīng)元,分別對應(yīng)建模數(shù)據(jù)中的7個特征屬性;網(wǎng)絡(luò)的第1個隱藏層dense_1有12個神經(jīng)元,網(wǎng)絡(luò)的第2個隱藏層dense_2有8個神經(jīng)元,這2個隱藏層的激活函數(shù)都是非線性的ReLU函數(shù);由于本流失預(yù)測是二分類問題,因此,網(wǎng)絡(luò)的輸出層只有1個神經(jīng)元,它的值是0或1,且輸出層的激活函數(shù)是Sigmoid函數(shù)。
編譯模型是對網(wǎng)絡(luò)的學(xué)習(xí)過程進行配置,包括設(shè)置模型的優(yōu)化方式為Adam、指定損失函數(shù)為Binary_crossentropy和指定衡量模型的性能metrics指標為accuracy。
3.3.3 評估模型性能
Tensorboard是Tensorflow內(nèi)置的一個可視化工具,能夠有效地展示程序在運行過程中的結(jié)構(gòu)圖和各種指標隨時間的變化趨勢,從而幫助研究者們理解深度神經(jīng)網(wǎng)絡(luò)內(nèi)部的組織、結(jié)構(gòu)和其訓(xùn)練過程。模型深度學(xué)習(xí)的目標是讓準確率盡可能地提高,而損失盡可能地降低。通過Tensorboard的標量面板,觀察訓(xùn)練數(shù)據(jù)的準確率提高過程如圖3所示;訓(xùn)練數(shù)據(jù)的損失下降過程如圖4所示;測試數(shù)據(jù)的預(yù)測驗證準確率如圖5所示;測試數(shù)據(jù)的預(yù)測驗證損失變化趨勢如圖6所示。
圖3 流失預(yù)測訓(xùn)練數(shù)據(jù)準確率提高過程圖
圖4 流失預(yù)測訓(xùn)練數(shù)據(jù)損失下降過程圖
圖5 流失預(yù)測驗證數(shù)據(jù)準確率圖
圖6 流失預(yù)測驗證數(shù)據(jù)損失變化趨勢圖
從圖3~圖6可以觀察到模型在150 次訓(xùn)練過程中,其學(xué)習(xí)目標是朝著理想的狀態(tài)在進行,在第150 次訓(xùn)練后,其訓(xùn)練數(shù)據(jù)的準確率提高到0.979 5,訓(xùn)練數(shù)據(jù)的損失減少到0.053 4,驗證數(shù)據(jù)的準確率提高到0.970 1,驗證數(shù)據(jù)的損失減少到0.077 1。
模型訓(xùn)練好后,需要從準確率、召回率和精確率3個方面評估模型的效果。模型評估的詳細結(jié)果如表3所示。
表3 流失預(yù)測標量圖
表3中,第2行是關(guān)于流失預(yù)測的3個評估指標的值,第3行是關(guān)于非流失預(yù)測的3個評估指標的值。從表3中可以看出,無論是對流失的預(yù)測,還是對非流失的預(yù)測,評估指標值較高,表示模型效果較好。
遠程教育本科招生形勢一直處于不理想狀態(tài),且本科學(xué)生未按期畢業(yè)人數(shù)居高不下,為了減少流失學(xué)生并緩和招生壓力,建立高效的本科學(xué)生流失預(yù)測模型迫在眉睫。筆者闡述了深度學(xué)習(xí)算法和深度學(xué)習(xí)框架,在理解業(yè)務(wù)數(shù)據(jù)的基礎(chǔ)上,確定了基于核心業(yè)務(wù)黏性和學(xué)生基礎(chǔ)屬性的特征工程,采用Tensorflow深度學(xué)習(xí)框架構(gòu)建了包含2個隱藏層的深度神經(jīng)網(wǎng)絡(luò),借助Tensorboard工具對深度神經(jīng)網(wǎng)絡(luò)可視化和性能評估。評估模型表明:構(gòu)建的基于深度學(xué)習(xí)的學(xué)生流失預(yù)測模型達到了理想的預(yù)測效果。但是,研究存在著2點不足:(1)對流失學(xué)生的定義,主觀性判斷較多;(2)基于業(yè)務(wù)黏性的核心指標數(shù)不多。在下一步的研究中,可以從采用邏輯回歸模型定義流失學(xué)生、增加更多的基于業(yè)務(wù)黏性的核心指標和隱藏層數(shù)等方面改進及優(yōu)化模型,進一步提高模型預(yù)測的準確率。