SlopOne 改进
lope One
其基本的想法来自于简单的一元线性模型 $w = f(v) = v + b$。已知一组训练点 ${(v_i, w_i)}_{i=1}^n$,利用此线性模型最小化预测误差的平方和,我们可以获得

利用上式获得了$b$的取值后,对于新的数据点$v_{new}$,我们可以利用 $w_{new} = b + v_{new}$ 获得它的预测值。
直观上我们可以把上面求偏移 $b$ 的公式理解为 $w_i$ 和 $v_i$ 差值的平均值。

利用上面的直观,我们定义item $i$ 相对于 item $j$ 的平均偏差:

其中 $S_{j,i}()$ 表示同时对item $i$ 和 $j$ 给予了评分的用户集合,而 $card()$ 表示集合包含的元素数量。
有了上面的定义后,我们可以使用 
获得用户 $u$ 对 item $j$ 的预测值。当把所有这种可能的预测平均起来,可以得到:

其中 $R_j$ 表示所有用户 $u$ 已经给予评分且满足条件 ($i \neq j$ 且 $S_{j,i}$非空) 的item集合。
对于足够稠密的数据集,我们可以使用近似

把上面的预测公式简化为

Weighted Slope One
Slope One中在计算 item $i$ 相对于 item $j$ 的平均偏差 $dev_{j,i}$ 时没有考虑到使用不同的用户数量平均得到的 $dev_{j,i}$,其可信度不同。假设有 $2000$ 个用户同时评分了 item $j$ 和 $k$,而只有$20$ 个用户同时评分了 item $j$ 和 $l$,那么显然获得的 $dev_{j, k}$ 比 $dev_{j, l}$
更具有说服力(类似于kNN中压缩相似度的思想)。所以一个修正是对最终的平均使用加权:

其中

(根据在Netflix上的经验,可能把 $c_{j,i}$ 再开方更合适)
Bi-Polar Slope One
Bi-Polar Slope One 进一步把用户已经给予评分的item划分为两类——like和dislike,而其划分的方法是判断对应的评分是否大于此用户的平均评分:



类似地,可以定义对item $i$ 和 $j$ 具有相同喜好的用户集合:


利用上面的定义,我们可以使用下面的公式为(like或dislike的item)获得新的偏差值:

这样可以计算从item $i$ 计算得到的预测值:
或者 
最终 Bi-Polar Slope One 的预测公式为

最后的实验比较使用的度量为 MAE,其结果如下:

SlopOne 改进的更多相关文章
- 120项改进:开源超级爬虫Hawk 2.0 重磅发布!
沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法
转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...
- ITTC数据挖掘平台介绍(四) 框架改进和新功能
本数据挖掘框架在这几个月的时间内,有了进一步的功能增强 一. 超大网络的画布显示虚拟化 如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下: ...
- C# 3.0新语言特性和改进(一)
引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...
- jqGrid插件getCol方法的一个改进
jgGrid插件是非常常用的一个基于jQuery的表格插件,功能非常强大.我最近也频繁使用.但是这个插件也有一些不够完善的地方.比如这个getCol方法. getCol方法接受三个参数 colname ...
- kaggle入门2——改进特征
1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...
- SQL Server 2016中In-Memory OLTP继CTP3之后的新改进
SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...
- Hadoop学习笔记—21.Hadoop2的改进内容简介
Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: (1)HDFS的NameNod ...
随机推荐
- EBS业务学习之应付管理
应付款系统是供应链管理的最后一个环节,它使公司能够支付供应商提供的货物和服务的费用.供应链管理的目标是保持低库存量但又有充足的存货以满足要求,仓库中的库存就等于钱,因此,应付款管理的目标是尽可能地推迟 ...
- [ExtJS5学习笔记]第二十八节 sencha ext js 5.1.0发布版本正式发布 extjs doc下载地址
本文地址:http://blog.csdn.net/sushengmiyan/article/details/41911539 本文作者:sushengmiyan ------------------ ...
- Swift基础之设计折线坐标图
最近添加了折线视图的样式,所以在这里用Swift语言重新再使用设计一下 首先设置纵坐标的数值是:体重 //体重 let weightLabel = UILabel.init(frame: ...
- 剑指Offer——CVTE校招笔试题+知识点总结(Java岗)
剑指Offer(Java岗)--CVTE校招笔试题+知识点总结 2016.9.3 19:00参加CVTE笔试,笔试内容如下: 需要掌握的知识:Linux基本命令.网络协议.数据库.数据结构. 选择题 ...
- Erlang edoc 多级目录出错
Erlang edoc 多级目录出错使用rebar doc来生成项目文档.但是当erl源文件目录src下建立子目录,并新建erlang文件后,就无法生成文档. 例如,新建 src/tttt/, 并添加 ...
- Dynamics CRM 窗体Javascript获取时间字段值的准确转换
本篇延续上篇博文继续时间字段的转化实验,本篇讲的是在窗体Javascript中获取及更新时间字段的具体写法,是否需要进行时制的转化,先看下通过ODATA取到的时间字段值 当然取出来看格式就知道是不能直 ...
- 使用Geolocation校正GDAL不支持的数据
对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...
- 服务端技术进阶(八)GitHub入门篇
服务端技术进阶(八)GitHub入门篇 前言 在投递简历的过程中,发现有的公司会要求填写自己的GitHub地址,而自己却还没有GitHub帐号,准确点说是自己还不太会使用GitHub.(貌似开源社区中 ...
- Android初级教程获取手机系统联系人信息
在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...
- Hadoop:Hadoop基本命令
http://blog.csdn.net/pipisorry/article/details/51223877 常用命令 启用hadoop start-dfs.sh start-hbase.sh 停止 ...