数据推荐系统系列 8种方法之一 CosSim余弦相识性方式

                   首先 我们来讲讲 余弦 ,如果两个向量 越相识 那么 他们的余弦 A*B的内积 除掉 A B的积 那么 余弦的夹角越小 也就趋近于1 也就是说 如果两个向量的余弦 越小 。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

                下面我们来分析一下 推荐系统的数据 

          首先对于User-CF 方式    

           对于每一条记录来说 

            为 userid itemi  rating 

            也就说所 如果 把 userid 作为要进行推荐判断的用户根据,那么 其他的列 itemid rating 评分 列 便形成的每一条每一条的向量 

          比如 id 为1  的 (item rating) 向量 为 (1,5)  id为2 的(item1/rating,item2/rating) 向量为 (1,,3)

       那么 计算id 1 2 的向量 的余弦相识性就可以知道 id 为1 与 2 多么相识了 ,这样 整个推荐系统 就转变成 一个 id 的向量 找到一些跟这个向量 相识的一些向量的问题, 记住本章节 先讲解 User-CF 方式 怎么使用余弦定理来计算,其实Item-CF也是 可以使用余弦定理来计算的,这个放到 下一讲 来讲解。

        首先 得到 每一行的 向量 然后对这些向量 进行LSH 敏感hash索引,然后每一个问题 其实转变成 一个向量 去 LSH索引里面搜索相识的过程。

       至于LSH 怎么实现 我前面文章讲过,random project   这里不在叙述了 ,这里讲一下怎么实际使用。

          大体 分作 2个 过程 ,1 ,是索引 过程 2,搜索过程

        

          LSH过程 计算出相识性矩阵 ,并写入Hbase 中索引起来 ,

         搜索过程 通过LSH 进行搜索边界问题。

      

     比如 对于 user-cf LSH索引的向量 就是item1 item....  rating 的评分向量 

     对于item-cf 就是 根据用户打分的数目 算出的 比重的的评分向量 

     对于 LSH 知道的同学 ,可以把我博客另一篇 改成spark 运行就可以了 一样的。不过 

网上已经有人做好了 ,跟我讲的另一篇文章 方式是一抹一样的,已经帮你在spark上实现好了。

   https://github.com/soundcloud/cosine-lsh-join-spark

数据推荐系统系列 8种方法之一 CosSim余弦相识性方式_第1张图片

         得到的相识性矩阵把它存储到Hbase中 ,每次 新来的矩阵 进行random project 得到一个integer 的id 

   然后通过这个id 来进行Hbase 的查找 ,比如 hbase 存放的是 1 ,(2,1) ,(3,0.87) 

存放着每一个对于的相识性的范围 。 查找时候只需要进行直接hbase get方式就可以了。 不需要每次都重新生成LSH索引

        然后就是一个搜索的过程。没什么难度。所以可以大家可以参考 我博客 另一篇余弦LSH 的 方式来 进行索引 来查找搜索的过程。源代码 在 后面 接着讲item-cf 时候 进行剖析 ,贴出。

        User-CF 的余弦定理 本质来说没什么难度。下一章 我们讲一下 余弦定理在item-CF中的使用。

你可能感兴趣的:(spark,推荐系统,余弦定理,user=cf)