馬慶祥
(重慶工商職業(yè)學院 重慶 401520)
?安裝Spark
?集成Hadoop
?集成Hive
?集成Flume
為了更高效地完成系統(tǒng)的搭建及運行,系統(tǒng)中需要使用Spark集群,因此首先安裝Spark;為了使Spark能訪問到Hadoop,因此,需要集成Hadoop,Spark的離線計算需要穩(wěn)定的數(shù)據(jù)源,還需要使用Hive搭建數(shù)據(jù)倉庫,并與Spark集成;為了能以最簡便的方式采集日志數(shù)據(jù),因此需要使用Flume。
圖1 環(huán)境搭建路線圖
在已經(jīng)搭建好的大數(shù)據(jù)應(yīng)用平臺的基礎(chǔ)上,進入對智能選課推薦系統(tǒng)編程開發(fā)前,需要完善系統(tǒng)的設(shè)計,主要思路及技術(shù)路線如下:
?爬蟲設(shè)計
?設(shè)計用戶的交互界面?設(shè)計日志的輸出格式
?設(shè)計推薦流程與選擇推薦算法
?設(shè)計數(shù)據(jù)模型
為完成智能選課推薦平臺,需要搜集課程數(shù)據(jù)。因此,本案例將使用Scrapy爬蟲框架從部分免費公開的課程資源平臺爬取數(shù)據(jù)和使用Requests爬蟲框架調(diào)用相關(guān)API直接獲取數(shù)據(jù)。數(shù)據(jù)獲取后需要建立數(shù)據(jù)庫表將數(shù)據(jù)存入Mongodb,然后在用戶交互界面進行查詢。
在用戶操作頁面的時候,后臺記錄用戶的操作行為,并形成日志。此時Flume組件將日志轉(zhuǎn)發(fā)到HDFS或者Kafka,為Spark提供數(shù)據(jù)。Spark拿到數(shù)據(jù)后一方面開始執(zhí)行推薦功能,一方面完成數(shù)據(jù)看板的統(tǒng)計功能。
圖2 智能選課推薦系統(tǒng)設(shè)計思路圖
爬蟲的主要任務(wù)就是抓取課程網(wǎng)站的數(shù)據(jù)。為了盡量快速,并采集足夠多的數(shù)據(jù),這里使用分布式爬蟲。爬蟲結(jié)構(gòu)如圖3所示[1]。
圖3 爬蟲結(jié)構(gòu)設(shè)計圖
第一步,開發(fā)一個簡單的爬蟲,獲取所有課程待爬取頁面的鏈接,將這些鏈接存入Redis。
第二步,開發(fā)采集課程詳細信息的爬蟲,并接入Redis。
最后,同時運行第一、二步的爬蟲,并將第二步的爬蟲部署到不同的計算節(jié)點上,并全部啟動,整個采集過程就會按流水線式的執(zhí)行。
如圖4所示,是未注冊用戶的訪問頁面。在這個頁面未注冊用戶可以注冊,也可以查詢課程信息。這些信息是根據(jù)默認情況下給未注冊用戶推薦的熱門課程。
圖4 默認推薦列表
未注冊用戶進入站點后,點擊注冊跳轉(zhuǎn)到注冊頁面,如圖5所示。
圖5 系統(tǒng)注冊頁面
未注冊用戶注冊完畢后就是注冊用戶,注冊用戶進入系統(tǒng)后也會查看自己的課程列表頁。這一列表頁就是根據(jù)用戶的操作數(shù)據(jù),系統(tǒng)進行大數(shù)據(jù)分析然后形成的推薦列表。如圖6所示。
圖6 ALS算法推薦
在該頁面用戶可以給課程打分、打標簽進行分類等操作。
未注冊用戶、注冊用戶都可以查看課程詳細信息,如圖7所示。
圖7 課程詳情
管理員進入后臺后,展示的課程列表就不再是推薦的了,而是自然數(shù)據(jù)形成的列表。管理員在列表頁可以點擊編輯按鈕,修改課程信息,也可以點擊刪除按鈕刪除該課程,也可以點擊詳情按鈕查看該課程的詳細信息,包括用戶評分等。具體如圖8所示。
圖8 管理員操作頁
采用普通的推薦方式,比如推薦熱門課程,采用的邏輯就是將課程點擊率、觀看人次、推薦量等數(shù)據(jù)匯總起來,然后選出前十名或者前二十名。這種推薦方式考慮更多的是部分學生的共性,即大家都喜歡的課程,但是卻沒有照顧到學生的個性化需求。為了讓更多的課程有機會被推薦,在系統(tǒng)中設(shè)計推薦模型的分析,即基于協(xié)同過濾的方式來實現(xiàn)課程的推薦。推薦流程如圖9所示,首先將用戶行為數(shù)據(jù)存入Mysql或者log日志文件,然后通過Sqoop將Mysql數(shù)據(jù)和Flume將Log數(shù)據(jù)上傳到HDFS,使用Hive和Spark進行分析推薦,最后將數(shù)據(jù)存入Mysql。用戶刷新頁面,即可看到推薦列表[2]。
圖9 推薦流程設(shè)計圖
協(xié)同過濾是一種根據(jù)用戶對各種產(chǎn)品的交互與評分來推薦新產(chǎn)品的推薦系統(tǒng)技術(shù)。協(xié)同過濾吸引人的地方就在于它只需要輸入一系列用戶/產(chǎn)品的交互記錄,協(xié)同過濾算法能夠根據(jù)這些交互記錄知道哪些產(chǎn)品之間比較相似(因為相同的用戶與它們發(fā)生了交互)以及哪些用戶之間比較相似,然后可以作出新的推薦。交互記錄分為“顯式”反饋(例如在選課網(wǎng)站上進行課程評分)和“隱式”反饋(例如用戶訪問了一個課程的頁面但是沒有對課程評分)。
推薦系統(tǒng)依賴不同類型的輸入數(shù)據(jù),最方便的是高質(zhì)量的顯式反饋數(shù)據(jù),它們包含用戶對感興趣的課程進行明確的評價。但是顯式反饋數(shù)據(jù)不一定總是找得到,因此推薦系統(tǒng)可以從更豐富的隱式反饋信息中推測用戶的偏好。
隱式反饋類型包括觀看課程的歷史、瀏覽課程的歷史、搜索課程的模式甚至鼠標動作等。許多研究都集中在處理顯式反饋,然而在很多應(yīng)用場景下,應(yīng)用程序重點關(guān)注隱式反饋數(shù)據(jù)。因為可能用戶不愿意評價課程或者由于系統(tǒng)限制我們不能收集顯式反饋數(shù)據(jù)。在隱式模型中,一旦用戶允許收集可用的數(shù)據(jù),在客戶端并不需要額外的顯式數(shù)據(jù)[3]。
圖10 ALS算法應(yīng)用流程圖
本論文的研究內(nèi)容是基于協(xié)同過濾推薦算法的智能選課系統(tǒng)在教育教學課程資源個性化推薦方面的應(yīng)用與實踐。在我國高校教育教學領(lǐng)域,該研究內(nèi)容還處于發(fā)展階段,但基于推薦模式的算法已經(jīng)在諸如電商平臺、社交平臺、短視頻平臺等進行了大量的商業(yè)化運作和應(yīng)用。
基于協(xié)同過濾的課程推薦系統(tǒng)的運用以及對它們經(jīng)驗的借鑒,有助于促進選課系統(tǒng)性能上的加強以及促進學生在選課質(zhì)量方面提升,是該領(lǐng)域的主要意義和價值。同時,我們注意到,高等院校以外的精品課堂、云課堂等在線課程運營商,有著相當豐富的在線課程資源,通過本系統(tǒng)研究的成果,結(jié)合校內(nèi)在線課程資源,雙渠道合力,必定能打造一個高可用、高性能、高效率的個性化智能選課推薦系統(tǒng)。