加权平均是这样一类求平均的运算:参与求平均运算的每一个观测变量都有一个对应的权重值。
加权平均的计算公式如图:
其中的x1....xn是观测变量,w1....wn是权重值。
我们现将其利用在影片的推荐。
我们可以查找与自己口味最为相近的人,并从他所喜欢的影片中找出一部自己还未看过的影片,不过这样做太随意了。有时,这种方法可能会有问题:评论者还未对某些影片做过评论,而这些影片也许就是我们所喜欢的。还有一种可能是,我们会找到一个热衷某部影片的古怪评论者,而根据topMatches所返回的结果,所有其他的评论者都不看好这部影片。
为了解决上面的问题,我们就需要通过一个加权的评价值来为影片打分,评论者的评分结果因此而形成了先后的排名。为此,我们需要取得所有其他评论者的评价结果,得相似度后(相似度算法)再乘以他们为每部影片所给的评价值。
我们还是选用在相似度算法中的数据
critics={'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5, 'The Night Listener': 3.0}, 'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5, 'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0, 'You, Me and Dupree': 3.5}, 'Michael Phillips': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0, 'Superman Returns': 3.5, 'The Night Listener': 4.0}, 'Claudia Puig': {'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'The Night Listener': 4.5, 'Superman Returns': 4.0, 'You, Me and Dupree': 2.5}, 'Mick LaSalle': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0, 'Just My Luck': 2.0, 'Superman Returns': 3.0, 'The Night Listener': 3.0, 'You, Me and Dupree': 2.0}, 'Jack Matthews': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0, 'The Night Listener': 3.0, 'Superman Returns': 5.0, 'You, Me and Dupree': 3.5}, 'Toby': {'Snakes on a Plane':4.5,'You, Me and Dupree':1.0,'Superman Returns':4.0}}
为Toby提供推荐:
如此,相比于与我们不相近的人,那些与我们相近的人将会整体评价值拥有更多的贡献。总计一行给出了所有加权评价值的总和。我们也可以选择利用总计值来计算排名,但是要考虑到一部受更多人评论的影片会对结果产生更大的影响。为了修正这一问题,我们需要除以表中名为Sim.Sum的那一行,它代表了所有对这部电影有过评论的评论者的相似度之和。
python代码如下:(sim_pearson函数见皮尔逊相关系数评价算法,sim_distance函数见阿几里德距离评价算法)
# Gets recommendations for a person by using a weighted average # of every other user's rankings def getRecommendations(prefs,person,similarity=sim_pearson): totals={} simSums={} for other in prefs: # don't compare me to myself if other==person: continue sim=similarity(prefs,person,other) # ignore scores of zero or lower if sim<=0: continue for item in prefs[other]: # only score movies I haven't seen yet if item not in prefs[person] or prefs[person][item]==0: # Similarity * Score totals.setdefault(item,0) totals[item]+=prefs[other][item]*sim # Sum of similarities simSums.setdefault(item,0) simSums[item]+=sim # Create the normalized list rankings=[(total/simSums[item],item) for item,total in totals.items()] # Return the sorted list rankings.sort() rankings.reverse() return rankings import recommendations print recommendations.getRecommendations(recommendations.critics,'Toby') print recommendations.getRecommendations(recommendations.critics,'Toby',similarity=recommendations.sim_distance) [(3.3477895267131013, 'The Night Listener'), (2.8325499182641614, 'Lady in the Water'), (2.5309807037655645, 'Just My Luck')] [(3.5002478401415877, 'The Night Listener'), (2.7561242939959363, 'Lady in the Water'), (2.461988486074374, 'Just My Luck')]
你会发现,选择不同的相似性度量方法,对结果的影响是很小的。
运用函数解释:
setdefault(key[, default])
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.
相关推荐
加权平均算法是一种在计算平均值时考虑每个数据点重要性的统计方法。在C#中实现加权平均算法,我们可以创建一个程序来处理各种线性问题,如数据分析、预测模型或者评分系统。以下是对加权平均算法的详细解释以及如何...
综上所述,理解并实现加权平均图像融合MATLAB算法,不仅要求掌握基本的图像处理概念,还需要熟悉MATLAB编程环境。通过合理的权重分配和有效的图像融合,我们可以从多源图像中提取更丰富的信息,提升图像分析和识别的...
标题中的“基于向量加权平均值的高效优化算法附Matlab代码”表明这是一个关于使用向量加权平均值方法实现优化算法的Matlab程序。这个压缩包包含了一系列的Matlab脚本和辅助文件,旨在帮助理解并实现该优化算法。 1....
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
加权平均法图像融合算法的原理就是:对原图像的像素值直接取相同的权值,然后进行加权平均得到融合图像的像素值,举例说比如要融合两幅图像A,B,那它们的融合后图像的像素值就是A*50%+B*50%,就这么简单。
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
本文介绍了随时间变化频率的任意信道的一些估计以及预测方法以及在WCDMA上行链路系统中的应用研究,其中的单时隙加权平均算法和多时票加权平均算法(WMSA)都是经过分析比较得到的。本论文的主要研究工作在于介绍了...
INFO-RBF回归,基于向量加权平均算法(INFO)优化径向基神经网络(RBF)的数据回归预测 注释清晰 matlab 版本要求2019b及以上版本 程序已调试好可以直接运行(数据直接在Excel中替) 向量加权平均算法(INFO)为2023年新出...
本项目主要涉及了OpenCV中的SURF(Speeded Up Robust Features,快速稳健特征)算法,用于两幅图像的匹配,并采用加权平均法进行图像融合拼接。现在,我们将深入探讨这些概念和技术。 首先,**SURF算法** 是一种...
在Java编程环境中,实现这样的算法可以为各种复杂问题提供解决方案。本篇文章将详细探讨加权Gn算法的基本原理,以及如何使用Java语言进行有效实现。 首先,我们来理解加权Gn算法的核心概念。Gn算法是一类迭代优化...
【JCR2区】Matlab实现向量加权平均算法INFO-LSSVM实现数据分类算法研究.rar
基于向量加权平均算法INFO-BiTCN-BiGRU-Attention的风电预测算法研究Matlab实现.rar
一种图像融合算法,加权平均,实现两幅图像的融合
运用加权平均算法对图像进行灰度处理的MATLAB代码,考虑光照对人眼的影响。
在IDW中,一个未知点的值是由其周围已知点的值加权平均得到的,权重的大小与这些已知点到未知点的距离成反比。这种权重分配方式意味着最近的点对未知点的影响更大,而较远点的影响则逐渐减弱。这种局部搜索域的概念...
【加权平均PIP算法】针对上述问题,文章提出了加权平均PIP算法。该算法结合了加权平均的思想,对线程的优先级进行动态调整。通过赋予线程一个基于等待时间、资源占用等因素的权重,可以更准确地反映线程的实际紧迫性...
在本主题中,我们将深入探讨MUSIC算法及其几种变体,包括加权MUSIC算法、DOA MUSIC算法和空间平滑MUSIC算法,并结合DOA估计算法的应用进行讨论。 首先,让我们了解基本的MUSIC算法。该算法基于噪声子空间的概念,...
属性加权FCM算法
工程计算程序,自动计算出产量和单价的加权平均值,减少自己运算