最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MATLAB模糊C均值聚類FCM改進的推薦系統(tǒng)協(xié)同過濾算法分析MovieLens電影數(shù)據(jù)集

2023-05-29 22:38 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=32594

原文出處:拓端數(shù)據(jù)部落公眾號

在當今信息爆炸的時代,電影作為人們生活中不可或缺的娛樂方式,受到了越來越多的關(guān)注。而為了讓觀眾能夠更好地選擇適合自己口味的電影,推薦系統(tǒng)成為了一個備受關(guān)注的研究領(lǐng)域。協(xié)同過濾算法是其中一種被廣泛使用的方法。

本文將以MovieLens數(shù)據(jù)集為基礎(chǔ),幫助客戶分析MATLAB模糊C均值聚類改進的協(xié)同過濾算法在推薦系統(tǒng)中的應(yīng)用。針對MovieLens數(shù)據(jù)集進行實驗,并比較傳統(tǒng)協(xié)同過濾算法和改進后的模糊C均值聚類協(xié)同過濾算法的性能差異。最后結(jié)合實驗結(jié)果進行分析和總結(jié)。

1. 首先需要了解什么是模糊C均值聚類和協(xié)同過濾算法。

  • 模糊C均值聚類(FCM)是一種基于隸屬度的聚類方法,它將每個數(shù)據(jù)點對應(yīng)到各個聚類中心的隸屬度上。

  • 協(xié)同過濾算法是一種推薦系統(tǒng)算法,主要用于預(yù)測用戶對未評價物品的喜歡程度。該算法基于相似性進行推薦,即根據(jù)用戶行為歷史信息來發(fā)現(xiàn)不同用戶之間的相似性,并根據(jù)這些相似性為用戶推薦物品。

2. 然后需要了解如何將這兩種算法結(jié)合起來實現(xiàn)數(shù)據(jù)分析。

  • 在協(xié)同過濾算法中,我們需要計算不同用戶之間或者不同物品之間的相似度。而這里可以使用模糊C均值聚類來實現(xiàn)。

  • 具體地說,在MovieLens數(shù)據(jù)集中,我們可以將每一個電影看作是一個向量,其中包括電影名稱、導(dǎo)演、演員、類型等特征。然后使用模糊C均值聚類將這些電影聚類到不同的簇中。

  • 接著,我們可以計算用戶和簇之間的相似度,進而推薦給用戶可能感興趣的電影。

3. 最后需要注意哪些細節(jié)問題。

  • 在使用模糊C均值聚類時,需要選擇合適的參數(shù)來控制隸屬度和聚類個數(shù)等因素。這需要根據(jù)具體情況進行調(diào)整。本文使用了4個聚類有效性函數(shù)值來選取最優(yōu)聚類數(shù)。

  • 在計算相似度時,需要選擇合適的距離或者相似性度量方法。同時還要考慮如何處理缺失數(shù)據(jù)、異常值等問題。

數(shù)據(jù)

MovieLens數(shù)據(jù)是美國Minnesota大學GroupLens項目組提供的Movielens數(shù)據(jù)集ml-100k中的u2數(shù)據(jù)。這個數(shù)據(jù)集包含了943名用戶對1682部電影的評價(評分值為數(shù)字1到5,若數(shù)值越高則用戶喜愛該電影的程度越高),并含有電影項目的分類特征。該數(shù)據(jù)集僅包含了評價過20部以上電影的用戶評價數(shù)據(jù),沒有評分的電影數(shù)據(jù)占所有數(shù)據(jù)的比重(稀疏度)為94%。

名稱描述簡介每個用戶至少評分物品MovieLens對電影的評分從1到5943名用戶對1682部電影的評價100

評分預(yù)測的預(yù)測準確度一般通過平均絕對誤差 (MAE) 計算,平均絕對偏差越小,預(yù)測的準確度越高。

?

過程與結(jié)果分析

(1)確定最佳聚類數(shù)

首先,通過比較不同聚類數(shù)相應(yīng)的聚類有效性函數(shù)值來選出最佳聚類數(shù)cmax。實驗結(jié)果如圖所示。

圖中的橫坐標為聚類數(shù),縱坐標為相應(yīng)的4個聚類有效性函數(shù)值。由上述結(jié)果可知,在2到的最佳搜索范圍中,不同的聚類數(shù)c得到的VPE值與VFC值呈單調(diào)趨勢,而VXB與VK函數(shù)值均在c=12時單調(diào)性發(fā)生改變。

圖1 ?MovieLens不同聚類數(shù)對應(yīng)的聚類有效性函數(shù)值

類似的,圖1中的橫坐標為聚類數(shù),縱坐標為相應(yīng)的4個聚類有效性函數(shù)值。由上述結(jié)果可知,在2到的最佳搜索范圍中,不同的聚類數(shù)c得到的VPE值與VFC值呈單調(diào)趨勢,而VXB與VK函數(shù)值均在c=12時單調(diào)性發(fā)生改變。

最后得到不同判別函數(shù)在不同數(shù)據(jù)集上的指標值如表1所示。

%XB 用Xie和Beni的準則來求最優(yōu)聚類數(shù) % ? u為隸屬度矩陣,center為聚類中心矩陣 V=0; for i=1:size(u,1) ? ?for j=1:size(u,2) ? ?V=V+(u(i,j))^2*(norm(data(j,:)-center(i,:)))^2; ? ? ? ?end end fenmu=(min(pdist(center,'euclidean')))^2;

表1 Xie-Beni方法確定的最佳聚類數(shù)cmax

判別函數(shù)VPEVXBVFCVKMovielens數(shù)據(jù)集cmax>25cmax=12cmax>25cmax=12

因此,根據(jù)Xie-Beni方法,本文選取Flixster數(shù)據(jù)集的最佳聚類數(shù)cmax為10,本文選取MovieLens數(shù)據(jù)集的最佳聚類數(shù)cmax為12。

(2)MAE指標比較

模糊C均值聚類算法的關(guān)鍵步驟是確定最佳聚類簇數(shù),為檢驗本節(jié)給出的FCMC CF算法,我們在Movielens和Flixster數(shù)據(jù)集上進行了實驗分析,并將其同K-means、K-medoids和K-mode聚類協(xié)同過濾算法進行了比較,實驗結(jié)果如圖所示。

%FCMC data為模糊C均值聚類的實驗數(shù)據(jù),top代表XB準則下的前10個最佳聚類數(shù),b為該10個最佳聚類數(shù)的PE指標值 % ? for k=2:sqrt(size(data,1)) ? ?[center u]=fcm(data,k); ? ?Vpe(k-1)=Bezdek(u); ? ?Vxb(k-1)=XB(u,center,data); ? ?Vfs(k-1)=FS( u,center,data); ? ?Vk(k-1)=Kwon( u,center,data); end k=2:sqrt(size(data,1)); ? ?subplot(2,2,1),plot(k,Vpe(k-1),'- *'),xlabel('x(聚類簇數(shù))'),ylabel('y(Vpe指標)') k=2:sqrt(size(data,1)); subplot(2,2,2),plot(k,Vxb(k-1),'- or'),xlabel('x(聚類簇數(shù))'),ylabel('y(Vxb指標)') k=2:sqrt(size(data,1)); subplot(2,2,3),plot(k,Vfs(k-1),'- or'),xlabel('x(聚類簇數(shù))'),ylabel('y(Vfs指標)') k=2:sqrt(size(data,1)); Predict(i,j,D,data,itemN)%j代表目標用戶,i為j用戶的鄰居用戶為i用戶集,data為用戶-物品矩陣,D為相似系數(shù)矩陣,item為用戶j要預(yù)測的物品編號 tempu= find(data(j,:)~=0);%發(fā)現(xiàn)用戶所有已評分的項目 Ru=mean(data(j,tempu));%計算用戶評分的平均值 a=length(i); fenzi=0; for k=1:a tempv=find(data(i(k),:)~=0); Rv=mean(data(i(k),tempv)); fenzi=fenzi+D(j,i(k)).*(data(i(k),itemN)-Rv); end fenmu=0; for k=1:a

圖2 Movielens數(shù)據(jù)集不同算法MAE的比較

unction mae = MAE(CS,udata,udatatest,Fuz) %CS為相似度矩陣,data為訓練集用戶項目矩陣,datatest為測試集用戶項目矩陣,Fuz為標記變量(1為模糊C均值聚類協(xié)同過濾,0為傳統(tǒng)系統(tǒng)過濾) j=1; for n=1:5:80%########最近鄰數(shù) mae(j)=0;%mae為最近鄰為n的情況下的最小均方誤差 k=0;%計數(shù)變量 ? for t=1:size(udatatest,1) ? ? ? ?i=topn(CS,t,n);%計算出該用戶的最近鄰用戶集合,t為i目標用戶編號,i為相鄰用戶編號(按相似度從高到低排列),n為n個鄰居用戶數(shù),應(yīng)設(shè)為? ? ?item=find(udatatest(t,:)~=0);%item為測試集中用戶的評價項目 ? ?if n>length(i) ? ? ? ? ? continue;

在圖中,橫軸為最近鄰個數(shù) k,縱軸為平均絕對偏差 MAE。曲線CF代表傳統(tǒng)的協(xié)同過濾算法,曲線Kmean CF代表基于K均值聚類的協(xié)同過濾算法,曲線FCMC CF代表基于模糊C均值聚類有效性的協(xié)同過濾算法,曲線K medoids CF代表基于K medoids聚類的協(xié)同過濾算法。

由圖圖和圖可以看到基于有效性指標改進的FCMC CF算法在MAE指標上要明顯優(yōu)于其他算法。在Movielens數(shù)據(jù)集上的實驗結(jié)果表明,F(xiàn)CMC CF得到的MAE值要優(yōu)于其他幾個算法。

(3)召回率和覆蓋率的比較

在接下來的TOP-N實驗中,我們選擇FCMC CF算法與其他算法在召回率、覆蓋率指標上進行比較。

%D為相似系數(shù)矩陣,i為第i個目標用戶,n為前n個最相似的用戶數(shù),輸出為前n個用戶的坐標信息 [a,b]=sort(D(i,:),'descend');%a為從高到低排的相似系數(shù) top=b(1:n); I= ind2sub(size(D), top);%J目標用戶編號,I相鄰用戶編號(按相似度從高到低排列) Recall(udata,udatatest,CS,Fuz) Recall(udata,udatatest,CS,Fuz) %UNTITLED Summary of this function goes here % ? Detailed explanation goes here %N為推薦列表的長度,udata為用戶項目評分矩陣 j=1; for N=5:5:50 n=30;%n為目標用戶的最近鄰居用戶數(shù)#######默認為3個 for q=1:size(udata,1)%計算每位用戶對每個物品的預(yù)測評分 ? ?for w=1:size(udata,2) ? ?I=topn(CS,q,n);%D為相似系數(shù)矩陣,i為第i個目標用戶(即為q),n為前n個最相似的用戶數(shù)(默認為3),輸出為最近鄰居用戶的前n個用戶的坐標信息 ? ?rank(q,w)=Predict(I,q,CS,udata,w);%rank為用戶項目預(yù)測評分矩陣,j代表目標用戶(即為q),i為j用戶的鄰居用戶為i用戶集,data為用戶-物品矩陣,D為相似系數(shù)矩陣,item為用戶j要預(yù)測的物品編號(即為w) ? ?end end

實驗結(jié)果如圖所示。

?圖4 不同算法召回率的比較

在圖中,橫軸代表推薦列表長度N,縱軸分別為召回率和覆蓋率。其中,每個N值對應(yīng)的兩條曲線圖分別為FCMC CF與CF、Kmeans CF對應(yīng)的函數(shù)值。

FCMC CF算法與傳統(tǒng)CF算法和Kmeans CF算法相比,在不同的最近鄰水平下具有較高的召回率和覆蓋率,即新算法在推薦質(zhì)量上有所改善,有效地提升了推薦精度。

%%預(yù)測函數(shù) predictfun2( CS, t,item ,n,udata) %%其中CS為相似度矩陣 %%item為預(yù)測的項目編號 %%t為目標用戶 %%n為近鄰個數(shù) %%udata為用戶-項目評分矩陣 ? %%得到的預(yù)測評分為2.24 %%實際評分為3


最受歡迎的見解

1.R語言k-Shape算法股票價格時間序列聚類

2.R語言基于溫度對城市層次聚類、kmean聚類、主成分分析和Voronoi圖

3.R語言對用電負荷時間序列數(shù)據(jù)進行K-medoids聚類建模和GAM回歸

4.r語言鳶尾花iris數(shù)據(jù)集的層次聚類

5.Python Monte Carlo K-Means聚類實戰(zhàn)

6.用R進行網(wǎng)站評論文本挖掘聚類

7.R語言KMEANS均值聚類和層次聚類:亞洲國家地區(qū)生活幸福質(zhì)量異同可視化

8.PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯模型和KMEANS聚類用戶畫像

9.R語言基于Keras的小數(shù)據(jù)集深度學習圖像分類


MATLAB模糊C均值聚類FCM改進的推薦系統(tǒng)協(xié)同過濾算法分析MovieLens電影數(shù)據(jù)集的評論 (共 條)

分享到微博請遵守國家法律
连山| 旌德县| 灵宝市| 承德市| 临猗县| 澳门| 唐河县| 巍山| 博湖县| 瓮安县| 巴彦县| 无极县| 丹阳市| 天气| 杭锦后旗| 汾阳市| 桦川县| 香港| 河北省| 永定县| 兴城市| 宿州市| 曲沃县| 辽源市| 阿城市| 合阳县| 福州市| 德令哈市| 闽清县| 电白县| 吕梁市| 无为县| 太白县| 白城市| 克东县| 合川市| 白沙| 永靖县| 阿拉善左旗| 武邑县| 镇康县|