首页 分享 07

07

来源:花匠小妙招 时间:2024-12-03 16:19
文章目录 推荐系统常用评估指标RMSEMAEPrecision(准确率)&Recall(召回率)覆盖率信息熵基尼系数多样性获取各种评测指标的途径长尾分布

推荐系统常用评估指标

在这里插入图片描述

RMSE

  加大了对预测不准的用户物品评分的惩罚。

RMSE = ∑ u , i ∈ T ( r u i − r u i ^ ) 2 ∣ T ∣ text{RMSE}=sqrtfrac{sum_{u,iin{T}}(r_{ui}-hat{r_{ui}})^2}{|T|} RMSE=∣T∣∑u,i∈T​(rui​−rui​^​)2​

# records[i] = [u,i,rui,pui] # rui是用户u对物品i的实际评分,pui是用户u对物品i的预测评分 def rmse(records): """计算均方根误差""" return math.sqrt(sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])/len(records)) 123456

MAE

  如果评分系统是基于整数建立的,对预测结果取整会降低MAE的误差。

MAE = ∑ u , i ∈ T ∣ r u i − r u i ^ ∣ ∣ T ∣ text{MAE}=frac{sum_{u,iin{T}}|r_{ui}-hat{r_{ui}}|}{|T|} MAE=∣T∣∑u,i∈T​∣rui​−rui​^​∣​

# records[i] = [u,i,rui,pui] # rui是用户u对物品i的实际评分,pui是用户u对物品i的预测评分 def mae(records): """计算平均绝对误差""" return math.sqrt(sum([abs(rui-pui) for u,i,rui,pui in records])/len(records)) 123456

Precision(准确率)&Recall(召回率)

Precision = ∑ u ∈ U ∣ R ( u ) ⋂ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ text{Precision}=frac{sum_{uin{U}}|R(u)bigcap{T(u)}|}{sum_{uin{U}}|R(u)|} Precision=∑u∈U​∣R(u)∣∑u∈U​∣R(u)⋂T(u)∣​
其中 R ( u ) R(u) R(u)是用户在训练集上的行为给用户作出的推荐列表。

Recall = ∑ u ∈ U ∣ R ( u ) ⋂ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ text{Recall}=frac{sum_{uin{U}}|R(u)bigcap{T(u)}|}{sum_{uin{U}}|T(u)|} Recall=∑u∈U​∣T(u)∣∑u∈U​∣R(u)⋂T(u)∣​
其中 T ( u ) T(u) T(u)是用户在测试集上的行为给用户作出的推荐列表。

def precision_recall(test, N): """ 计算准确率和召回率 test: N: 推荐列表长度 """ hit = 0 n_recall = 0 n_precision = 0 for user, item in test.items(): rank = Recommend(user, N) hit += lenn(rank & itmes) n_recall += len(items) n_precision += N return [hit/(1.*n_recall), hit/(1.*n_precision)]

1234567891011121314151617

覆盖率

  覆盖率描述一个推荐系统对物品长尾的发掘能力。

Coverate = ∣ ⋃ u ∈ U R ( u ) ∣ I text{Coverate}=frac{|bigcup_{uin{U}}R(u)|}{I} Coverate=I∣⋃u∈U​R(u)∣​
其中 R ( u ) R(u) R(u)是推荐系统给每个用户推荐一个长度为 N N N的物品列表。

信息熵

  信息熵可以定义覆盖率。

H = ∑ i = 1 n p ( i ) log ⁡ p ( i ) H=sum_{i=1}^np(i)log{p(i)} H=i=1∑n​p(i)logp(i)
其中 p ( i ) p(i) p(i)是物品 i i i的流行度除以所有物品流行度之和。

基尼系数

  基尼系数可以定义覆盖率。基尼系数也可以查看推荐系统算法是否具有马太效应(流行更流行,不流行更不流行)。

G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) G=frac{1}{n-1}sum_{j=1}^n(2j-n-1)p(i_j) G=n−11​j=1∑n​(2j−n−1)p(ij​)
其中 i j i_j ij​是按照物品流行度 p p p从小到大排序的物品列表中的第 j j j个物品。

def gini_index(p): """计算基尼系数""" j = 1 n = len(p) G = 0 for item, weight in sorted(p.items(), key=itemgetter(1)): G += (2*j-n-1)*weight return G / float(n-1) 12345678910

多样性

  多样性描述了推荐列表中物品两两之间的不相似性。

Diversity ( R ( u ) ) = 1 − ∑ i , j ∈ R ( u ) , i ≠ j s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) text{Diversity}(R(u))=1-frac{sum_{i,jin{R(u)},ineq{j}}s(i,j)}{frac{1}{2}|R(u)|(|R(u)|-1)} Diversity(R(u))=1−21​∣R(u)∣(∣R(u)∣−1)∑i,j∈R(u),i​=j​s(i,j)​
其中 R ( u ) R(u) R(u)为用户 u u u的推荐列表, s ( i , j ) ∈ [ 0 , 1 ] s(i,j)in[0,1] s(i,j)∈[0,1]定义了物品 i i i和物品 j j j之间的相似度。

推荐系统的整体多样性定义为:
Diversity = 1 ∣ U ∣ ∑ u ∈ U Diversity ( R ( u ) ) text{Diversity}=frac{1}{|U|}sum_{uin{U}}text{Diversity}(R(u)) Diversity=∣U∣1​u∈U∑​Diversity(R(u))

获取各种评测指标的途径

-离线实验问卷调差在线实验用户满意度xyo预测准确度yyx覆盖率yyy多样性oyo新颖性oyo惊喜度xyx

长尾分布

f i ( k ) = α i k β i f u ( k ) = α u k β u f_i(k)=alpha_ik^{beta_i} f_u(k)=alpha_uk^{beta_u} fi​(k)=αi​kβi​fu​(k)=αu​kβu​
其中 f u ( k ) f_u(k) fu​(k)表示对 k k k个物品产生行为的用户数; f i ( k ) f_i(k) fi​(k)表示被 k k k个用户产生过行为的物品数。

相关知识

花花公子07春夏新品发布会
樱花山茶花花瓣落满地07
07 花卉的开花调节
07花类药材栽培技术
被物流问题耽搁后,阿维塔 07 Ultra 版车型开启交付
【恐怖:骷髅头出现!和花卉系列图库07哪个好用】恐怖:骷髅头出现!和花卉系列图库07对比-ZOL下载
07粉色半球形手捧花2
【花卉系列图库07和世界各国地图精选!第二辑哪个好用】花卉系列图库07和世界各国地图精选!第二辑对比-ZOL下载
【西方园林史课件】07法国古典主义园林
植物传奇07:疯狂的君子兰07

网址: 07 https://www.huajiangbk.com/newsview847361.html

所属分类:花卉
上一篇: 案例 | 广东省高院法官谈食品惩
下一篇: SM=性变态?关于SM你想知道的

推荐分享