国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Pyspark平臺(tái)的協(xié)同過(guò)濾推薦算法應(yīng)用與實(shí)現(xiàn)

2018-04-21 08:16許文英
關(guān)鍵詞:算子協(xié)同矩陣

許文英,向 強(qiáng)

(西南民族大學(xué)電氣信息工程學(xué)院,四川 成都 610041)

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,人們的生活越來(lái)越豐富.尤其近幾年來(lái),電子商務(wù)的快速發(fā)展,各大網(wǎng)站銷售的商品幾乎涵蓋人們的所有需求.并且伴隨著電商平臺(tái)的物品豐富多樣,數(shù)量數(shù)不勝數(shù),甚至一類相似物品數(shù)量達(dá)到幾十個(gè),使得人們選購(gòu)商品的時(shí)候,信息過(guò)載導(dǎo)致選購(gòu)商品倍感費(fèi)力.在海量的信息情況下,商家對(duì)顧客消費(fèi)的大量數(shù)據(jù)的處理技術(shù)提出嚴(yán)峻的挑戰(zhàn),消費(fèi)者對(duì)紛繁復(fù)雜的商品,很難準(zhǔn)確定位自己所需求的物品.因此,推薦系統(tǒng)[1]應(yīng)運(yùn)而生.

由最早的亞馬遜推薦系統(tǒng)[2],到目前各知名的淘寶網(wǎng)、豆瓣網(wǎng)、京東等電商門戶的各自的推薦系統(tǒng),都得到廣泛的應(yīng)用,并取得顯著的成功.傳統(tǒng)的推薦系統(tǒng)包括基于協(xié)同過(guò)濾算法的推薦系統(tǒng)[3]、基于用戶相似的矩陣分解模型算法的推薦系統(tǒng)[4]、社會(huì)化的推薦系統(tǒng)[5]等.在電商時(shí)代,更好的掌握和運(yùn)用用戶與物品的數(shù)據(jù),才能為電商的運(yùn)營(yíng)帶來(lái)更好的指導(dǎo)方向.隨著大數(shù)據(jù)分布式技術(shù)的發(fā)展,對(duì)于推薦系統(tǒng)框架:車晉強(qiáng)等人對(duì)分布式Spark的協(xié)同過(guò)濾推薦算法研究[6],岑凱倫等人基于Spark平臺(tái),對(duì)電商實(shí)時(shí)推薦系統(tǒng)的研究[7],劉壽強(qiáng)等人對(duì)Hadoop平臺(tái)推薦算法的研究[8],彭建喜對(duì)MapReduce平臺(tái)推薦系統(tǒng)的研究[9];近年來(lái),對(duì)推薦算法的有很大的改進(jìn),隨著大數(shù)據(jù)環(huán)境的發(fā)展,大數(shù)據(jù)運(yùn)用推薦系統(tǒng)也隨著變化[10],大數(shù)據(jù)推薦算法有:關(guān)聯(lián)規(guī)則算法[10],社交網(wǎng)絡(luò)算法[11],組合推薦算法[12].本文針對(duì)傳統(tǒng)的協(xié)同過(guò)濾算法,在大量數(shù)據(jù)運(yùn)算的情況下,存在單節(jié)點(diǎn)計(jì)算難度大以及特征矩陣稀疏等問(wèn)題,適應(yīng)大數(shù)據(jù)環(huán)境的要求、采用大數(shù)據(jù)分布式框架Pyspark,對(duì)并發(fā)性很好的ALS協(xié)同過(guò)濾算法原理進(jìn)行研究并實(shí)踐應(yīng)用.

1 pyspark實(shí)現(xiàn)原理與架構(gòu)

1.1 pyspark原理

根據(jù)官方提供,Apache Spark是一個(gè)開(kāi)源的大數(shù)據(jù)處理框架,它具有高速處理、易用性、構(gòu)建復(fù)雜大數(shù)據(jù)分析的特點(diǎn).相比其它大數(shù)據(jù)處理技術(shù)(如Hadoop,Storm)和MapReduce技術(shù),Spark提供了一個(gè)全面、統(tǒng)一的大數(shù)據(jù)處理框架.

Spark技術(shù)族包括資源調(diào)度、文件存儲(chǔ)、編程模型、分析工具,其中資源調(diào)度包括YARN、Mesos,文件存儲(chǔ)包括HDFS、Tachyon,編程模型包括Hadoop、MapReduce、Spark/Spark Straming,分析工具包括 Hive、Spark SQL、SparkR、Pyspark、GraphX、MLlib.Spark 吸收和借鑒大數(shù)據(jù)分布式計(jì)算模式的優(yōu)勢(shì),它巧妙的融合彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,RDD)和算子(Operation),以此減少對(duì)內(nèi)存的訪問(wèn)和消耗,實(shí)現(xiàn)簡(jiǎn)潔高效的分布式計(jì)算的運(yùn)行框架.其中Spark的算子包括創(chuàng)建算子(Creation)、變換算子(Transformation)、緩存算子(Cache)、行動(dòng)算子(Action),用于對(duì)RDD中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換和操作.

Spark是用面向函數(shù)式變成語(yǔ)言(Scala)編寫的,并提供了幾個(gè)交互式的API.Pyspark即是Spark開(kāi)發(fā)者為python語(yǔ)言開(kāi)發(fā)者提供的pythonAPI,與Spark相似,PySpark的中心數(shù)據(jù)抽象是一個(gè)“彈性分布式數(shù)據(jù)集”(RDD),它只是一個(gè)Python對(duì)象的集合,圖1給出了Pyspark與Spark的關(guān)系示意圖.選擇Pyspark的原因是對(duì)于熟練Python的程序員,Python自身的輕量級(jí)、簡(jiǎn)單的優(yōu)勢(shì),結(jié)合Spark的特點(diǎn),得到很多程序員的青睞.

圖1 Pyspark與Spark的關(guān)系示意圖Fig.1 diagram of the relationship between Pyspark and Spark

1.2 pyspark基本架構(gòu)

Pyspark相對(duì)于Spark是在外圍包裝一層Python API,通過(guò)集成的Py4J對(duì)Python和Java進(jìn)行交互,進(jìn)而實(shí)現(xiàn)Python編寫Spark應(yīng)用程序,其運(yùn)行基本架構(gòu)如圖2所示:

圖2 pyspark架構(gòu)Fig.2 pyspark architecture

a)在Python引擎中,SparkContext通過(guò)Py4J連接Java的解釋器JVM,并且創(chuàng)建一個(gè)JavaSparkContext.

b)Py4J通過(guò)引擎,把本地的Python與JavaSpark-Context的對(duì)象進(jìn)行互相通信.

c)Pyspark的RDD在Python下的轉(zhuǎn)化被映射成Java環(huán)境下的PythonRDD.

d)在遠(yuǎn)程的worker機(jī)器上PythonRDD對(duì)象啟動(dòng)子進(jìn)程,并且使用Pipes與啟動(dòng)的這些子進(jìn)程進(jìn)行通信,通過(guò)這樣的關(guān)系為用戶傳遞代碼和數(shù)據(jù).

2 協(xié)同過(guò)濾推薦算法

協(xié)同過(guò)濾模算法摸型:假設(shè)有一個(gè)用戶數(shù)據(jù)集:U = {u1,u2,u3,…,uk} , 收 集 用 戶 買 過(guò) 商 品:,用評(píng)分矩陣Mn×k表示用戶對(duì)商品的評(píng)價(jià)[13]、打分、點(diǎn)贊等方式,Mu,i表示第u個(gè)用戶對(duì)第i個(gè)商品的綜合評(píng)分,評(píng)分相近的表示用戶喜歡的商品相似.

2.1 基于隱含的ALS協(xié)同過(guò)濾算法

基于改進(jìn)的協(xié)同過(guò)濾算法摸型:ALS(alternatingleast-squares)繼承協(xié)同過(guò)濾算法模型的思想,用戶與用戶對(duì)商品的打分構(gòu)成隱含的評(píng)分矩陣,其中隱含因子就是用戶對(duì)一些物品的偏好.

基于隱含的ALS協(xié)同過(guò)濾算法原理:由于一個(gè)用戶不能給所有物品打分,因此決定了評(píng)分矩陣高度稀疏,因此假設(shè)一定存在兩個(gè)低秩矩陣U、I盡可能逼近M,即

為了使低秩矩陣乘法最大限度逼近真實(shí)值,需要計(jì)算平方誤差函數(shù),且使得誤差達(dá)到最小:

根據(jù)潔洪諾夫正則化(Tikhonovregularization)準(zhǔn)則[14],則(3)式變?yōu)?/p>

根據(jù)偏微分原理,求解U,固定I,對(duì)U求偏導(dǎo):

令偏導(dǎo)數(shù)為零,得:

化簡(jiǎn)得:

根據(jù)偏導(dǎo)數(shù)對(duì)稱原則,同理可得:

根據(jù)(4)、(5)式,隨機(jī)給定 U,I的初始值,可以迭代求出U,I矩陣,當(dāng)平方誤差(6)的值變化很小時(shí),算法達(dá)到收斂,進(jìn)而求得評(píng)分矩陣M.

2.2 正則化參數(shù)λ

Tikhonovregularization求解的質(zhì)量依賴于正則化參數(shù)λ,為了合理迭代求取(4)、(5)式,根據(jù)最小化廣義交叉驗(yàn)證算法求取[15]λ:

其中 Sλ= Φ(Φ'Φ + λR)-1Φ',Φ表示全體基函數(shù).

3 實(shí)驗(yàn)及結(jié)果分析

3.1 實(shí)驗(yàn)過(guò)程

數(shù)據(jù)準(zhǔn)備:選取開(kāi)源的電影評(píng)價(jià)數(shù)據(jù)集(MovieLens);

平臺(tái)部署:官方網(wǎng)址下載對(duì)應(yīng)操作系統(tǒng)版本的Spark,本次采用 Spark 2.0、JDK 1.8.0、 Python 2.7.13,安裝完成并配置環(huán)境變量,啟動(dòng)Pyspark,如圖3.

圖3 Pyspark啟動(dòng)(MovieLens數(shù)據(jù)集)Fig.3 Pyspark startup(MovieLens data set)

3.2 實(shí)驗(yàn)程序流程圖

推薦程序流程圖如圖4:

圖4 推薦系統(tǒng)流程圖Fig.4 recommendation system flow chart

3.3 變換配置參數(shù),RMSE對(duì)比圖

使用Anaconda仿真,調(diào)節(jié)程序中三個(gè)參數(shù)λ,RANK,numIteration.首先取λ =0.01、λ =0.02、λ=0.03,改變隱形因子的數(shù)量,畫出RMSE變化,如圖5所示;其次取 rank=8、rank=10、rank=12,改變參數(shù)Lambda,畫出RMSE,如圖6所示.

圖5 RMSE1Fig.5 RMSE1

圖6 RMSE2Fig.6 RMSE2

通過(guò)實(shí)驗(yàn)結(jié)果,當(dāng)隱形因子數(shù)取10,正則參數(shù)為0.01時(shí),RMSE最大,得到本次數(shù)據(jù)集在本次實(shí)驗(yàn)環(huán)境下的最佳推薦結(jié)果,其中RMSE如圖7所示;并且保存模型,根據(jù)ALS模型,分別計(jì)算出第196個(gè)用戶對(duì)第241,第240,第139部電影的評(píng)分,以及第197、第198、第199、第200個(gè)用戶對(duì)第139部電影的評(píng)分結(jié)果,如圖8所示,然后根據(jù)模型(ALS)計(jì)算結(jié)果,將評(píng)分最高的推薦給相應(yīng)用戶.

圖7 RMSE最佳值Fig.7 RMSE best value

圖8 第i用戶個(gè)對(duì)第j個(gè)電影的評(píng)分Fig.8 Thei-th user scores the j-th movie

4 結(jié)論

與傳統(tǒng)的協(xié)同過(guò)濾推薦相比,首先,Pyspark針對(duì)大數(shù)據(jù)環(huán)境平臺(tái),在計(jì)算量很大的情況下,運(yùn)行速度快,并發(fā)性好,穩(wěn)定,可以用于生產(chǎn)環(huán)境.其次,ALS協(xié)同過(guò)濾算法,并發(fā)性好,在Pyspark平臺(tái)下,隨著隱形因子數(shù)的增多,平方誤差越??;隨著正則數(shù)的增大,平方誤差變大,這個(gè)實(shí)驗(yàn)結(jié)論可用于生產(chǎn)環(huán)境中對(duì)模型參數(shù)調(diào)優(yōu)有決策的方向,能使推薦精度更高.最后,隨著物品的日益增多,數(shù)據(jù)量增大,上網(wǎng)購(gòu)物體驗(yàn)會(huì)有很大變化,推薦系統(tǒng)的性能還有很多改進(jìn)的地方,比如怎么實(shí)現(xiàn)實(shí)時(shí)推薦有效的問(wèn)題、算法平臺(tái)遷移穩(wěn)定性等,需要進(jìn)一步的研究.

[1]張素智,趙亞楠,吳健.推薦系統(tǒng)研究[J].湖北民族學(xué)院學(xué)報(bào)(自然科學(xué)版),2016,35(2):1-6.

[2]洪亮,任秋圜,梁樹(shù)賢.國(guó)內(nèi)電子商務(wù)網(wǎng)站推薦系統(tǒng)信息服務(wù)質(zhì)量比較研究—以淘寶、京東、亞馬遜為例梁樹(shù)賢[J].2016,60(23):97-110.

[3]余娜娜,王中杰.基于Spark的協(xié)同過(guò)濾算法的研究[J].系統(tǒng)仿真技術(shù),2016,12(1):41-45.

[4]盛偉,余英,王保云.基于相似用戶索引和ALS矩陣分解的推薦算法研究[J].陜西理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2016,32(6):47-52.

[5]孟祥武,劉樹(shù)棟,張玉潔,等.社會(huì)化推薦系統(tǒng)的研究[J].軟件學(xué)報(bào),2015,26(6):1356-1372.

[6]車晉強(qiáng),謝紅薇.基于Spark的分層協(xié)同過(guò)濾推薦算法[J].電子技術(shù)應(yīng)用,2015,41(9):135-138.

[7]岑凱倫,于紅巖,楊騰霄.大數(shù)據(jù)下基于Spark的電商實(shí)時(shí)推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2016(11):61-69.

[8]劉壽強(qiáng),祁明.基于Hadoop云平臺(tái)的社交大數(shù)據(jù)協(xié)同過(guò)濾個(gè)性化推薦的研究與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2016(32):76-79.

[9]彭建喜.基于MapReduce的潛在因素算法在推薦系統(tǒng)中的研究與應(yīng)用[J].科技通報(bào),2013(29):124-126.

[10]陳平華,陳傳瑜,洪英漢.一種結(jié)合關(guān)聯(lián)規(guī)則的協(xié)同過(guò)濾推薦算法[J].小型微型計(jì)算機(jī)系統(tǒng),2016(2):287-292.

[11]李霞,李守偉.一種基于社交網(wǎng)絡(luò)輿論影響的推薦算法[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(1):276-280.

[12]王子政,姚衛(wèi)東.一種改進(jìn)的組合推薦算法研究[J].軍民兩用技術(shù)與產(chǎn)品,2015(1):46-51.

[13]李偉霖,王成良,文俊浩.基于評(píng)論與評(píng)分的協(xié)同過(guò)濾算法[J].計(jì)算機(jī)應(yīng)用研究,2017(3):362-412.

[14]傅初黎,李洪芳,熊向團(tuán).不適定問(wèn)題的迭代iT k h o n o v正則化方法[J].計(jì)算數(shù)學(xué),2006,28(3):238-246.

[15]王麗,王文劍,姜高霞.數(shù)據(jù)擬合中光滑參數(shù)的優(yōu)化[J].計(jì)算機(jī)科學(xué),2015,42(9):226-234.

猜你喜歡
算子協(xié)同矩陣
與由分?jǐn)?shù)階Laplace算子生成的熱半群相關(guān)的微分變換算子的有界性
一類截?cái)郒ankel算子的復(fù)對(duì)稱性
家校社協(xié)同育人 共贏美好未來(lái)
擬微分算子在Hp(ω)上的有界性
Heisenberg群上與Schr?dinger算子相關(guān)的Riesz變換在Hardy空間上的有界性
蜀道難:車與路的協(xié)同進(jìn)化
“四化”協(xié)同才有出路
三醫(yī)聯(lián)動(dòng) 協(xié)同創(chuàng)新
初等行變換與初等列變換并用求逆矩陣
矩陣