高勇鋼
摘要:在高校開設(shè)python課程時,為了適應(yīng)大數(shù)據(jù)時代對數(shù)據(jù)分析的要求,采用研究型案例教學(xué)方法增強(qiáng)學(xué)生計算思維能力和解決復(fù)雜專業(yè)問題的能力,并且初步掌握了研究具體問題的基本方法。
關(guān)鍵詞:Python; 協(xié)同過濾; 推薦系統(tǒng);相似度計算;均方根誤差
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)10-0097-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
Application of Research Case in Python Teaching Method
GAO Yong-gang
(School of Computer and Information, Anhui Normal University, Wuhu 241003, China)
Abstract: In order to adapt to the requirements of data analysis in the era of big data, the research-based case teaching method is used to enhance students' ability to calculate thinking and solve complex professional problems, and to master the basic methods of researching specific problems.
Key words: Python; collaborative filtering; recommendation system; similarity computing; RMSE
1 引言
Python由于其簡單、易學(xué)、面向?qū)ο?、可擴(kuò)展性、開源等優(yōu)點成為最受歡迎的程序設(shè)計語言之一,眾多科學(xué)計算軟件包都提供了Python的調(diào)用接口,例如OpenCV、VTK、ITK。而Python專用的科學(xué)計算擴(kuò)展庫如SciPy、NumPy和matplotlib,它們分別為Python提供了數(shù)值運算、快速數(shù)組處理以及繪圖功能。正是由于Python可擴(kuò)展性,使得Python有著極其豐富的庫進(jìn)行圖形處理、數(shù)學(xué)處理、文本處理、數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程、Web編程多媒體應(yīng)用等。
現(xiàn)在國內(nèi)外眾多高校采用Python為非計算機(jī)專業(yè)與計算機(jī)專業(yè)教授程序設(shè)計課程。Python是一個生態(tài)圈,針對具體專業(yè)可適當(dāng)加強(qiáng)第三方庫知識學(xué)習(xí)與應(yīng)用。當(dāng)今已進(jìn)入大數(shù)據(jù)時代,數(shù)據(jù)分析作為一門前沿技術(shù),廣泛應(yīng)用于物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、云計算等戰(zhàn)略新興產(chǎn)業(yè)。Python由于其特點非常適合用于數(shù)據(jù)分析,因此計算機(jī)專業(yè)學(xué)生在學(xué)習(xí)Python時都應(yīng)關(guān)注其數(shù)據(jù)分析的應(yīng)用。工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)中要求學(xué)生具備能夠應(yīng)用信息技術(shù)對復(fù)雜工程問題進(jìn)行預(yù)測、模擬和求解的能力,同時要在教學(xué)中貫徹計算思維的理念。為了上述目標(biāo),在Python教學(xué)中不能僅僅講解基礎(chǔ)知識,需引入適當(dāng)難度的數(shù)據(jù)分析技術(shù)。本文通過引入一個改進(jìn)的協(xié)同推薦算法的研究型案例來促進(jìn)計算機(jī)專業(yè)學(xué)生學(xué)習(xí)Python效果。
2用研究型案例增強(qiáng)學(xué)生問題求解能力和激發(fā)學(xué)生興趣
2.1案例簡介
本案例是關(guān)于正流行的協(xié)同推薦算法。隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,由此產(chǎn)生的海量信息。為了能從海量信息中找出有價值的信息,信息過濾技術(shù)中的推薦技術(shù)是其中最重要的手段之一,因此推薦系統(tǒng)由此發(fā)展起來[1]。目前主要推薦方法有基于內(nèi)容推薦,有協(xié)同過濾推薦[2]等幾種方法。其中協(xié)同過濾推薦方法分為基于用戶[3,4]和基于項目兩種推薦方法[5],這兩種方法都要依賴于用戶-項目評分矩陣來給出項目推薦列表,但由于網(wǎng)絡(luò)產(chǎn)生的信息過載,使得用戶數(shù)和項目數(shù)增長很快,隨之而來出現(xiàn)了數(shù)據(jù)稀疏[6]、冷啟動[7]和精度上持續(xù)下降問題??刹捎媒稻S法與缺失值填充[8]等方法能改善和緩解數(shù)據(jù)稀疏問題。降維法主要包括主成分分析法和矩陣奇異值分解法,降維法計算量大,在實際應(yīng)用中操作性不高。缺失值填充法對缺失的用戶項目評分矩陣的項目用相關(guān)值填充,從而增加評價矩陣的密度。針對填充項的選擇,文中改進(jìn)的協(xié)同過濾算法采用了將屬于目標(biāo)用戶的近鄰用戶所有評分均值與對該評分項目的所有真實評分均值結(jié)合起來最終計算出目標(biāo)用戶對該項目的預(yù)估評分。改進(jìn)算法相比較其他幾種經(jīng)典算法在MovieLens 上的實驗結(jié)果分析表明能進(jìn)一步提高推薦效果。
2.2協(xié)同過濾算法介紹
(1) 預(yù)測評分步驟
基于用戶協(xié)同過濾推薦方法可分為如下四個步驟:1) 選擇計算用戶之間相似度的方法; 2)根據(jù)用戶評分的數(shù)據(jù)集計算每個用戶與其他用戶的相似度;3)根據(jù)用戶之間的相似度大小排序來確定每個用戶 K 個近鄰用戶;4) 依據(jù)某用戶K個最近鄰對某項目評分來預(yù)測該用戶對該項目的評分。
(2)用戶相似度的常用計算方法
1) 歐幾里得距離
將兩個用戶對共同項目的評分分別組成一個 n 維特征向量,如果直接求出這兩個向量的歐幾里得距離,則兩個用戶越相似則距離越小,但是算法要求兩用戶越相似則相似度數(shù)值越大,因此對初始?xì)W幾里得距離加1再求倒數(shù),這樣最終將用戶相似度距離控制在0到1范圍內(nèi),所用公式如(1)所示。
在已知某用戶的近鄰后,則該用戶對某項目的評分值由該用戶的K個近鄰對該項目的評分計算獲得。常用公式有(4)式和(5)式,兩式中N(u)表示用戶u的K個近鄰集合。從以上評分預(yù)測方法中可以看出預(yù)測用戶對某項目的評分值是由該用戶的近鄰對該項目的評分及近鄰的相似性決定的。由于項目評分?jǐn)?shù)據(jù)的稀疏性,一般某用戶的近鄰中會存在著許多的未評分項目,則對未評分項目通常用該近鄰用戶的評分均值填充。
2.3 協(xié)同過濾推薦算法的改進(jìn)
在測試協(xié)同過濾算法優(yōu)劣的實驗中,常用的數(shù)據(jù)集是MovieLens數(shù)據(jù)集,在對某用戶對某電影分值預(yù)測時,該用戶的近鄰中只有極少數(shù)對某電影有評分,絕大多數(shù)沒有評分。大多數(shù)用戶沒有時間看大多數(shù)電影并且給予評分,或者看了某部電影無論喜歡與否都不評分。對于沒有評論的近鄰用戶則用該用戶的評分均值來表示確實可以提高預(yù)測的準(zhǔn)確度,但沒有考慮到對這部電影真實評分的其他客戶,而這些用戶對該電影的評分對最終該電影的預(yù)測是不可或缺的。
[Vu,i=Ru+v∈N(u)sim(u,v)×(xv,i-Rv)v∈N(u)|sim(u,v)|] (6)
采用改進(jìn)算法的評分預(yù)測的公式如(6)所示,xv,i表示如用戶v對i項目評分,如用戶v沒有對i項目評分則xv,i的值為數(shù)據(jù)集中所有對項目i的評分的均分。
用戶協(xié)同過濾推薦算法可分為如下四個步驟:1) 選擇修正余弦距離計算用戶之間相似度;2)根據(jù)用戶評分的數(shù)據(jù)集計算每個用戶與其他用戶的相似度; 3)根據(jù)用戶之間的相似度大小排序來確定每個用戶 的K 個近鄰用戶;4) 根據(jù)某個用戶K個最近鄰的評分?jǐn)?shù)據(jù)用公式(6)計算預(yù)測評分。
2.4 改進(jìn)算法實驗
(1) 選擇與采樣數(shù)據(jù)集
實驗采用MovieLens數(shù)據(jù)集,該數(shù)據(jù)集由美國明尼蘇達(dá) GroupLens 研究組提供的。該數(shù)據(jù)集總共分為 3個不同大小的版本用來記錄了用戶對電影的評分。其中之一的小版本數(shù)據(jù)集它包含了943 名用戶對 1682部電影評分信息,共有100000 條評分信息,每名用戶至少有20 條以上的評分信息,用1 到5評分值代表用戶對所看電影的喜好程度。實驗中采用MovieLens小版本數(shù)據(jù)集,將數(shù)據(jù)集分為訓(xùn)練集與測試集,其中訓(xùn)練集占總數(shù)據(jù)集的80%,測試集占20%。按照訓(xùn)練集與測試集的比例,隨機(jī)生成了6組實驗數(shù)據(jù)。由于測試集中可能存在某用戶在訓(xùn)練集不存在,則將該用戶從測試集中刪除,這樣可提高預(yù)測評分的可靠性。實驗中將對每一個算法用6組實驗數(shù)據(jù)測試6次,取6次實驗結(jié)果的均值。在評分預(yù)測中,計算預(yù)測準(zhǔn)確度般可以用均方根誤差( RMSE)和平均絕對誤差( MAE)來衡量,由于RMSE 采用了增加對預(yù)測不準(zhǔn)的用戶項目評分值 ,因此對推薦算法要求更嚴(yán)格,所以文中選用 RMSE 作為評測指標(biāo)。
(2) 實驗結(jié)果及分析
實驗根據(jù)三種常用不同相似度計算方法,以及基于均值還是雙重均值的不同共形成6種算法分別進(jìn)行實驗。表1是采用歐幾里得距離計算用戶之間相似度,基于均值與雙重均值分組實驗數(shù)據(jù)求均值后RMSE對比所示,圖1是表1的直方圖顯示;表2是采用皮爾遜距離計算用戶之間相似度,基于均值與雙重均值分組實驗數(shù)據(jù)求均值后RMSE對比所示,圖2是表2的直方圖顯示;表3是采用修正余弦距離計算用戶之間相似度,基于均值與雙重均值分組實驗數(shù)據(jù)求均值后RMSE對比所示,圖3是表3的直方圖顯示;表4是采用三種不同距離的雙重均值實驗數(shù)據(jù)求均值后RMSE對比所示,圖4是表4的直方圖顯示。由實驗數(shù)據(jù)可見,無論采用何種距離計算用戶相似度,采用改進(jìn)算法都能使RMSE更小,且采用修正余弦的改進(jìn)算法優(yōu)于其他兩種距離改進(jìn)算法。
針對用戶評分?jǐn)?shù)據(jù)集中稀疏性,常用近鄰用戶評分均值填充,該方法確實可以有效提高推薦系統(tǒng)的RMSE。但實際某用戶對某個項目的預(yù)測評分結(jié)果不僅與近鄰用戶對該項目的評分有關(guān),也與近鄰用戶的評分均值有關(guān),并且還和該項目的所有用戶評分均值有關(guān)。因此文中采用基于這兩種均值的協(xié)同過濾推薦算法,實驗表明可以進(jìn)一步提高RMSE。
3 結(jié)束語
推薦算法是常用的大數(shù)據(jù)分析,通過改進(jìn)的協(xié)同推薦算法案例,既可以讓學(xué)生了解常用的推薦算法,同時又能分析不同推薦算法優(yōu)點和缺點,并提出一種改進(jìn)的推薦算法且通過實驗證明更好,所有實驗中涉及的程序都用Python實現(xiàn)。因此該案例可以增強(qiáng)學(xué)生用Python分析數(shù)據(jù)的能力,并且可以增強(qiáng)解決復(fù)雜工程能力和計算思維能力。
參考文獻(xiàn):
[1]許海玲,吳瀟,李曉東,等. 互聯(lián)網(wǎng)推薦系統(tǒng)比較研究[J].軟件學(xué)報, 2009,20(2):350-362.
[2]Goldberg D, Nichols D, Oki B M, et al. Using Collaborative Filtering to Weave an Information Tapestry[J]. Communications of the ACM,1992,35(12):61-70.
[3] 馬婉貞,錢育蓉. 基于標(biāo)簽匹配的協(xié)同過濾推薦算法研究[J].計算機(jī)研究與發(fā)展,2017,27(7):25-28.
[4] 蘭艷,曹芳芳.面向電影推薦的時間加權(quán)協(xié)同過濾算法的研究[J].計算機(jī)科學(xué),2017,44(4):295-301.
[5]Deshpande M,Karypis G. Item-based top-n recommendation algorithms[J]. ACM Transactions on Information Systems, 2004,22(1):143-177.
[6] 云祥富.面向稀疏性數(shù)據(jù)的協(xié)同過濾推薦算法的研究[D]. 長春:吉林大學(xué), 2017.
[7] 于洪, 李俊華. 一種解決新項目冷啟動問題的推薦算法[J]. 軟件學(xué)報, 2015,26(6):1395-1408.
[8] 蔣宗禮, 王威, 陸晨. 基于均值預(yù)估的協(xié)同過濾推薦算法改進(jìn)[J]. 計算機(jī)研究與發(fā)展,2017,27(5):1-5.
【通聯(lián)編輯:王力】