999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于K-means的矩陣分解推薦算法

2020-01-13 08:18:14張榮梅
智能計算機與應用 2020年1期
關鍵詞:精確度用戶實驗

張榮梅, 陳 彬, 張 琦

(河北經貿大學 信息技術學院, 石家莊 050061)

0 引 言

當下,隨著大數據時代的來臨,信息資源過度膨脹,形成了“信息爆炸”的現象。為了緩解這種情況帶來的信息過載、數據冗余、選擇困難等問題,越來越多的專家學者已然開始關注起推薦系統領域的研究。推薦系統是通過分析用戶的歷史數據,以及項目等其它輔助信息,推測出用戶潛在的偏好需求,進而為用戶提供個性化的項目推薦。常見的傳統推薦技術是基于內容的算法、基于協同過濾的算法及混合算法[1]。其中,協同過濾算法應用較為廣泛,Goldberg等人[2]于1992年提出了協同過濾的概念,最初應用在Tapestry System上用于過濾電子郵件。這是通過引入其它用戶的興趣來對當前用戶進行推薦,只是涉及用戶的歷史交易記錄,而不依賴用戶和項目的屬性特征。但協同過濾算法存在數據稀疏[3]和冷啟動問題[4]。于洪等人[5]為了更好地解決物品冷啟動問題,提出了一種附加用戶時間權重的算法,對用戶評論時間與項目發布時間加以計算研究,但由于很多標準數據集中缺少時間戳的屬性,其作用范圍有限。針對于此,為了改進協同過濾算法,本文將K-means聚類算法與矩陣分解技術相結合,提出一種基于K-means的矩陣分解推薦算法(Matrix Decomposition Based on K-means,KMMD),引入了用戶屬性信息,在提高推薦精度的同時,有效改善用戶冷啟動問題。

1 基于K-means的矩陣分解推薦算法(KMMD)

1.1 Funk-SVD矩陣分解算法

基于內容的推薦和基于用戶畫像的推薦[6]都是聚焦于待推薦用戶自身的屬性信息或交易記錄,并沒有考慮過其它用戶的數據是否會對當前用戶產生推薦影響,在召回率和精確度上不能進一步提高。而矩陣分解[7]作為協同過濾的一種重要方法,不僅將待推薦用戶自身的屬性考慮在內,還吸收借鑒了其它用戶的數據信息,來實施推薦。且矩陣分解算法將龐大的用戶-項目評級矩陣分解為多個矩陣存儲,大大減緩了磁盤存儲壓力。

矩陣分解采用Funk-SVD,是通過將用戶-項目評級矩陣Rm×n進行分解,得到可以表示用戶和項目特征的2個低維的抽象隱因子矩陣:Um×k表示m個用戶的k維隱因子矩陣,Vn×kT表示n個項目的k維隱因子矩陣,使得Um×k·Vn×kT≈Rm×n。使用重構后的評級矩陣來預測用戶對未知項目的評分。對于矩陣中的缺失項,在參數更新時選擇忽略不計,不對其進行操作,而只針對有效數據進行參數訓練。

(1)

其中,損失函數由誤差平方和正則化項組成,引入正則化項可以防止訓練結果的過擬合。

而訓練過程是使用梯度下降降低損失函數,其數學公式可表示為:

(2)

(3)

其中,α是學習率參數,表示每次更新的快慢。

傳統的矩陣分解算法多采用傳統的SVD矩陣分解方式[8]。傳統SVD分解后會得到3個矩陣:U、∑和V。其中,∑是一個對角矩陣,表示U和V矩陣在每個維度上的重構重要度可通過該對角矩陣進行降維,但存在對矩陣求逆等操作,致使計算復雜度高。而本文實驗采用的是Funk-SVD分解方式,借鑒線性回歸的思想,通過最小化均方誤差來尋求最優的用戶和項目的隱含向量表示,其維度可直接調整。Funk-SVD用2個矩陣就可以實現SVD三個矩陣的重構效果,在一定程度上提高了運算效率。

1.2 K-means聚類

由于傳統矩陣分解算法只使用用戶對項目的評級信息,其推薦精度上限難以進一步提升,所以引入用戶屬性信息,經K-means聚類分析再進行矩陣分解運算,提高算法推薦能力。K-means是一種將數據按策略劃分為某幾種類別的聚類算法[9],其中K表示聚類的類別種數,即質心的數量,means表示均值。K-means聚類之前的預處理過程可分述如下。

(1)提取用戶基本屬性信息,User=(Age,Gender,Occupation),構建用戶屬性矩陣U。

(2)對于非數值的離散型數據,進行one-hot編碼[10]數值化處理。one-hot編碼是將原某類型屬性按照其種類進行編碼,編碼結果是只有一位為有效值1,其余位都是0。年齡屬性已經是數值型屬性,所以不做處理。性別是二元屬性,分為“男”和“女”,所以分別編碼為[0]和[1]。職業屬于標稱屬性,包含多種類別,按照類別總數S構建長度為S的編碼串,并由先后出現順序為其置“1”編碼,在MovieLens-100K數據集中共出現有21種職業類型,數據集中最先出現的“technician”職業的one-hot編碼為[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1],緊接著出現的“writer”職業的one-hot編碼為[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0],以此類推。然后所有屬性拼接組合成稀疏的用戶屬性向量,對于“年齡=24,性別=男,職業=技術員”的用戶User_a=(24, man, technician),經如上處理后得到的用戶屬性向量為User_a′=[24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]。

(3)embedding處理。經由one-hot編碼后的數據必然是稀疏的,所以將其進行embedding處理,即是將原稀疏向量與固定轉換矩陣做內積變換,轉化為稠密向量,即:

(4)

得到由用戶稠密屬性向量構建的用戶屬性矩陣,就可以進行K-means聚類分析了。算法1的設計步驟見如下。

算法1K-means。用于聚類劃分的K-均值算法,其中每個簇的中心(質心)都用簇中所有對象元素的均值來表示[11]

輸入:K表示簇的數目;D為包含n個對象元素的數據集

輸出:K個簇的集合

(1)從D中任意選取K個對象作為初始簇的中心;

(2)repeat

(3)根據簇中對象元素的均值,將每個對象分配到最相似的簇;

(4)更新簇均值,即重新計算每個簇中對象的均值;

(5)until不再發生變化。

采用K-means聚類算法提前對用戶進行聚類分析,可減小構建的用戶-項目評級矩陣規模,若不做預處理,則需要對全部用戶和全部項目信息構建評級矩陣,這樣在矩陣分解時會嚴重降低算法效率,占用大量內存。而通過聚類構建小規模的近鄰用戶-項目矩陣,可加快矩陣分解計算,利于算法模型的整體效率,且額外的聚類代價遠遠小于大規模矩陣分解的消耗代價。

K-means聚類處理為當前用戶構建了近鄰集合,由于興趣偏好相似的用戶傾向于購買相同項目的思想,所以在近鄰用戶中進行數據分析,可有效提高推薦的準確度,實驗證明這樣的設計思路的確對推薦中召回率和精確度有提升效果。

1.3 KMMD算法設計

本文將K-means算法與Funk-SVD矩陣分解算法結合,提出了KMMD算法。算法2的設計流程詳見如下。

算法2KMMD, 基于K-means的矩陣分解算法

輸入:User表示包含m個用戶的用戶屬性(User)數據集;Ua表示當前待推薦用戶的屬性信息;Ratings表示包含m個用戶對n個項目的部分評級數據集;L表示推薦列表長度;K表示聚類簇數

輸出:針對用戶Ua的推薦列表List

(1)對User進行K-means聚類分析,劃分為K個簇:C1,C2,...,CK;

(2)ifUa== 老用戶 then

(3)提取Ua所在簇Ca的所有對象元素,并從Ratings中篩選出這些對象元素的評級數據,構建近鄰用戶-項目評級矩陣R;

(4)將R進行Funk-SVD分解,得到U和V兩個低秩矩陣;

(5)矩陣重構:R’ =U·V;

(6)在重構評級矩陣R’中找到對Ua的重構預測向量ra;

(7)else將Ua與簇中心求相似度,找到Ua歸屬的簇Ca;

(8)從Ratings中篩選出Ca簇中對象元素的評級數據,構建近鄰用戶-項目評級矩陣R;

(9)將R進行Funk-SVD分解,得到U和V兩個低秩矩陣;

(10)矩陣重構:R’=U·V;

(11) 求得Ua與Ca中各對象元素的相似度Sima,i(i∈Ca);

(12) 加權計算求得Ua的預測評級:

(5)

(13)end if

(14)對ra中各個項目預測值排序,選出前L個項目組成推薦列表List。

2 實驗與結果分析

本實驗采用數據集MovieLens-100K,使用召回率和精確度作為模型評價指標,進行參數影響及參數確定的實驗,得到效果最佳的KMMD算法模型,并將其與2種傳統算法CBbyPortrait和MFbySVD做了對比實驗。研究可得解析詳述如下。

2.1 數據集

基于MovieLens數據集[12]是由明尼蘇達大學的Grouplens研究項目收集整理。數據集獲取地址:http://files.grouplens.org/datasets/movielens/。實驗具體選用的是MovieLens-100K。MovieLens-100K數據集包含943名用戶對1 682部電影的10萬條評分記錄,評分采用5分制(1,2,3,4,5)。該數據集主要包含3個文件:用戶數據文件(u.user)、項目數據文件(u.item)和評分文件(u.data),其中u.user包含用戶的人口統計信息,字段有:用戶標識(user id)、年齡(age)、性別(gender)、職業(occupation)和郵編(zip code);u.item包含電影項目的信息,字段有:電影標識(movie id)、電影標題(movie title)、上映日期(release date)、視頻發布日期(video release date)、數據源鏈接(IMDb URL)和類別屬性(genres);u.data包含完整的評級數據,字段有:用戶標識(user id)、項目標識(item id)、評分(rating)和時間戳(timestamp)。

2.2 模型評估指標

本文采用混淆矩陣[13]中的精確度(Precision)和召回率(Recall)進行算法模型評估。涉及到的參數和計算方法如下:TP(True Positive)表示將正類預測為正類;TN(True Negative)表示將負類預測為負類;FP(False Positive)表示將負類預測為正類,也稱為誤報;FN(False Negative)表示將正類預測為負類,也稱為漏報。

其中,召回率(Recall)和精確度(Precision)的計算公式為:

(6)

(7)

2.3 參數選取

為了得到KMMD算法的最佳效果,首先進行控制變量實驗,測試重要參變量的取值變化對算法效果的影響。KMMD算法的重要參變量有3個:K-means聚類的聚類種數K;矩陣分解的訓練步數Steps;推薦列表長度L。而Funk-SVD的學習率參變量α依據經驗設定為0.000 2。實驗隨機選取MovieLens-100K數據集的80%作為訓練集,余下20%作為測試集。研究中,將分3組進行控制變量實驗。研究內容詳見如下。

(1)Steps固定取50,L固定取10。觀察參數K的變化影響,結果如圖1所示。

(a) 粗粒度范圍

(b) 細粒度范圍

圖1中,實線實心倒三角表示精確度的變化趨勢,虛線實心圓圈表示召回率的變化趨勢。圖1(a)是在[5,100]范圍內粗粒度驗證K值變化對實驗精度的影響,可以看到,隨著K值逐漸增大,召回率和精確度都是先增后降的趨勢,其極值在K取25-35的范圍內取得。為進一步獲取最佳K值的推薦效果,圖1(b)給出了在[25,35]閉區間范圍內細粒度實驗仿真。由實驗結果可知,當K值取29時,算法的當前推薦效果最佳。

(2)K固定取29,L固定取10。觀察參數Steps的變化影響,結果如圖2所示。

圖2 Steps值變化影響

由實驗結果可知,隨著Steps值的增大,召回率和精確度總體趨勢都是下降的,當Steps值取[80,110]區間值時,其實驗效果較好,為方便實驗進行,將Steps值取為100。

(3)Steps固定取100,K固定取29。觀察參數L的變化影響,結果如圖3所示。

圖3 L值變化影響

由實驗結果可知,隨著L值的增大,召回率會呈現遞增趨勢,而精確度總體是呈現遞減趨勢,最終逐漸收斂平穩。為確定L取具體何值時,可使推薦的整體效果較好,研究中還對圖3實驗結果進行F度量表示,即:

(8)

F度量賦予了召回率和精確度相等的權重,是兩者的調和均值。其結果如圖4所示。可知在L值取15時,F值最高,綜合推薦效果最好。

圖4 F度量值變化

2.4 對比實驗

為了驗證KMMD算法模型的真實效果,選取了2種推薦算法模型與本文提出算法進行比較。這2種算法的設計表述如下。

(1)CB(Content-based Recommendation):基于內容的推薦模型,通過召回用戶日志文件獲取與用戶有過交互的項目信息,再根據項目的屬性特征學習用戶的偏好興趣,可構建用戶畫像,并以此計算用戶與待推薦項目匹配度,推薦與其過去已購買過物品相似度高的商品。

(2)MF(Matrix Factorization):傳統基于矩陣分解的推薦模型,通過用戶對項目的顯式評分數據構建用戶-項目評分矩陣,使用SVD奇異值分解矩陣后再進行重構,預測用戶對未購買過的商品的評分,進行推薦。

對比實驗在MovieLens-100K數據集下進行,使用了十折交叉驗證法。根據控制變量實驗結果,對KMMD算法的參數選取了K=29,Steps=100,L=15。實驗結果對比見表1。對表1分析后可知,其研究結果的重點陳述見如下。

(1)召回率表現的是推薦效果的靈敏性,從該值的角度來分析,KMMD算法的效果最好,其相較于CB算法提升了15.64%,相較于MF算法提升了154%。說明在靈敏性上,KMMD算法有了很大的提升。

(2)從精確度來看,KMMD算法的效果遠高于其它兩個算法,比CB提升了30.43%,比MF提升了103%。可見,KMMD算法在推薦的精確度上也有很不錯的表現。

由實驗可得,KMMD算法在召回率和精確度上都有很大提升,能為用戶提供更準確的推薦。

表1 召回率和精確度對比

2.5 模型預測

該部分通過實驗驗證提出的KMMD算法可以對新用戶進行有效推薦。實驗是在包含943名用戶的MovieLens-100K數據集基礎上,仿照其數據格式,構造了2名用戶基本屬性數據作為新用戶,作為用戶冷啟動實驗對象,數據如下:

(1)用戶a:年齡=24,性別=男(M),職業=技術員(technician);

(2)用戶b:年齡=50,性別=女(F),職業=作家(writer)。

實驗結果見表2。

表2 用戶冷啟動預測

實驗結果說明,KMMD算法可以對新用戶進行項目推薦,結果以評級高低排序。KMMD算法有效改善了用戶冷啟動問題。

3 結束語

將聚類算法與協同過濾思想相結合,提出了一種基于K-means的矩陣分解推薦算法。首先通過實驗分析不同參數對KMMD算法的召回率和精確度變化影響,得出算法的高效率參數配置。并進行對照實驗,比較傳統推薦算法與KMMD算法在MovieLens公開數據集上的實驗效果,得出結論,融合K-means聚類后的矩陣分解算法確實有助于推薦準確度的提高,且在引入用戶屬性數據的條件下,有效改善了用戶冷啟動問題。但該算法對項目冷啟動問題還難以處理。后續工作是將深度學習技術與推薦算法相融合,構建多種推薦算法的組合排序,力求進一步提升推薦算法的準確度,并有效解決項目冷啟動問題。

猜你喜歡
精確度用戶實驗
記一次有趣的實驗
“硬核”定位系統入駐兗礦集團,精確度以厘米計算
做個怪怪長實驗
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
易錯題突破:提高語言精確度
主站蜘蛛池模板: 一级全黄毛片| 国产女同自拍视频| 国产乱人伦AV在线A| 国产成人一区在线播放| 久久五月视频| 午夜福利无码一区二区| 久久久久亚洲精品成人网 | 欧美人与牲动交a欧美精品| 高清视频一区| 久久久久亚洲AV成人网站软件| 高清久久精品亚洲日韩Av| 国产网站在线看| 精品国产美女福到在线直播| 亚洲午夜综合网| 亚洲一区二区成人| 久久亚洲国产最新网站| 少妇精品久久久一区二区三区| 人妻精品久久久无码区色视| 不卡视频国产| 成人精品免费视频| 免费高清自慰一区二区三区| 中文字幕久久波多野结衣| 亚洲精品男人天堂| 亚洲欧美另类中文字幕| 国产交换配偶在线视频| 91偷拍一区| 最新国产在线| 国产亚洲精久久久久久无码AV| 亚洲一区二区三区国产精华液| www.亚洲一区二区三区| 伦伦影院精品一区| 91在线免费公开视频| 亚洲av无码久久无遮挡| 亚洲国产理论片在线播放| 国产黄色视频综合| 91久久夜色精品国产网站| 97免费在线观看视频| 在线日韩一区二区| 亚洲欧美激情小说另类| 亚洲区欧美区| 日本a级免费| 无码视频国产精品一区二区| 国产人成乱码视频免费观看| 国产精品播放| 无码丝袜人妻| 免费毛片网站在线观看| 国产精品香蕉在线| 中文字幕无码制服中字| 综合五月天网| 九色视频在线免费观看| 欧美笫一页| 午夜限制老子影院888| 狠狠干欧美| 亚洲日本精品一区二区| 亚洲无码A视频在线| 国产人碰人摸人爱免费视频| 丁香综合在线| 欧美一级高清免费a| 国产免费a级片| 日韩毛片在线播放| 国产欧美精品一区二区| 视频一区视频二区中文精品| 亚洲精品无码久久毛片波多野吉| lhav亚洲精品| 欧美成人国产| 国产精品冒白浆免费视频| 永久免费精品视频| 久久久久无码国产精品不卡| 亚洲日韩国产精品综合在线观看| 欧美日韩国产成人高清视频| A级毛片无码久久精品免费| 欧美国产综合视频| 久久精品日日躁夜夜躁欧美| 国产亚洲高清视频| 99热这里只有精品免费| 狠狠干综合| 亚洲精品另类| 高清亚洲欧美在线看| 麻豆国产精品| 精品国产中文一级毛片在线看| 国产日本欧美亚洲精品视| 国产91精品调教在线播放|