zoukankan      html  css  js  c++  java
  • 百万用户,八十万商品,如何计算基于物品的协同过滤

    问题描述:

    数据包含了一百四十万用户对80万商品的打分。要利用基于物品的协同过滤来计算。如果直接两两计算140万维的向量相似度,肯定不行啊。

    问题分析:

    每个物品的向量虽然是140万维的,但是其实给一个物品打分的用户其实不多,这个矩阵是非常稀疏的。而且根据长尾问题来说,大部分物品只有很少的用户有过评分。

    总结来说就是每个物品评分的用户远远小于140万,每个用户评价过的商品远远小于80万。所以我们的问题就转换为如何处理这个稀疏的矩阵。

    解决方法:

    在计算相似度时,选用了夹角余弦(因为相比于杰卡德,夹角余弦考虑了评分的大小,实测效果更好)

    第一步首先按商品ID进行group by,数据转换为,商品:评价过该商品用户。然后计算商品向量的长度,也就是用户评分的平方之和再开平方。

    第二步,按用户id进行group by,将数据转换为,用户id :该用户评价过得商品。然后计算两个商品的相似度。得到<item_id,item_id>:评分

    第三步,累加商品对的评分,除以两个商品的向量长度得到相似度。

    参考资料:

    https://www.jianshu.com/p/ae1fe36fdb90

  • 相关阅读:
    介绍我的一位同事的开源RSS阅读器
    开源协议概谈[转载]
    编译错误CS1595
    JAVA和C#,武当和少林之争!
    IBatisNet之获取和操作SQL语句
    Linux能否靠架构取得胜利
    开源CMS Alfresco 1.0 发布
    在asp.net页面上得到Castle容器的实例
    IBatisNet 之 自动生成主关键字
    onvaluechange事件
  • 原文地址:https://www.cnblogs.com/earendil/p/8714819.html
Copyright © 2011-2022 走看看