• 四夕英河
    2018-04-21
    Slope One算法那里感觉说的不够清楚,说下小白的意见,抛砖迎玉。

    第一,物品A与物品B之间的差距是指平均下来A与B的评分差距,并且这里还是有方向的,A与B的评分差距和B与A的评分差距互为相反数。比如这里A与B的评分差距可以理解为A物品的评分平均比B物品的评分高0.5分(注意这里的“平均”),而B与A的评分差距则是-0.5分。

    第二,矩阵一般都是先行后列,比如矩阵A[1,2]是指第一行的第二列,但是这里的矩阵是相反的,比如A与B的评分差距,本来应该是在第一行第二列,但是这里是在第二行第一列。

    我想这评论样第一位那位同学的问题应该可以解决。那个同学说的C与B的评分差距在原文中其实不是1(1),而是-1(1),并且准确的评分应该是1(2),因为按照你说的是C与B,不是B与C。
    展开
    
     32
  • AbyssKR
    2018-03-21
    邢老师,两两计算物品间差距,物品C与物品B间为什么不是 -1(2) 而是 1(1) 呢?
    
     18
  • 林彦
    2018-03-23
    谢谢邢无刀老师的分享。你的分享很有价值,能写出来很不容易。

    1. "只需要按照用户评分过的物品,逐一取出和它们相似的物品出来就可以了"这里取出物品的相似度需不需要一个阈值来减少取出(用来计算)的物品数目?按照前文物品相似度的计算公式,只要2个物品有公共用户(的消费结果或行为),这个物品相似度值就为非零值。实际应用中物品相似度的非零值会不会数量还是很大的,这个数量对TopK推荐的计算耗时影响大吗,如从几秒钟变成分钟级?

    2. "上面提到的相似度计算方法,不只是适用于评分类矩阵,也适用于行为矩阵。所谓行为矩阵,即矩阵元素为 0 或者 1 的布尔值",如果这个相似度计算方法应用于行为矩阵,计算中使用的均值是一个介于0和1之间的浮点数,减去均值后矩阵的值从0或1(整型值或布尔值)变成了浮点数值。是这样吗?

    3. 请问“两两物品之间的差距”的距离计算用的是Slope One特有的距离计算公式?我看了一篇文章https://arxiv.org/pdf/1202.1112.pdf,里面的公式(28)是计算距离的。物品 A 和物品 B 之间的差距是:((5-3)+(3-4))/2=0.5,物品A和物品C之间的差距是:(5-2)/1=3。与文中相符。

    4. 文中最后的加权平均我的理解是上面引文中的公式(30)

    5. Slope One 可以做到在线更新我的理解是每当有一个新的用户评分时,只需要把原来该用户对于这个物品的评分值从推荐分数替换成实际分数,然后更新物品间距离矩阵中包含这个物品的行和列即可,每个矩阵元素计算过程中以前的分子和分母值可以保留,只需往分子增加一个项目,分母加1即可更新。同时行或列的值只需计算一次,然后取相反数填到行列转置的位置。而相似度矩阵计算则需要遍历所有和这个物品有公共用户的物品的所有公共用户的评分,我的判断计算量还是要大不少的。
    展开
    
     12
  • Classtag
    2018-03-21
    现在的亚马逊网站用户和物品数据半年都在100Billion 量级 如何在这么大规模数据下做cf推荐?
    
     7
  • 萌面赵先生
    2019-03-22
    A和B的差距: ((5+3)-(3+4))/2 = 0.5;
    A和C的差距:(5-2)/1 = 3;
    B和A的差距:((3+4)-(5+3))/2 = -0.5;
    B和C的差距:((3+2)-(2+5))/2 = -1;
    C和A的差距:(2-5)/1 = -3;
    C和B的差距:((2+5)-(3+2))/2 = 1;
    如果按照此规则计算,表2中的B对C的差距应该是-1,C对B的差距应该是1,表2中是不是方反了?
    展开
    
     5
  • Moo
    2019-03-01
    Slope One算法讲的不是很清楚。希望有更多例子。
    
     5
  • 曾阿牛
    2018-03-23
    slope one 增量实时更新:一条用户物品评分对,仅影响到该用户历史消费过的物品与该物品的距离值(局部数据),且距离值是简单的统计值,存一些中间变量就可以增量更新
    
     5
  • 大猫星球
    2018-03-29
    这一刻,我默默的把丢掉的高中数学拿起来
    
     2
  • 叶晓锋
    2018-03-21
    看了又看买了又买非常有用,缺点是对于低频应用这部分数据比较少
    
     2
  • 预见
    2018-12-10
    老师讲的真不错,我一般看第一遍可能吸收百分之30,第二遍开始,自己写笔记,参透每一个概念和公式。基本能吸收85以上。第二遍花费的时间是第一遍的两倍多,最后豁然开朗,甚是欣慰!

    作者回复: 图书正在编辑中,比专栏详细更多。

    
     1
  • 四夕英河
    2018-04-20
    把计算物品相似度那里的公式的假设说一下会更容易明白,假设物品i的特征向量有k维,设i的特征向量为Ri,Ri=(Ri1,Ri2,···,Rik); 物品j的特征向量有k维,设j的特征向量为Rj,Rj=(Rj1,Rj2,···,Rjk)
    
     1
  • shoxx
    2018-03-22
    Slope One最後試算的推薦分數是針對用戶C面向物品A的推薦分數嗎?靠著用戶C對B&C的評分以及B對A、C對A的推薦分數去推估出來的?
    請問那個8分與2.5分如何得出呢?
    
     1
  • Jessie
    2019-11-26
    第一个公式,哪个是分母呀,看着都是分子呢,难道两个根号是分母? 那应该用 a/b 表示,这个数学表达,有问题。
    
    
  • 夜雨声烦
    2019-11-21
    Slope One算法那块讲的太粗糙了,而且感觉数据图是错的啊,物品B和物品C的用户数难道不应该是2吗?

    作者回复: Slope one简单介绍了一下,主要是介绍其思想。你说的错误已经修改了,谢谢指出啊。欢迎继续交流:chenkaijiang001@ke.com

    
    
  • rukidding
    2019-11-12
    slope one 看起来是个回归啊? 之前看过集体智慧编程那本书, 在这里 slope one看起来像是回归,物品是输入, 用户的行为是参数,生成喜好程度。
    
    
  • MR.Raindrop
    2019-10-23
    预测用户对物品评分那个地方有错误,评分乘相似度累加得出来的评分可能相当大超过评分最高值5. 也可能相当小,除非其他物品与被预测物品相似度累加等于1
    
    
  • mier
    2019-10-11
    我不太理解TopK那里的公式。假如这个user只有一个历史item,评分是5。此时要计算另一个item,与历史item相似度为0.1。分子计算得到0.5,再除分母,得到5。两个得分一样?我理解错误了吗?
     2
    
  • shangqiu86
    2019-04-28
    我来回答下老师的作业“为什么说 Slope One 可以做到在线更新呢?我能想到的是存储sku分数的同时也存储了分子和分母,当有个用户新增了对某个sku的分值,则只需在分子中加入,同时在分母中加1,去刷新该sku与这个用户之前打过分数的其他sku之间的分值即可。推荐的时候则从存储的分数里面去计算即可,我想这个耗时也就在100ms之内吧,老师,我这样说对吗?
    
    
  • 衬衫的价格是19美元
    2019-02-18
    1.由用户1与用户2对物品A,B的评价,计算出物品A与物品B的距离
    2.由用户1与用户3对物品A和物品C的评价,计算出物品A与物品C的距离
    3.由上述距离和用户3对物品B,C的评价,加权预算出用户3对物品A的评价
    
    
  • 王掌柜家的小二
    2018-11-19
    想问老师一个问题:在应用slope one算法推荐时,先计算出某个用户未评分的所有物品的评分,然后根据推荐分数生成推荐列表,进而推荐——这样理解对吗?

    作者回复: 你说的这个是所有推荐算法的工作流程。
    Slopeone,你看一下代码,我这里有一个简单实现。
    https://github.com/xingwudao/36/blob/master/src/cf/slope_one.py

    
    
我们在线,来聊聊吧