【算法無用系列】電影推薦——余弦相似度計算用戶相似度原理

【算法無用系列】通過余弦相似度計算電影、用戶相似度

????話不多說,本文通過電影推薦系統中,基于余弦相似度算法計算出用戶相似和電影相似原理。希望可以幫助一些代碼不懂的同學一些思路。

記錄用戶電影評分數據

????一般情況來說,會根據用戶的行為,記錄當前用戶對于某個電影的評分,簡單的計算公式為

  1. 瀏覽 +1
  2. 點贊 +2
  3. 評論 +3
  4. 收藏 +5

????等等,當然這個累加的評分可以自行在代碼中配置。最后我們會得出這樣的一個用戶電影評分關系表,如下所示,記錄了用戶和電影的評分。

用戶ID電影ID評分
11015.0
11023.0
11032.5
21012.0
21022.5
21035.0
21042.0
31015.0
31044.0
31054.5
41014.0
41033.0
41042.0
41054.0
51024.0
51034.0
51041.0

轉換矩陣

電影ID  101  102  103  104  105
用戶ID                            
1       5.0  3.0  2.5  0.0  0.0
2       2.0  2.5  5.0  2.0  0.0
3       5.0  0.0  0.0  4.0  4.5
4       4.0  0.0  3.0  2.0  4.0
5       0.0  4.0  4.0  1.0  0.0

在這里插入圖片描述

????對于二維表的數據轉換為這樣的一個矩陣。那么如何判斷兩個用戶的相似程度如何呢?

在這里插入圖片描述

????橫著看這幾個電影的評分,如果這些分數都特別相似,那就可以證明兩個用戶的興趣愛好類似,越相似,那么相似度越高。

在這里插入圖片描述

????豎著看也是一樣,如果兩列數值越相似,那么就可以認為兩個電影越相似(當前這僅僅是測試,在真實的場景中,這樣的單一維度來計算電影相似度是不夠的)。

????或者這樣的一個多維度矩陣無法和我們在高中學到的二維坐標系XY軸綁定起來。那么我可以把維度減少一下。如下,變成了高中時常見的XY軸二維坐標。

電影ID  101  102   
用戶ID                            
1       5.0  3.0  
2       2.0  2.5  

在這里插入圖片描述

????如上圖所示,形成兩個向量,兩個向量的夾角越小,則證明兩個 越相似。

在這里插入圖片描述

????當前,以上數據只是為了更好理解計算公式,真實情況下,維度會更多,如下就是一個5個維度,不過我們可以繼續套用公式。

電影ID  101  102  103  104  105
用戶ID                            
1       5.0  3.0  2.5  0.0  0.0
2       2.0  2.5  5.0  2.0  0.0
3       5.0  0.0  0.0  4.0  4.5
4       4.0  0.0  3.0  2.0  4.0
5       0.0  4.0  4.0  1.0  0.0

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23061.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23061.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是數字化轉型?

作者: 峽山老曹 數字神化 ”企業如何實現數字化轉型“是擺在現代企業面前一個無法回避的問題,數字化轉型的重要性不容忽視,它不僅是企業適應數字化時代的必然要求,更是提升競爭力、實現可持續發展的關鍵。隨著科技的飛速發展和市場…

學會spring boot 的這些技巧,編程瞬間變得簡單了,效率也提高了!

在Spring Boot應用中,斷言主要用于測試環境中驗證代碼行為是否符合預期。雖然Spring Boot自身不直接包含斷言庫,但通常我們會使用JUnit(一個廣泛應用于Java的單元測試框架)來進行測試,其中包含了豐富的斷言方法來幫助我們進行各種條件驗證。下面通過一些具體的示例來詳細說…

二叉樹的層序遍歷-力扣

本題是二叉樹的層序遍歷,通過一個隊列來控制遍歷的節點,二叉樹每層的節點和上一層入隊的節點個數是相同的,根據這一點編寫循環條件。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …

八、C語言:操作符詳解

一、移位操作符 1.1左移操作 左邊丟棄,右邊補0 1.2右移操作 算數右移:右邊丟棄,左邊補原符號位 邏輯右移:右邊丟棄,左邊補0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原碼…

【Linux進程篇】Linux進程管理應用——虛假的shell腳本

W...Y的主頁 😊 代碼倉庫分享💕 前言:我們已經了解了進程的工作原理,并且學習了進程創建、進程終止、進程等待以及進程程序替換。為了更好的鞏固這些知識,我們可以創建一個簡易的shell命令行。 目錄 做一個簡易的s…

GAT1399協議分析(六)--校時

一、官方消息定義 DeviceIDType :GA/T1400.1,采集設備、 卡口點位、 采集系統、分析系統、視圖庫、應用平臺等設備編碼規則 TimeCorrectModeType: dateTime時間格式: TimeZone:時區,GAT1400里面沒有找到具體內容&…

臥式攪拌機:一鍵自動稱重輕松搞定

在現代化工業生產中,G效、精準的設備是提高生產效率、降低生產成本。近年來,臥式攪拌機一鍵自動稱重包裝機的出現,無疑為眾多行業帶來了變革。這種集攪拌、稱重、包裝于一體的智能化設備,以其G效、便捷、精準的特點,迅…

六軸機器手臂運動控制——直流伺服反饋系統設計(比賽項目計劃書+設計總結+硬件+源代碼+上位機等)

TW的硬件一直很強,這是難得的硬件創新比賽的優秀作品,資料非常完整理。 硬件設計,源碼,項目計劃書,甚至包含了事后的復盤總結文檔。 是不可多得的好資料。 項目系統框架圖 1. 硬件系統框架圖 (請以方塊圖形式呈現) …

C#.net MassTransit和DotNetCore.CAP區別

MassTransit和DotNetCore.CAP對比 https://github.com/MassTransit/MassTransit https://github.com/dotnetcore/CAP MassTransit和DotNetCore.CAP是兩種不同的.NET庫,它們在核心概念、設計目的和技術實現等方面存在差異。具體分析如下: 核心概念 Mas…

idea的代碼沒有提交到倉庫怎么撤回到本地?

代碼已經提交到變更列表但是還沒有push推送到倉庫上,可以用這個方法 點擊日志-右鍵要撤回的記錄-選擇撤銷提交 撤銷的又回到本地變更 當然你只能撤銷自己提交的,別人的你撤銷不了

python-題庫篇-為什么數組下標從0 開始而不是 1

為什么很多編程語言要把 0 作為第一個下標索引,而不是直觀的 1 呢? 這個問題 Dijkstra 已經解答過了,沒錯,就是你知道的 Dijkstra,Dijkstra 最短路徑算法,荷蘭語全名是 Edsger Wybe Dijkstra,于…

定制高溫隧道爐,如何判斷質量好壞

在現代工業生產中,高溫隧道爐扮演著不可或缺的角色。對于特定工藝要求,如陶瓷燒制、金屬熱處理等,定制化的高溫隧道爐更是不可或缺。然而,面對市場上琳瑯滿目的產品,如何判斷高溫隧道爐的質量好壞成為了企業決策者面臨…

js終止遞歸

終止遞歸 1. 實現目標:js 編寫遞歸方法 查找指定節點; 2. 需解決問題:找到所需節點后,遞歸不會終止,直到所有節點遍歷完成后才會停止,會消耗性能 3. 解決方案:優化遞歸方法,在找到…

解決vscode終端不顯示conda環境變量名稱問題【詳細步驟!實測可行!!】

最近在使用Visual Studio Code (VSCode) 時候,發現終端沒有正確顯示激活的conda環境名稱,搜了一下,找到原因,記錄一下,如果有人也遇到同樣的問題,可以收藏一下。 ??分別兩種情況,一是windows系…

一周學會Django5 Python Web開發 - Django5內置Auth認證系統-用戶登錄實現

鋒哥原創的Python Web開發 Django5視頻教程: 2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~共計57條視頻,包括:2024版 Django5 Python we…

JVM學習-內存泄漏

內存泄漏的理解和分類 可達性分析算法來判斷對象是否是不再使用的對象,本質都是判斷一上對象是否還被引用,對于這種情況下,由于代碼的實現不同就會出現很多內存泄漏問題(讓JVM誤以為此對象還在引用,無法回收,造成內存泄…

旭日X3與英偉達Orin NX通過TCP傳輸圖片

觀前提醒:本文主要內容為使用Python在局域網內建立TCP連接并傳輸圖片信息,計算機為一塊旭日X3和一塊英偉達Orin NX。 一、什么是TCP TCP(傳輸控制協議)是一種可靠的、面向連接的協議,它確保數據包的順序傳輸和完整性…

關于教務排課的那些事

在辦學過程中,你是否被如下問題困擾? 1、排課功率低: 為了確保師資資源得到充分利用,教務教師排課要求了解每一個全職和兼職教師,了解每一個人的時刻組織和帶班狀況,因而在排課的時分需求處理很多的信息&a…

【Java數據結構】二叉樹詳解(四)

🔒文章目錄: 1.????前言~🥳🎉🎉🎉 2.給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先 2.1第一種思路 2.2第二種思路 3.根據一棵樹的前序遍歷與中序遍歷構造二叉樹 4.根據一棵樹的中序…

vite相關配置

1、vite開發環境和生產環境的環境變量配置 1、環境變量配置 vite本身會直接讀取為什么會讀取,因為含有dotenv第三方庫 ,會直接讀取 .env文件, 2、css模塊化簡單處理 css:{modules:{localsConvention: "camselCaseOnly" // 打包配…