zoukankan      html  css  js  c++  java
  • 推荐系统学习

    1.两种相似度的定义:

    •User-Based CF 计算user与user的相似度矩阵

    –用户喜欢那些跟他有相似爱好的用户喜欢的东西

    基于用户相似度:用户对同一商品进行购买与评分,评分越高则喜欢程度越高,进行相似度计算,后续可推荐相似用户买过的商品

    •Item-Based CF 计item-item的相似度矩阵

    –具有相似兴趣的用户在未来也具有相似兴趣

    基于商品,某个用户一段时间买了某些商品,根据买的商品属性与归类,可以得到算出与该些商品相似的商品,推荐给该用户

     2.基于用户推荐系统的实现方法

    –给定用户u,找到一个用户的集合N(u),他们和u具有相似的兴趣–将N(u)喜欢的物品推荐给用户.

     相似度计算实例:

    以上左图是A、B、C、D四个用户对5部电影做了评分,形成的用户--电影评分矩阵

    右图为:A与B,B与c等等的两两相似度

    欧氏距离:

    A与B 的相似度: sqrt【(5-1)^2+  (1-5)^2+(2-5)^2+(2-5)^2】=7.07

      

    余弦相似度:

        分子:  5*1+1*5+2*5+2*5=30

          A的模:sqrt(5^2+1^2+2^2+2^2)=5.83095

            B的模    sqrt(1^2+5^2+5^2+5^2=8.71780

         距离:d=30/5.83095*8.71780=0.59

    算出了A与B的相似度为0.59

     1.问题:如何算出C用户对TItannic电影的评分呢?

    (1)得出c的评分,必须找出与c用户相似的用户

    A与C :0.73

    B与C:0.97

    D与C:0.87

    如果我们去相似度两个用户那就是 B、D,打分分别为5分、3分

    估算出c对此电影的评分:

    (0.97*5+0.87*3)/(0.97+0.87)=4.05

    拆分开理解:

    加权求和的一个思想,相似度越高,占得打分权重越高

    二、相似度的归一化

    1)概述

      两者都是评定个体间差异的大小的。欧几里得距离度量会受指标不同单位刻度的影响,所以一般需要先进行标准化,同时距离越大,个体间差异越大;

      空间向量余弦夹角的相似度度量不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小。

    2)计算公式

      欧氏距离(也叫欧几里得距离)公式:

      余弦相似度的计算公式如下:

    3)归一化

    一般来说,为了比较的方便,都会对得到的结果进行归一化处理:

    1)在欧氏距离公式中,取值范围会很大,一般通过如下方式归一化:

      sim = 1 / (1 + dist(X,Y))

    2)因为余弦值的范围是 [-1,+1] ,相似度计算时一般需要把值归一化到 [0,1],一般通过如下方式:

      sim = 0.5 + 0.5 * cosθ

    经过归一化处理以后,相似度全部落在了0和1之间,值越大,相似度越高。

    4)相似度度量的选择

      选择哪种度量方式,没有统一的结论,要依据处理数据的特点来进行确定,可以参考一下知乎上关于这个问题的讨论

    :http://www.zhihu.com/question/19640394

     三、如何使用余弦进行推荐相似度计算

  • 相关阅读:
    基于Servlet+JSP+JavaBean开发
    jsp&servlet报红线javax.servlet.jsp.XXXX cannot be resolved to a type类似错误解决办法
    java为什么要定义接口等相关解释
    SpringMVC的注解方式
    MyBatis映射
    hibernate、JDBC 实现 oracle ID 的自动增加 功能
    SSH框架的JSP网站添加数据为什么没反应
    又考完一科 又过完一年
    一个招标书文件的需求分析
    《需求分析》读后感之二
  • 原文地址:https://www.cnblogs.com/hejunhong/p/11312767.html
Copyright © 2011-2022 走看看