李利杰 徐濟(jì)惠 何頌頌
(1.寧波城市職業(yè)技術(shù)學(xué)院 浙江省寧波市 315100 2.寧波職業(yè)技術(shù)學(xué)院 浙江省寧波市 315100)
大數(shù)據(jù)和人工智能技術(shù)正強(qiáng)烈沖擊著社會的各個領(lǐng)域,教育系統(tǒng)亦不例外。伴隨著大數(shù)據(jù)技術(shù)的成熟,教育教學(xué)的學(xué)習(xí)方式和生態(tài)正經(jīng)歷著巨大的變革。教學(xué)大數(shù)據(jù)聚焦學(xué)生學(xué)習(xí)的微觀層面表征,持續(xù)記錄學(xué)生在學(xué)習(xí)過程中所產(chǎn)生的海量數(shù)據(jù)。精準(zhǔn)教學(xué)、因材施教將在大數(shù)據(jù)技術(shù)支撐下取得實質(zhì)性發(fā)展,從教育學(xué)、認(rèn)知心理學(xué)、信息學(xué)科的交叉視角,不但從宏觀層面解析大數(shù)據(jù)技術(shù)切入日常常規(guī)教學(xué)所帶來的多種宏觀效應(yīng),還能從微觀層面挖掘?qū)W習(xí)者認(rèn)知水平、學(xué)習(xí)情感與行為對學(xué)習(xí)績效預(yù)測,提出學(xué)習(xí)資源個性化自適應(yīng)推送、學(xué)習(xí)分析儀表盤、知識圖譜等智能化干預(yù)策略,實現(xiàn)人為干預(yù)與自動干預(yù)的有機(jī)結(jié)合,并根據(jù)學(xué)習(xí)文化水平、知識水平、學(xué)習(xí)風(fēng)格等個性特征,提供持續(xù)的精準(zhǔn)個性化干預(yù)。大數(shù)據(jù)技術(shù)支撐下的新型教與學(xué)已成為課堂教學(xué)的主角,成為技能和學(xué)科知識傳授的主要教學(xué)形式。
目前,已有很多教學(xué)平臺提供了學(xué)習(xí)資源管理、學(xué)習(xí)行為記錄、學(xué)習(xí)測驗管理等功能以支持大數(shù)據(jù)背景下的精準(zhǔn)教學(xué),但對數(shù)據(jù)的利用和分析,尤其是沒有深度挖掘、利用學(xué)生學(xué)習(xí)過程和結(jié)果學(xué)習(xí)數(shù)據(jù)以實現(xiàn)智能推送和自動化精準(zhǔn)干預(yù)。因此,開展基于學(xué)習(xí)過程大數(shù)據(jù)的智能評價推送系統(tǒng)研究,實現(xiàn)智能評價和精準(zhǔn)推送,將對當(dāng)下的新形態(tài)教與學(xué)具有重要的促進(jìn)作用和現(xiàn)實意義。
教學(xué)大數(shù)據(jù)已經(jīng)引起國內(nèi)外眾多學(xué)者的關(guān)注。楊藝等學(xué)者開展了大數(shù)據(jù)思維下教學(xué)過程數(shù)據(jù)分析及應(yīng)用研究,從教學(xué)活動流維度提出了教學(xué)大數(shù)據(jù)分析模式,對學(xué)習(xí)相關(guān)性行為因素關(guān)聯(lián)性進(jìn)行了實證研究[1]。魏順平等學(xué)者對Moddle平臺在線課程教學(xué)數(shù)據(jù)應(yīng)用學(xué)習(xí)分析技術(shù)開展教學(xué)反思,結(jié)果分析表明基于數(shù)據(jù)分析的教學(xué)反思可實現(xiàn)比線下教學(xué)活動更為精準(zhǔn)的教學(xué)反思[2]。孫潔等學(xué)者利用學(xué)習(xí)分析技術(shù)開展了適應(yīng)“互聯(lián)網(wǎng)+教育”的自適應(yīng)學(xué)習(xí)框架探索和研究,從利益相關(guān)者、目的和方法等五個視角開展了自適應(yīng)學(xué)習(xí)框架中關(guān)聯(lián)因素價值挖掘探索,為智能化、差異化的教育生態(tài)提供了參考意義[3]。曹盼等學(xué)者擇取兩個不同的網(wǎng)絡(luò)學(xué)習(xí)平臺應(yīng)用社會網(wǎng)絡(luò)分析工具開展了學(xué)習(xí)過程分析和應(yīng)用的實證研究,給學(xué)習(xí)分析實證研究提供了借鑒意義[4]。仇煥青、孫昊等學(xué)者功能設(shè)計角度開展了學(xué)習(xí)行為大數(shù)據(jù)挖掘與分析系統(tǒng)的設(shè)計研究[5][6]。
綜上所述,較多學(xué)者聚焦關(guān)注基于學(xué)習(xí)過程大數(shù)據(jù)的學(xué)習(xí)行為分析研究,缺乏對分析結(jié)果的充分利用,沒有充分利用分析結(jié)果,實現(xiàn)自動化、智能的個性化學(xué)習(xí)服務(wù)和精準(zhǔn)干預(yù)。根據(jù)知網(wǎng)最新文獻(xiàn)調(diào)查研究,智能評價推送系統(tǒng)設(shè)計與研發(fā)相關(guān)的研究較少。本文構(gòu)建基于學(xué)習(xí)過程大數(shù)據(jù)的智能評價推送系統(tǒng)將充分提高學(xué)習(xí)過程大數(shù)據(jù)利用程度,充分發(fā)揮學(xué)習(xí)過程大數(shù)據(jù)數(shù)據(jù)價值,為開展精準(zhǔn)教學(xué)提供便捷、有效的自動智能化干預(yù)技術(shù)支持。
智能評價推送系統(tǒng)設(shè)計綜合考慮經(jīng)濟(jì)性、可行性、安全性等因素,采用分層設(shè)計思想基于Hadoop 分布式存儲系統(tǒng)、Spark 計算框架進(jìn)行方案設(shè)計?;趯W(xué)習(xí)過程大數(shù)據(jù)的智能評價推送系統(tǒng)分為數(shù)據(jù)采集層、數(shù)據(jù)存儲層、數(shù)據(jù)分析層、數(shù)據(jù)應(yīng)用層。數(shù)據(jù)采集層負(fù)責(zé)采集與清洗來自云班課教學(xué)平臺學(xué)習(xí)行為數(shù)據(jù)和測評數(shù)據(jù),數(shù)據(jù)存儲層采用基于Hadoop的HBASE 存儲方案,數(shù)據(jù)分析層使用Spark 技術(shù)對存儲于Hadoop 集群的學(xué)習(xí)過程大數(shù)據(jù)開展關(guān)聯(lián)分析和數(shù)據(jù)挖掘。數(shù)據(jù)應(yīng)用層在數(shù)據(jù)分析層基礎(chǔ)上使用ASP.NET 技術(shù)構(gòu)建Web 服務(wù)實現(xiàn)學(xué)習(xí)任務(wù)單、學(xué)習(xí)報告單推送,差異化學(xué)習(xí)資源推送,實踐過程監(jiān)控以及學(xué)情分析等功能模塊。系統(tǒng)架構(gòu)如圖1 所示。
圖1:系統(tǒng)架構(gòu)
智能評價推送系統(tǒng)數(shù)據(jù)采集層基于redis-scrapy 技術(shù)實現(xiàn)教學(xué)平臺學(xué)習(xí)行為和學(xué)業(yè)數(shù)據(jù)采集,使用scrapy-redis 中得Duplication Filter 組件來實現(xiàn)爬取數(shù)據(jù)的去重。scrapyredis 調(diào)度器從引擎接收請求,將請求的指紋存入redis 中的集合中檢查是否重復(fù),并將不重復(fù)的請求壓入redis 的請求隊列。引擎請求時,調(diào)度器從redis 的請求隊列里根據(jù)優(yōu)先級彈出一個請求返回給引擎,引擎將此請求發(fā)給爬蟲進(jìn)行處理。
數(shù)據(jù)存儲層使用HBase 分布式存儲技術(shù),以支撐學(xué)習(xí)過程和學(xué)業(yè)結(jié)果大數(shù)據(jù)的海量數(shù)據(jù)快速存取。架構(gòu)上HBase能根據(jù)鍵值的大小,把數(shù)據(jù)分布到不同的存儲節(jié)點上,HBase 根據(jù)Zookeeper 主節(jié)點中所存儲的ROOT 表的地址訪問META 表信息,進(jìn)而定位到實際數(shù)據(jù)存儲的region 位置。Hbase 中的表會被劃分為n 個Region,然后存放在多個RegionServer 中, 每個Region 有StartKey 和EndKey,表示這個Region 維護(hù)的RowKey 范圍,而第一個Region 沒有StartKey,最后一個Region 沒有EndKey。需要讀寫數(shù)據(jù)時,RowKey 會落在某個范圍內(nèi),就會定位到目標(biāo)的Region以及所在的RegionServer。默認(rèn)情況下,創(chuàng)建表的時候只有一個Region,當(dāng)表的數(shù)據(jù)增長,數(shù)據(jù)大小大于一定的閾值,HBase 就會找到一個MidKey 將Region 一分為二,這個過程被稱為Region-Split,而Split 是有時間和資源開銷的。為節(jié)省Split 時間和開銷和拆分過程中出現(xiàn)的數(shù)據(jù)熱點問題,本文首先根據(jù)數(shù)據(jù)特征對Region 進(jìn)行預(yù)分區(qū)。預(yù)分區(qū)策略過程如下:
(1)通過隨機(jī)取樣隨機(jī)生成一定數(shù)量的RowKey,將取樣數(shù)據(jù)按升序排序放到一個集合里。
(2)根據(jù)預(yù)分區(qū)的Region 個數(shù),對集合進(jìn)行平均切割。
(3)使用HBaseAdmin.createTable 指定預(yù)分區(qū)的splitKey,即指定region 間的rowkey 臨界值。
HBase 數(shù)據(jù)結(jié)構(gòu)是一種基于列存儲的高階有序稀疏MAP,它的數(shù)據(jù)主要存儲在HDFS 上,利用Hadoop MapReduce 來處理HBase 中的海量數(shù)據(jù),利用Zookeeper 進(jìn)行分布式協(xié)同服務(wù),主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),其讀取過程較為復(fù)雜,原因有二。一是因為HBase 一次范圍查詢可能會涉及多個Region、多塊緩存甚至多個數(shù)據(jù)存儲文件(HFile);二是因為HBase 中更新操作以及刪除操作的實現(xiàn)都很簡單。插入與刪除,沒有更新原始數(shù)據(jù),而是通過時間戳屬性新增版本。讀取過程需要根據(jù)版本進(jìn)行過濾,對已經(jīng)標(biāo)記刪除的數(shù)據(jù)進(jìn)行過濾。
Hbase 采用一致性哈希算法進(jìn)行數(shù)據(jù)映射。普通的哈希算法采用簡單取模的方式,將機(jī)器進(jìn)行散列,這在cache 環(huán)境不變的情況下能取得讓人滿意的結(jié)果,但是當(dāng)cache 環(huán)境動態(tài)變化時,這種靜態(tài)取模的方式顯然就不滿足單調(diào)性的要求。一致性哈希算法的基本實現(xiàn)原理是將機(jī)器節(jié)點和key 值都按照一樣的哈希算法映射到一個0 到2^32 的圓環(huán)上。當(dāng)有一個寫入緩存的請求到來時,計算Key 值k 對應(yīng)的哈希值Hash(k),如果該值正好對應(yīng)之前某個機(jī)器節(jié)點的Hash 值,則直接寫入該機(jī)器節(jié)點,如果沒有對應(yīng)的機(jī)器節(jié)點,則順時針查找下一個節(jié)點,進(jìn)行寫入,如果超過2^32 還沒找到對應(yīng)節(jié)點,則從0 開始查找。但是在實際使用過程中會因為刪除其中一個節(jié)點導(dǎo)致鄰接節(jié)點負(fù)載突然增大而宕機(jī),進(jìn)行導(dǎo)致整個集群的崩潰。
HBase 采用緩存分層設(shè)計,將整個BlockCache 分為三個部分:single-access、multi-access 和in-memory,分別占到整個BlockCache 大小的25%、50%、25%。在一次隨機(jī)讀中,一個Block 從HDFS 中加載出來之后首先放入singleaccess 區(qū),后續(xù)如果有多次請求訪問到這個Block,就會將這個Block 移到multi-access 區(qū)。而in-memory 區(qū)表示數(shù)據(jù)常駐內(nèi)存,一般用來存放訪問頻繁、量小的數(shù)據(jù),比如元數(shù)據(jù),用戶可以在建表的時候設(shè)置列簇屬性IN_MEMORY=true,設(shè)置之后該列簇的Block 在從磁盤中加載出來之后會直接放入in-memory 區(qū)。但是設(shè)置IN_MEMORY=true 并不意味著數(shù)據(jù)在寫入時就會被放到in-memory 區(qū),而是和其他BlockCache 區(qū)一樣,只有從磁盤中加載出Block 之后才會放入該區(qū)。另外,進(jìn)入in-memory 區(qū)的Block 并不意味著會一直存在于該區(qū),仍會基于LRU 淘汰算法在空間不足的情況下淘汰最近最不活躍的一些Block。因為HBase 系統(tǒng)元數(shù)據(jù)都存放在in-memory 區(qū),對于業(yè)務(wù)來說,設(shè)置數(shù)據(jù)屬性IN_MEMORY=true 時導(dǎo)致將hbase:meta 等元數(shù)據(jù)擠出內(nèi)存時有發(fā)生,嚴(yán)重影響所有業(yè)務(wù)性能。
為解決這一問題優(yōu)化HBASE 數(shù)據(jù)存儲與查詢優(yōu)化,本文在散列技術(shù)基礎(chǔ)上針對一致性哈希算法進(jìn)行改進(jìn),降低運(yùn)行過程中節(jié)點變更所導(dǎo)致的數(shù)據(jù)丟失率。并且針對高可用的分布式集群服務(wù)器和本地磁盤特點,設(shè)計存替換策略提高查詢性能,具體策略過程如下。
(1)將所有緩沖數(shù)據(jù)存入到single-access 層,當(dāng)singleaccess 層存儲量達(dá)到指定閾值,計算single-access 層熱度和晉升值;當(dāng)晉升值為0 時,將single-access 的1/3 遷移到multi-access 層;當(dāng)晉升值不為0 是,將single-access 層中超過閾值的數(shù)據(jù)遷移到multi-access 層;
(2)若數(shù)據(jù)遷移后的single-access 的數(shù)據(jù)存儲量依舊超過超過閾值,將熱度最小的數(shù)據(jù)淘汰,直到小于閾值為止。
根據(jù)計算環(huán)境的不同,推薦系統(tǒng)的預(yù)測大體上可以分為在線、離線兩種。在線計算,指的是在線上的推薦服務(wù)中,對接受到的請求,進(jìn)行實時計算,生成推薦結(jié)果并直接返回給請求方。離線計算,是指以一定時間周期運(yùn)行的,對數(shù)據(jù)庫中的大批量數(shù)據(jù)進(jìn)行的計算。離線計算的結(jié)果通常會寫入數(shù)據(jù)庫中,供后續(xù)任務(wù)讀取。Spark MLlib 提供了 Pipeline的接口,將模型訓(xùn)練,連同訓(xùn)練前的特征預(yù)處理、特征工程、特征交叉等階段,按照一定次序組合成為一個流水線,并支持將訓(xùn)練好的整個流水線持久化到磁盤上。在預(yù)測階段,只需將訓(xùn)練時存下的流水線模型整個加載到集群上,然后將原始特征直接輸入進(jìn)流水線,即可得到模型預(yù)測的結(jié)果。
智能評價推送系統(tǒng)應(yīng)用層主要任務(wù)是構(gòu)建基于Spark 的學(xué)習(xí)資源推薦引擎。通過對存儲在HDFS 中的學(xué)習(xí)者學(xué)習(xí)行為數(shù)據(jù)、學(xué)習(xí)結(jié)果數(shù)據(jù)進(jìn)行特征提取,采用主成分分析降維,多模協(xié)同支配的差異化學(xué)習(xí)資源推薦模型,根據(jù)互信息特征利用深度神經(jīng)網(wǎng)絡(luò)構(gòu)建學(xué)習(xí)者與學(xué)習(xí)資源之間關(guān)聯(lián)關(guān)系,并利用支持向量機(jī)等機(jī)器學(xué)習(xí)算法完成推薦模型的構(gòu)建。更進(jìn)一步,考慮到學(xué)習(xí)者對某一資源的訪問頻率,融入學(xué)習(xí)者特征優(yōu)化以此構(gòu)建差異化學(xué)習(xí)資源推送模型。分析層的離線計算使用 Spark MLlib 以分布式的方式在集群上,在線計算則是在用 Java 寫的線上服務(wù)加以實現(xiàn),如圖2 所示。
圖2:學(xué)習(xí)資源推薦引擎
本文采用無量綱化中的歸一化技術(shù)對資源、學(xué)習(xí)者以及場景數(shù)據(jù)進(jìn)行預(yù)處理,接著采用遞歸式特征消除法分別上述數(shù)據(jù)進(jìn)行特征選擇。遞歸式特征消除法根據(jù)給定一個外部的估計器,該估計起對特征賦予一定的權(quán)重,通過處理越來越少的特征集合來遞歸的選擇特征。首先,評估器在初始的特征集合上面進(jìn)行訓(xùn)練并且每一個特征的重要程度是通過一個系數(shù)屬性或者權(quán)重屬性來獲得。然后,從當(dāng)前的特征集合中移除最不重要的特征。在特征集合上不斷的重復(fù)遞歸這個步驟,直到最終達(dá)到所需要的特征數(shù)量為止。
特征提取與處理里面,涉及高維特征向量的問題往往容易陷入維度災(zāi)難。隨著數(shù)據(jù)集維度的增加,算法學(xué)習(xí)需要的樣本數(shù)量呈指數(shù)級增加,從大數(shù)據(jù)集中學(xué)習(xí)需要更多的內(nèi)存和處理能力。另外,隨著維度的增加,數(shù)據(jù)的稀疏性會越來越高。在高維向量空間中探索同樣的數(shù)據(jù)集比在同樣稀疏的數(shù)據(jù)集中探索更加困難。為提高推薦模型的效率和精準(zhǔn)度,本文采用主成分分析對所選擇的特征進(jìn)行降維。主成分分析將數(shù)據(jù)投射到一個低維子空間實現(xiàn)降維。例如,二維數(shù)據(jù)集降維就是把點投射成一條線,數(shù)據(jù)集的每個樣本都可以用一個值表示,不需要兩個值。三維數(shù)據(jù)集可以降成二維,就是把變量映射成一個平面。一般情況下,n 維數(shù)據(jù)集通過映射降成k 維子空間,其中k 是選取的主成分?jǐn)?shù)目。PCA 算法流程如下:
(1)將原始數(shù)據(jù)按列組成n 行m 列矩陣X;
(2)將X 的每一行(代表一個屬性字段)進(jìn)行零均值化,即減去這一行的均值;
(3)求出協(xié)方差矩陣;
(4)求出協(xié)方差矩陣的特征值及對應(yīng)的特征向量r;
(5)將特征向量按對應(yīng)特征值大小從上到下按行排列成矩陣,取前k 行組成矩陣P,即為降維到k 維后的數(shù)據(jù)。
傳統(tǒng)的協(xié)同過濾推薦機(jī)制根據(jù)學(xué)習(xí)者自身偏好以及對相關(guān)資源的學(xué)習(xí)與否來開展推薦,忽略了學(xué)習(xí)者對學(xué)習(xí)資源的訪問頻率這個重要因素。本文構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)模型構(gòu)建學(xué)習(xí)資源個性化推薦。隱藏層 ReLU 激活函數(shù)減少梯度爆炸,代價函數(shù)采用交叉熵代價函數(shù),輸出層采用回歸模型。如圖3 所示。
圖3:深度神經(jīng)網(wǎng)絡(luò)模型
智能評價推送系統(tǒng)應(yīng)用層采用ASP.NET Core 技術(shù)構(gòu)建RESTful Web 服務(wù),并以此構(gòu)建Web 程序向?qū)W生教師提供直觀明了的用戶界面。RESTful 從資源的定義、獲取、表述、關(guān)聯(lián)、狀態(tài)變遷等角度,解釋資源與URI、統(tǒng)一資源接口、資源的表述、資源的鏈接、狀態(tài)的轉(zhuǎn)移。RESTful 使用標(biāo)準(zhǔn)的HTTP 方法與資源進(jìn)行交互,包括GET 來檢索資源,POST 來創(chuàng)建資源,PUT 來更新資源,DELETE 鍵刪除資源。基于RESTful 的Web 服務(wù)編程模型直觀明了,大大降低了本機(jī)進(jìn)行序列與反序列操作的復(fù)雜性,并且根據(jù)模塊化原則將系統(tǒng)功能進(jìn)行服務(wù)化,便于實現(xiàn)智能評價推送系統(tǒng)與現(xiàn)已存在的系統(tǒng)之間的集成。
本文主要開展了基于Hadoop 和Spark 框架的智能評價推送系統(tǒng)設(shè)計研究,包括基于redis-scrapy 的分布式數(shù)據(jù)采集、HBase 數(shù)據(jù)庫性能優(yōu)化以及基于Spark 的學(xué)習(xí)資源推薦引擎等關(guān)鍵模塊的設(shè)計研究,后續(xù)將進(jìn)一步根據(jù)設(shè)計開展相應(yīng)的工程實踐和性能測試。