怎么用slope one java算法进行数据填充

您的位置: &
基于Weighted-slope One的用户聚类推荐算法研究
优质期刊推荐微信扫一扫,联系客服
相关期刊文献
相关硕士文献
频道总排行
频道本月排行下次自动登录
现在的位置:
& 综合 & 正文
Slope One 算法
在做的一个项目中需要用到推荐, 在网上查了一下.
: SlopeO和其它类似算法相比, 它的最大优点在于算法很简单, 易于实现, 执行效率高, 同时推荐的准确性相对很高;
基本概念SlopeOne的基本概念很简单, 例子1, 用户X, Y和A都对Item1打了分. 同时用户X,Y还对Item2打了分, 用户A对Item2可能会打多少分呢?
Rating to Item 1
Rating to Item 2
根据SlopeOne算法, 应该是:4 - ((5-3) + (4-2))/2 = 2.5. 解释一下.
用户X对Item1的rating是5, 对Item2的rating是3, 那么他可能认为Item2应该比Item1少两分.
同时用户Y认为Item2应该比Item1少1分.
据此我们知道所有对Item1和Item2都打了分的用户认为Item2会比Item1平均少1.5分.
所以我们有理由推荐用户A可能会对Item2打(4-1.5)=2.5分;
很简单是不是? 找到对Item1和Item2都打过分的用户, 算出rating差的平均值, 这样我们就能推测出对Item1打过分的用户A对Item2的可能Rating, 并据此向A用户推荐新项目.这里我们能看出SlopeOne算法的一个很大的优点, 在只有很少的数据时候也能得到一个相对准确的推荐, 这一点可以解决Cold Start的问题.
加权算法接下来我们看看加权算法(Weighted SlopeOne). 如果有100个用户对Item1和Item2都打过分, 有1000个用户对Item3和Item2也打过分. 显然这两个rating差的权重是不一样的. 因此我们的计算方法是(100*(Rating 1 to 2) + 1000(Rating 3 to 2)) / (100 + 1000)
上面讨论的是用户只对项目的喜好程度打分.还有一种情况下用户也可以对项目的厌恶程度打分. 这时可以使用双极SlopeOne算法(BI-Polar SlopeOne). 我还在研究这篇论文,搞懂了再写吧, 呵呵;
参考资料Slope One 算法是由 Daniel Lemire 教授在 2005 年提出. ;上面也列出了几个参考实现. 现在有Python, Java和Erlang, 还没有C#.这篇: 是一个很好的怎么实现SlopeOne并使用它来推荐的例子. 但是现在好像不能访问了 :-(
参考这篇文章, 我会在下一篇用C#代码讲解怎么实现Weighted SlopeO
&&&&推荐文章:
【上篇】【下篇】&dependency&
&groupId&org.apache.mahout&/groupId&
&artifactId&mahout-core&/artifactId&
&version&0.8&/version&
&/dependency&
&dependency&
&groupId&org.apache.mahout&/groupId&
&artifactId&mahout-math&/artifactId&
&version&0.8&/version&
&/dependency&
&dependency&
&groupId&org.apache.mahout&/groupId&
&artifactId&mahout-integration&/artifactId&
&version&0.8&/version&
&/dependency&
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 推荐算法。基于用户评分矩阵,对某用户推荐其未评分的产品,未评分的产品的评分预测依据其他用户的评分进行计算,最简单的计算方式如下:
item1对item2的平均差:((5-3)+(4-3))/2=1.5
item3对item2的平均差:((3-3)+(5-3))/2=1
那么user3对item2的得分:((4-1.5)+(3-1))/2=2.25
Mahout应用:
public static void main(String[] args) throws Exception { File dataFile=new File(&d:/cf.txt&); DataModel model = new FileDataModel(dataFile);
Recommender oneRecommender=new SlopeOneRecommender(model);
List&RecommendedItem&
list=oneRecommender.recommend(3, 10); for (RecommendedItem recommendedItem : list) {
System.out.println(recommendedItem.getItemID()+&-&&+recommendedItem.getValue()); }}
本文转载自:
欢迎加入我爱机器学习QQ14群:
微信扫一扫,关注我爱机器学习公众号
欢迎加入我爱机器学习QQ14群:
最新文章列表
NIPS 2016 — Day 1 Highlights NIPS 2016 — Day 2 Highlights:...
2017年十二月 &(18)
2017年十一月 &(20)
2017年十月 &(31)
2017年九月 &(47)
2017年八月 &(58)
2017年七月 &(60)
2017年六月 &(67)
2017年五月 &(66)
2017年四月 &(65)
2017年三月 &(54)
2017年二月 &(48)
2017年一月 &(54)
2016年十二月 &(62)
2016年十一月 &(97)
2016年十月 &(97)
2016年九月 &(124)
2016年八月 &(83)
2016年七月 &(13)
2016年六月 &(10)
2016年五月 &(7)
2016年四月 &(9)
2016年三月 &(7)
2016年二月 &(2)
2016年一月 &(3)
2015年十二月 &(5)
2015年十一月 &(4)
2015年十月 &(2)
2015年九月 &(2)
2015年八月 &(3)
2015年七月 &(6)
2015年六月 &(8)
2015年五月 &(4)
2015年四月 &(1)
2015年三月 &(3)
2015年二月 &(1)
2015年一月 &(2)
2014年十二月 &(4)
2014年十一月 &(2)
2014年十月 &(3)
2014年九月 &(4)
2014年八月 &(22)
2014年七月 &(40)
2014年六月 &(61)
2014年五月 &(63)
2014年四月 &(187)
2014年三月 &(4798)
2014年二月 &(764)
2014年一月 &(330)
2013年十二月 &(145)
2013年十一月 &(126)
2013年十月 &(216)
2013年九月 &(284)
2013年八月 &(327)
2013年七月 &(275)
2013年六月 &(315)
2013年五月 &(228)
2013年四月 &(175)
2013年三月 &(186)
2013年二月 &(118)
2013年一月 &(210)
2012年十二月 &(221)
2012年十一月 &(155)
2012年十月 &(143)
2012年九月 &(98)
2012年八月 &(99)
2012年七月 &(109)
2012年六月 &(75)
2012年五月 &(88)
2012年四月 &(78)
2012年三月 &(78)
2012年二月 &(50)
2012年一月 &(17)
2011年十二月 &(27)
2011年十一月 &(6)
2011年十月 &(11)
2011年九月 &(13)
2011年八月 &(13)
2011年七月 &(19)
2011年六月 &(18)
2011年五月 &(6)
2011年四月 &(12)
2011年三月 &(15)
2011年二月 &(6)
2011年一月 &(9)
2010年十二月 &(6)
2010年十一月 &(11)
2010年十月 &(5)
2010年九月 &(8)
2010年八月 &(5)
2010年七月 &(12)
2010年六月 &(4)
2010年五月 &(7)
2010年四月 &(6)
2010年三月 &(12)
2010年二月 &(7)
2010年一月 &(2)
2009年十二月 &(5)
2009年十一月 &(16)
2009年十月 &(6)
2009年九月 &(7)
2009年八月 &(7)
2009年七月 &(5)
2009年六月 &(6)
2009年五月 &(6)
2009年四月 &(4)
2009年三月 &(7)
2009年二月 &(6)
2009年一月 &(1)
2008年十二月 &(4)
2008年十一月 &(5)
2008年十月 &(1)
2008年八月 &(1)
2008年七月 &(3)
2008年六月 &(3)
2008年五月 &(3)
2008年三月 &(1)
2007年十二月 &(1)
2007年十月 &(1)
2007年八月 &(4)
2007年七月 &(1)相关文章推荐
Slope One的基本概念很简单, 例子1, 用户X, Y和A都对Item1打了分. 同时用户X,Y还对Item2打了分, 用户A对Item2可能会打多少分呢?
slope one算法是基于 ”同物品“ 之间的 ”评分差“
的线性算法,预测用户对物品评分的个性化算法
适用商品的更新不频繁,数量相对稳定且物品数明显小于用户数的场景,依赖用户的行为日志和物品偏好...
推荐算法Slope one的原理
Slope One的基本概念很简单, 例子1, 用户X, Y和A都对Item1打了分. 同时用户X,Y还对Item2打了分, 用户A对Item2可能会打多少分呢?
基于用户的协同过滤算法也被称为最近邻协同过滤或KNN (K.Nearest-Neighbor,K最近邻算法)。...
1995年,Freund and Schapire改进了Boosting算法,取名为Adaboost算法。AdaBoost算法的调整主要是:
1. 使用加权后选取的训练数据代替随机选取的训练样本,这样...
什么是多租户今天在看ElasticSearch介绍的时候,其中提到ES可以支持多租户的功能,突然联想到之前在某些软件服务提供商的介绍中也出现过这个名词,但对其一直不是很理解。经过查阅资料,将自己对租户...
SlopeOne算法是一个非常简单的协同过滤算法,主要思想如下:如果用户u对物品j打过分,现在要对物品i打分,那么只需要计算出在同时对物品i和j打分的这种人中,他们的分数之差平均是多少,那么我们就可以...
近几年推荐算法研究得比较火热,得益于netflix的百万大奖。推荐算法有多种分法,有人喜欢分成基于内容和基于用户行为的,而主流的文献还是从算法分得多:即neighborhood-based和基于fac...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 slope one java 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信