加权平均是这样一类求平均的运算:参与求平均运算的每一个观测变量都有一个对应的权重值。
加权平均的计算公式如图:
其中的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.适合人群:本科,硕士...
本次分享的文件是关于在MATLAB环境下实现特定算法的研究成果,具体而言,是研究如何利用MATLAB来实现向量加权平均算法,并进一步探讨INFO-Transformer-GRU故障诊断算法。该研究工作不仅提供了代码实现,而且还附带了...
基于向量加权平均算法INFO优化的极限学习机KELM故障诊断技术,是一种结合了向量加权平均算法与INFO优化算法的新型故障诊断方法。这种技术的核心是利用向量加权平均算法对数据进行预处理,然后将优化后的数据输入到...
加权平均法图像融合算法的原理就是:对原图像的像素值直接取相同的权值,然后进行加权平均得到融合图像的像素值,举例说比如要融合两幅图像A,B,那它们的融合后图像的像素值就是A*50%+B*50%,就这么简单。
### Matlab实现向量加权平均算法与INFO-LSSVM实现数据分类算法研究 #### 算法概述 在数据处理和机器学习领域,向量加权平均算法和数据分类算法是两个基础且关键的概念。向量加权平均算法主要应用于对数据集中的...
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
该研究以Matlab为编程平台,深入探讨了向量加权平均算法在风电数据预测中的应用,并结合了最新的深度学习技术。在风电场的实际运营中,准确预测风力发电量是确保电网稳定运行和电力市场交易的重要前提。然而,风速和...
本文介绍了随时间变化频率的任意信道的一些估计以及预测方法以及在WCDMA上行链路系统中的应用研究,其中的单时隙加权平均算法和多时票加权平均算法(WMSA)都是经过分析比较得到的。本论文的主要研究工作在于介绍了...
本文将详细介绍一种结合了向量加权平均算法和信息瓶颈(INFO)优化的门控循环单元(GRU)网络在交通流预测中的应用,并使用Matlab实现该算法的研究。 首先,GRU网络作为循环神经网络(RNN)的一种变体,在处理序列...
本次分享的文件标题为“【创新未发表】Matlab实现向量加权平均算法INFO-Kmean-Transformer-LSTM组合状态识别算法研究”,虽然未在公开渠道发表,但其内容涵盖了向量加权平均算法与多种先进算法如K均值(K-means)、...
本文将围绕“Matlab实现向量加权平均算法INFO-Kmean-Transformer-BiLSTM组合状态识别算法研究”这一主题展开详细讨论,探讨其在相关领域的应用价值和技术细节。 首先,向量加权平均算法是一种数学方法,它通过为...
本次分享的文件内容涉及了Matlab在轴承故障分类算法研究中的应用,具体实现了向量加权平均算法和基于信息深度置信网络(INFO-DBN)的分类方法。文档提到的Matlab版本包含2014、2019a及2024a,这表明该程序经过了不同...
本文详细探讨了一种在Matlab环境下实现的向量加权平均算法与INFO-TCN-Multihead-Attention多输入单输出回归预测算法研究的综合应用,这对于相关专业的大学生及研究者具有重要的参考价值。 首先,从技术实现的角度来...
向量加权平均算法是一种加权平均的计算方法,它通过赋予不同的输入数据不同的权重,来计算输出结果,这在处理多变量数据时具有很大的优势。INFO算法在此处可能指代的是某种信息融合技术,用来整合不同信息源的数据,...
本文档介绍了一种基于Matlab环境下的向量加权平均算法INFO-DELM的故障诊断算法研究,旨在为故障检测提供一种新的技术手段。 首先,算法的名称“INFO-DELM”暗示了该算法可能融合了信息论和深度学习模型的特点。INFO...
本篇文章将详细介绍一种融合了向量加权平均算法和极限学习机(ELM)的乳腺肿瘤诊断方法,并提供相应的Matlab代码,以期帮助相关专业学生和研究者更好地理解和应用机器学习技术。 极限学习机(ELM)是一种单隐藏层...