传统Item-Based协同过滤推荐算法改进
前言
今天要读的论文为一篇于2009年10月15日发表在《计算机研究与发展》的一篇会议论文,论文针对只根据相似性无法找到准确可靠的最近邻这个问题,提出了结合项目近部等级与相似性求取最近邻的新方法;此外针对系统中新加入的项目,因为其上评分信息的匾乏,求得的最近邻往往是不准确的,为此,提出了聚合最近邻和”集体评分”两种改进方法。
摘要
传统Item-Based协同过滤算法根据项目之间的相似性来选取最近邻居。然而,现存的几种相似性度量方法都存在相应的弊端,因此只根据相似性无法找到准确可靠的最近邻。根据对两项目共同评分的用户个数,建立项目近邻等级,提出了结合项目近部等级与相似性求取最近邻的新方法。另外,对于系统中新加入的项目,因为其上评分信息的匾乏,求得的最近邻往往是不准确的。为此,提出了聚合最近邻和”集体评分”两种改进方法。在MovieLens数据集上的实验结果表明,将上述改进应用于传统Item-Based协同过滤推荐算法,推荐质量有明显提升。
传统的item-based协同过滤推荐算法
推荐系统中,数据的核心是一个用户一项目评分矩阵A(m,n),它包含m个用户的集合U={u1, u2, ..., um},和n个项目的集合I={i1, i2, ..., in},元素Rui表示用户u对项目i的评分,若用户u未对项目i评分,则Rui=0.
项目的相似度度量方法
首先我们定义:
- 对于任意的i∈I,定义项目一评分矩阵A(m,n)中对应于i的列为项目i的评分向量,记为Ui。
- 对于任意的u∈U,定义项目一评分矩阵A(m,n)中对应于u的 行为用户u 的评分向量,记为Iu。
余弦相似度
标准的余弦相似度:

修正的余弦相似度
不同用户存在不同评分尺度的偏见,下面将采取减去对应项目上所有用户的平均评分的方法,来刻画用户对某一项目的评分与“公众意见”的偏差。

相关相似性
根据pearson提出的相关系数来度量项目之间的相似性,定义对项目i和j都有评分的用户集合为Uij。

选择合适的相似性度量方法,求出项目集I中任意两项目之间的相似性,存入项目相似性矩阵Sim中,显然,Sim是对称矩阵。
最近邻的选取
中心最近邻
中心最近邻,是当前最常用也是最成功的最近邻选取方法。对于任意的i∈I,根据相似性矩阵Sim中其他项目与i的相似性,按从大到小顺序排列,将相应的项目编号存入最近邻矩阵TkNN的相应行中,构成项目i的最近邻集合;即第一最近邻与i的相似性最高,第二最近邻次之,依此类推。
聚合最近邻
聚合最近邻,对于某些新加人的项目,其评分向量与其他项目的评分向量的交集很小,不利于准确地计算相似性。比如说,已知当前项目i的第一最近邻为j,项目k和i被1个用户共同评分,项目t和i没有被共同评过分。这样,在i的最近邻列表中,k排在t前。但此时,若t是j的第一最近邻,那么t
也很有可能是i的最近邻。聚合最近邻的思想就是基于上述考虑。
算法改进
求取最近邻过程的改进—结合使用项目相似性与项目近邻等级
求取最近邻是整个协同过滤算法最关键的一步。最近邻越准确,其推荐结果就越可靠。因为最近邻根据项目相似性矩阵Sim来选取。
产生推荐过程的改进—集体评分
对于新加入的项目,集体评分是一个解决难以找到新加入项目最近邻的好方法。
结尾
好了,今天的论文就先读到这儿了,明天再见喽。
传统Item-Based协同过滤推荐算法改进的更多相关文章
- SimRank协同过滤推荐算法
在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的 ...
- SparkMLlib—协同过滤推荐算法,电影推荐系统,物品喜好推荐
SparkMLlib-协同过滤推荐算法,电影推荐系统,物品喜好推荐 一.协同过滤 1.1 显示vs隐式反馈 1.2 实例介绍 1.2.1 数据说明 评分数据说明(ratings.data) 用户信息( ...
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .
ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3 基于物品的协同过滤推荐算法--读"Item-Based ...
- 基于MapReduce的(用户、物品、内容)的协同过滤推荐算法
1.基于用户的协同过滤推荐算法 利用相似度矩阵*评分矩阵得到推荐列表 已经推荐过的置零 2.基于物品的协同过滤推荐算法 3.基于内容的推荐 算法思想:给用户推荐和他们之前喜欢的物品在内容上相似的物品 ...
- Spark ML协同过滤推荐算法
一.简介 协同过滤算法[Collaborative Filtering Recommendation]算法是最经典.最常用的推荐算法.该算法通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些 ...
- 基于局部敏感哈希的协同过滤推荐算法之E^2LSH
需要代码联系作者,不做义务咨询. 一.算法实现 基于p-stable分布,并以‘哈希技术分类’中的分层法为使用方法,就产生了E2LSH算法. E2LSH中的哈希函数定义如下: 其中,v为d维原始数据, ...
- 推荐系统| ② 离线推荐&基于隐语义模型的协同过滤推荐
一.离线推荐服务 离线推荐服务是综合用户所有的历史数据,利用设定的离线统计算法和离线推荐算法周期性的进行结果统计与保存,计算的结果在一定时间周期内是固定不变的,变更的频率取决于算法调度的频率. 离线推 ...
- Mahout之(二)协同过滤推荐
协同过滤 —— Collaborative Filtering 协同过滤简单来说就是根据目标用户的行为特征,为他发现一个兴趣相投.拥有共同经验的群体,然后根据群体的喜好来为目标用户过滤可能感兴趣的内容 ...
- 协同过滤CF算法之入门
数据规整 首先将评分数据从 ratings.dat 中读出到一个 DataFrame 里: >>> import pandas as pd In [2]: import pandas ...
- Spark2.0 协同过滤推荐
ALS矩阵分解 http://blog.csdn.net/oucpowerman/article/details/49847979 http://www.open-open.com/lib/view/ ...
随机推荐
- 用 erlang 描述 tcc
Transaction 视为一个 Actor. start_transaction(Order) -> p1 = spawn(start_order(self, Order.subOrder1) ...
- 鸿蒙(HarmonyOS)原生AI能力之文本识别
鸿蒙(HarmonyOS)原生AI能力之文本识别 原生智能介绍 在之前开发中,很多场景我们是通过调用云端的智能能力进行开发.例如文本识别.人脸识别等. 原生即指将一些能力直接集成在本地鸿蒙系统中,通过 ...
- 这是我见过最通俗易懂的SVD(奇异值分解)算法介绍
线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用. SVD是最广泛使用的无监督学习算法之一,它 ...
- Unix和Windows操作系统中路径中的正斜杠和反斜杠的区别
- Windows安全加固(四)
七.服务安全 1.禁用TCP/IP上的NetBIOS(协议所用端口139) 作用:禁用TCP/IP上的NetBIOS协议,可以关闭监听的UDP137.UDP138.UDP139端口. (1)使用快捷键 ...
- python基础学习6和7
模块类与对象 模块 内置模块 time, random, os, json 第三方模块 requests, pandas, numpy,.... 自定义模块 xxx.py 常见的内置模块 hashli ...
- 时间序列数据库TSDB InfluxDB介绍
背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工智能.物联网.机器学习.商业智能.智能预警啊等等. 以前的系统,做数据可视化,信息管理,流程控制.现在业务已经不仅仅满足于这 ...
- SSH 框架的搭建
Structs1+spring+Hibernate Structs 相当于mvc设计模式中V.C,即jsp页面和Servlet: spring 管理业务逻辑,即Service: Hibernate ...
- w3cschool-memcached教程
https://www.w3cschool.cn/memcached/ Memcached 教程 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. 手册简介 Memcached ...
- 项目PMP之六项目进度管理
项目PMP之六--项目进度管理 一.定义:用于沟通和管理相关方期望的工具,可作为报告绩效的基础,说明项目的交付时间和方式 迭代型进度计划(敏捷模式):接受存在未完成项,滚动式规划管理 按需进度计划 ...