趙昌旭 張永康
摘? 要:在如今大數(shù)據(jù)的時(shí)代,推薦系統(tǒng)的應(yīng)用十分廣泛和頻繁。常用的推薦系統(tǒng)一般是基于協(xié)同過濾算法構(gòu)建用戶—評(píng)分矩陣,計(jì)算相關(guān)度來進(jìn)行精準(zhǔn)推薦的。這其中又可分為基于用戶的協(xié)同過濾算法和基于物品的協(xié)同過濾算法。隨著互聯(lián)網(wǎng)數(shù)據(jù)的日益增加,基于物品的協(xié)同過濾算法因其高效率、高精度、低資源開銷等特性而被廣泛應(yīng)用。
關(guān)鍵詞:協(xié)同過濾算法;大數(shù)據(jù);信息過載;Pearson相似度;用戶—評(píng)分矩陣;數(shù)據(jù)價(jià)值密度;余弦相似度;歸一化;
Abstract:In today's era of big data,the application of recommendation systems is very extensive and frequent. The commonly used recommendation system is generally based on the collaborative filtering algorithm to construct a user-score matrix,and the correlation is calculated to accurately recommend. These can be further divided into a user-based collaborative filtering algorithm and an item-based collaborative filtering algorithm. With the increasing Internet data,the item-based collaborative filtering algorithm is widely used due to its high efficiency,high precision,low resource overhead and other characteristics.
Keywords:Collaborative filtering algorithm;Big Data;Information overload;Pearson similarity;User-score matrix;Data value density;Cosine similarity;Normalized
1.引言
大數(shù)據(jù)背景下的互聯(lián)網(wǎng)中,信息量十分龐大。這不僅造成了信息的價(jià)值密度下降,而且還導(dǎo)致了信息處理的效率降低,從而產(chǎn)生了“信息過載”問題。推薦系統(tǒng)正是解決“信息過載”問題的一種有效手段。推薦系統(tǒng)應(yīng)用十分廣泛且?guī)淼膬r(jià)值十分可觀。其常用的算法就是協(xié)同過濾算法,這其中包含Pearson算法:即建立用戶—評(píng)分矩陣,數(shù)值歸一化,余弦相似度計(jì)算等步驟。本文以此為基礎(chǔ),建立了一個(gè)基于協(xié)同過濾算法的職位推薦系統(tǒng)。在提高算法執(zhí)行效率的基礎(chǔ)之上,保證推薦的準(zhǔn)確性。
2.準(zhǔn)備職位
搭建環(huán)境:實(shí)驗(yàn)平臺(tái)可采用Python或Java,其中:Python可采用ANACONDA集成開發(fā)環(huán)境、Numpy模塊以及Jupyter Notebook平臺(tái)。Java可采用jdk1.8、Eclipse及Ejml(Efficient Java Matrix Library)矩陣運(yùn)算包等。本文采用python來進(jìn)行系統(tǒng)的模擬。
3.基于協(xié)同過濾算法的職位推薦系統(tǒng)的構(gòu)建和模擬
3.1構(gòu)建用戶—評(píng)分矩陣
現(xiàn)創(chuàng)建一的二維矩陣E,以此為用戶—評(píng)分矩陣,如圖(1)所示,用以代表不同用戶以及不同的職位。矩陣中每個(gè)數(shù)據(jù)元素代表某一用戶對(duì)該職位的評(píng)分。
3.2計(jì)算每個(gè)職位得分的平均值
3.3用戶—評(píng)分矩陣歸一化處理
3.4余弦相似度算法求職位的相似度
5.推薦系統(tǒng)偽代碼
(1)if database is NULL goto(2)else goto(3)
(2)Default_Recommend();goto(8)
(3)GetData();Get Work_List()
(4)Get_User_Rating_Matrix();
(5)Collaborative_Filtering();
(6)ifgoto(7)else goto(3)
(7)Recommend();
(8)Get_User_Rating();Set_Database();goto(3)
(9)End;
6.測(cè)試數(shù)據(jù)
小數(shù)據(jù)集測(cè)試,由于基于物品的協(xié)同過濾算法只需要部分?jǐn)?shù)據(jù)便可以對(duì)用戶的評(píng)分進(jìn)行預(yù)測(cè)和推薦,現(xiàn)以此為前提,利用Jupyter內(nèi)的Numpy工具包進(jìn)行用戶-評(píng)分矩陣的構(gòu)建,具體如下表(5)中的二維矩陣E所示:
即可預(yù)測(cè)用戶A對(duì)職位1的評(píng)分為2.6。此時(shí)若假設(shè),即可將該職位推薦給用戶A。此次算法執(zhí)行完畢,系統(tǒng)準(zhǔn)備從隊(duì)列取下一條職位,對(duì)用戶—評(píng)分矩陣進(jìn)行更新,推薦新的職位給用戶。
當(dāng)有較大量的數(shù)據(jù)時(shí),此算法雖可進(jìn)行計(jì)算,但開銷成本較大。系統(tǒng)需要處理具有上萬(wàn)個(gè)元素的用戶—評(píng)分矩陣,所以,此時(shí)處理效率較低。那么就需要對(duì)算法進(jìn)行改進(jìn)。比如進(jìn)行用戶—評(píng)分矩陣的SVD分解等,當(dāng)然這可以通過Python中的Numpy工具包,使用linalg線性代數(shù)工具進(jìn)行處理,對(duì)用戶—評(píng)分矩陣進(jìn)行降維,以實(shí)現(xiàn)在不降低推薦準(zhǔn)確率的前提下,提高算法的執(zhí)行效率和系統(tǒng)的開銷。
參考文獻(xiàn)
[1]? 李啟序.基于隱語(yǔ)義模型改進(jìn)的協(xié)同過濾推薦算法[J].信息通信,2019(03):38-40.
[2]? 王德賢,何先波,賀春林,周坤,陳敏治.結(jié)合L_1和L_2正則化約束的隱語(yǔ)義預(yù)測(cè)模型研究[J/OL].計(jì)算機(jī)工程與應(yīng)用:1-8[2019-08-29].http://kns.cnki.net/kcms/detail/11.2127.tp.20190115.1403.006.html.
[3]? 龔成. 基于隱語(yǔ)義模型的動(dòng)態(tài)協(xié)同過濾算法的研究[D].北京工業(yè)大學(xué),2018.
[4]? 龔成. 基于隱語(yǔ)義模型的動(dòng)態(tài)協(xié)同過濾算法的研究[D].北京工業(yè)大學(xué),2018.
[5]? Koren Y. Factorization meets the neighborhood:a multifaceted collaborative filtering model[C]// Acm Sigkdd International Conference on Knowledge Discovery & Data Mining. 2008.