日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

推荐系统--基于用户的协同过滤算法

發(fā)布時間:2025/5/22 windows 111 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐系统--基于用户的协同过滤算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.?????????概述

和搜索引擎一樣,推薦系統(tǒng)是為了幫助人們更快速的獲得對自己有用的信息。

和搜索引擎不同,推薦系統(tǒng)是人們被動的獲取,由系統(tǒng)根據(jù)用戶行為或其他的信息推薦給用戶的,兒搜索引擎是用戶主動輸入關(guān)鍵字獲取的。

從某種意義上說,搜索引擎和推薦系統(tǒng)是互相補(bǔ)充的。

而推薦算法的本質(zhì)是通過一定的方式將用戶和物品聯(lián)系起來,從而有效的給用戶推薦本身感興趣或需要但是沒有發(fā)現(xiàn)的物品。

個性化推薦系統(tǒng)的應(yīng)用場景:電子商務(wù)(據(jù)說Amazon 35%的銷售額來自推薦系統(tǒng))、電影和視頻網(wǎng)站、個性化音樂網(wǎng)絡(luò)電臺、社交網(wǎng)絡(luò)、個性化閱讀、基于位置的服務(wù)、個性化郵件、個性化廣告(上下文廣告、搜索廣告、個性化展示廣告)。

?

???????? 一個推薦系統(tǒng)的評判標(biāo)準(zhǔn):用戶滿意度、預(yù)測準(zhǔn)確度、覆蓋率、多樣性、新穎性、驚喜度、信任度、實(shí)時性、健壯性、商業(yè)目標(biāo)。

2. ? ? ? ?主要推薦系統(tǒng)算法

基于鄰域的方法、隱語義模型、基于圖的隨機(jī)游走算法。在這些方法中,最著名、在業(yè)界得到最廣泛應(yīng)用的算法是基于鄰域的方法。

基于鄰域的方法主要包括:基于用戶的協(xié)同過濾算法(給用戶推薦和他興趣相似的其他用戶喜歡的物品)和基于物品的協(xié)同過濾算法(給用戶推薦和該用戶喜歡的物品屬性類似的其他物品)

下面主要說明一下第一種算法

基于用戶的協(xié)同過濾算法

該算法的主要步驟:1、找到與該用戶興趣相似的用戶集;2、找到這個集合中的用戶喜歡的但是沒有聽說過的物品推薦給目標(biāo)用戶。

第一步:計算用戶的興趣相似度

可以通過以下公式計算:

其中u,v表示兩個用戶,N(u)表示用戶u曾經(jīng)有過正反饋的物品集合;N(v)表示用戶v曾經(jīng)有過正反饋的物品集合。

算法的Python實(shí)現(xiàn)如下:


def User_Similarity(train):W=dict()for u in train.keys():for v in train.keys():if u == v: continue; W[u][v] = len(train[u],train[v])W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0)



可以發(fā)現(xiàn)該代碼的時間復(fù)雜度是O(n*n),并且大多數(shù)用戶的興趣相似度可能位0,即|N(u)∩N(v)| = 0,所以該代碼還是可以優(yōu)化的。

我們可以先計算出|N(u)∩N(v)| ≠ 0的用戶對(u,v)然后除以余弦相似度。這里可以使用倒排,將數(shù)據(jù)排列成物品到用戶的倒排表,物品后鏈接的是與對該物品感興趣的用戶鏈表,然后循環(huán)統(tǒng)計每個物品用戶鏈表的用戶相似度即可。

算法的Python代碼如下:

#!/usr/bin/env python # coding=utf-8 def UserSimilarity(train):#建立倒排表item_users = dict()for u,items in train.items():for i in item.keys():if i not in item_users:items_users[i] = set()item_users[i].add(u)#item_users即為物品到用戶的倒排表#計算用戶之間的相關(guān)度C = dict()#任意用戶之間的相關(guān)度N = dict()#用戶正反饋物品的數(shù)目for i ,users in item_users:for u in users:N[u] += 1for v in users:if u == v:continue:C[u][v] += 1#最后計算結(jié)果矩陣W = dict()for u ,related_users in C.items():for v,cuv in related_users:W[u][v] = cuv / math.sqrt(N[u]* N[v]*1.0) return W



?

?

物品-用戶倒排表

第二步:推薦和他相似的K個用戶喜歡的物品

其中:p(u,i)用戶u對物品i的興趣度;

S(u,K)包含和用戶u興趣最相近的K的用戶;

Wuv用戶u和用戶v的興趣相似度;

Rvi用戶v對物品i的興趣度;

?

算法的Python代碼實(shí)現(xiàn):

def Recommend(user,train,W):rank = dict()interacted_items = train[user]for v , wuv in sort(W[u].items,key = itemgetter(1),reverse = True)[0:k]:for i ,rvi in train[v].items:if i in interacted_items:continuerank[i] += wuv * rvireturn rank




轉(zhuǎn)載于:https://my.oschina.net/xinger/blog/265689

總結(jié)

以上是生活随笔為你收集整理的推荐系统--基于用户的协同过滤算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。