二分網(wǎng)絡(luò)上的電影推薦

問題描述

每個用戶都有自己的喜好,會給一個電影進(jìn)行打分,且每個用戶的評判標(biāo)準(zhǔn)是不一樣的。這里根據(jù)用戶觀看過的電影以及對電影的打分作為基礎(chǔ),為其推薦其沒看過但與其看過的高分電影相似度高的電影。

實驗數(shù)據(jù)

MovieLens 是歷史最悠久的推薦系統(tǒng)。它由美國 Minnesota 大學(xué)計算機科學(xué)與工程學(xué)院的 GroupLens 項目組創(chuàng)辦,是一個非商業(yè)性質(zhì)的、以研究為目的的實驗性站點。MovieLens 主要使用 Collaborative Filtering 和 Association Rules 相結(jié)合的技術(shù),向用戶推薦他們感興趣的電影。
https://grouplens.org/datasets/movielens/
數(shù)據(jù)集:ml-latest-small.zip中包括700個用戶對9000部電影的100000條評價。

主要步驟

  1. 采用二分網(wǎng)絡(luò)模型,對ml-1m文件夾中的“用戶---電影”打分?jǐn)?shù)據(jù)進(jìn)行建模;
    用戶對自己看過的電影打分1-5分,其中1分表示最不喜歡,5分表示最喜歡。假設(shè)分?jǐn)?shù)大于3分的,表示用戶喜歡這部電影。

  2. 計算資源配額矩陣;
    計算資源配額矩陣W中的元素wij表示產(chǎn)品j愿意分配給產(chǎn)品i的資源配額。假設(shè)一個用戶選擇過的商品j都有向該用戶推薦其他產(chǎn)品i的能力。


    在這里插入圖片描述

    kj表示產(chǎn)品j的度(被多少用戶評價過),kl表示用戶l的度(用戶選擇過多少產(chǎn)品)。

  3. 對給定用戶,按照其喜歡程度,對電影進(jìn)行排名,進(jìn)行電影推薦;
    目標(biāo)用戶的資源分配矢量f。初始時,將他選擇過的電影對應(yīng)項資源設(shè)置為1,其他為0,得到初始n維0/1向量。則最終的資源分配矢量:


    在這里插入圖片描述

    將用戶所有沒看過的電影按照 中對應(yīng)項的得分進(jìn)行排序,推薦排序靠前的電影給該用戶。

  4. 算法預(yù)測準(zhǔn)確性預(yù)測;
    將二部圖中的邊隨機分為兩部分,期中90%歸為訓(xùn)練集,10%歸為測試集。
    對給定用戶i,假設(shè)其有Li個產(chǎn)品是未選擇的,如果在測試集中用戶i選擇的電影j,而電影j依據(jù)向量 被排在第Rij位,則計算其相對位置:

越精確的算法,給出的rij越小。對所有用戶的rij求平均值 來量化評價算法的精確度。

具體實現(xiàn)代碼:https://github.com/BlackJocker1995/rating_analysis

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容