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 ...
随机推荐
- Python 3.3.3 使用requests模拟登录网站
在模拟登录上,requests确实比python标准库中的相关模块更加简洁. 假设你需要去爬一组页面(targetUrls),而这些页面要登录才能进行访问.那么requests能够提供一种相当简单的语 ...
- Apache shiro集群实现 (八) web集群时session同步的3种方法
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- python+OpenCV 特征点检测
1.Harris角点检测 Harris角点检测算法是一个极为简单的角点检测算法,该算法在1988年就被发明了,算法的主要思想是如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点.基本原理是根据 ...
- 为什么不要在viewDidLoad方法中设置开始监听键盘通知
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个普遍的错误是,程序猿(媛)试图在view controll ...
- FFmpeg源代码简单分析:结构体成员管理系统-AVOption
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- scala for spark
写了点scala的内容,方便看spark源码,估计一两天就能看完,内容比较粗浅. 下载地址: http://download.csdn.net/detail/lsshlsw/7983541
- EBS 客户表结构
客户表/联系人/PARTY关联 HZ_PARTIES 客户账户表 HZ_CUST_ACCOUNTS SELECT hp.party_number --客户注册标识 , hp.party_name ...
- 【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
- 编译GDAL支持ArcObjects
编译GDAL支持ArcObjects. 首先修改nmake.opt文件中对应的ArcObjects,修改后的如下所示: #uncomment to use ArcObjects ARCOBJECTS_ ...
- mysql 字符集查看 设定
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8 character_set_server = utf8 修 ...