2019独角兽企业重金招聘Python工程师标准>>>

首先 我们来讲讲 余弦 ,如果两个向量 越相识 那么 他们的余弦 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

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

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

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

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

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

转载于:https://my.oschina.net/yilian/blog/671106

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

  1. python与excel做数据可视化-用Python进行数据可视化的10种方法

    原标题:用Python进行数据可视化的10种方法 2015-11-19 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载&quo ...

  2. python预处理标准化_tensorflow预处理:数据标准化的几种方法

    tensorflow预处理:数据标准化的几种方法 发布时间:2018-08-09 19:39, 浏览次数:1774 , 标签: tensorflow 数据归一化问题是数据挖掘中特征向量表达时的重要问题 ...

  3. WPF中在XAML中实现数据类型转换的两种方法

    WPF中在XAML中实现数据类型转换的两种方法 原文:WPF中在XAML中实现数据类型转换的两种方法 熟悉数据绑定的朋友都知道,当我们在Model中获取一个对象的数据,常常需要对其进行数据转换后显示在 ...

  4. 数据增加的两种方法(二)

    数据增加的两种方法(二) 开发工具与关键技术:SQL Server 2014.数据增加的两种方法(二) 作者:袁何恩 撰写时间:2019年7月26日 今天,我要和大家分享的技术是新增数据的两种方法. ...

  5. Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize

    Python 数据降噪处理的四种方法--均值滤波.小波变换.奇异值分解.改变binSize github主页:https://github.com/Taot-chen 一.均值滤波 1)算法思想 给定 ...

  6. 用于处理机器学习大数据文件的7种方法

    机器学习数据文件太大而不能装入内存数据集是很常见的. 这会导致以下问题: 如何加载多个G的数据文件? 当我尝试运行我的数据集时算法崩溃;我该怎么办? 您能帮助纠正内存不足的错误吗? 在这篇文章中,我想 ...

  7. 小程序页面之间数据传递的五种方法

    小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...

  8. 数据可视化系列(一):Matplotlib初相识

    前言 期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈 这次我主要目的是最近要写篇论文,也正好为以后建模画图打捞基础~ 大家可以多看看官方教程: 中文官方网站:http ...

  9. 「构建企业级推荐系统系列」嵌入方法在推荐系统中的应用

    点击上方"数据与智能","星标或置顶公众号" 第一时间获取好内容 作者 | gongyouliu 编辑 | auroral-L 作者在<矩阵分解推荐算法& ...

最新文章

  1. java接收的文件转换成临时文件_Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream...
  2. js小笔记 -- let const的理解
  3. Linux之部署虚拟环境、安装系统
  4. CSS图片水平垂直居中
  5. 远程桌面与本计算机共享文件,如何开启远程计算机共享目录
  6. php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc
  7. 【LeetCode】【HOT】206. 反转链表(迭代/递归)
  8. cmake与ninja构建编译(二)
  9. python--django基础篇(创建项目,模型类,迁移,测试数据库操作)
  10. OpenCV C++案例实战十《车牌号识别》
  11. 文字栅格化剪切蒙版——创建文字遮罩效果的两种方法——梦幻游乐园
  12. C语言使用文件指针时遇到的位置问题
  13. 《别做正常的傻瓜》的一些读书心得
  14. 梯形公式预测校正matlab_鲁棒预测控制(Robust MPC)
  15. Java用POI导出Excel合并单元格、字体、居中样式
  16. Win11还原Win10开始菜单及任务栏工具[Win7勿入]
  17. java 吸血鬼数字(四位数)
  18. 计算机研究生就业方向之考编
  19. https小灰锁(带黄色三角)如何变成安全的小绿锁
  20. WF2011 Chips Challenge

热门文章

  1. java 方法 时间_Java 方法
  2. java冒泡怎么写_java 冒泡 又一种写法
  3. in function ‘int main()’_FIND_IN_SET 及IN 处理逗号间隔的字符串参数
  4. 图像的像素原点_超火的机器视觉OpenCVSharp学习笔记3——图像形态学处理
  5. 添加七牛云存储_七牛云存储如何正确设置流量带宽告警配置(阈值告警)?
  6. linux mq脚本,Linux自动化命令工具expect
  7. php打开文件对话框,JS打开选择本地文件的对话框
  8. 香港科技大学计算机专业国内就业6,香港科技大学就业好吗?
  9. 慧林系统多服务器授权,慧林虚拟主机管理系统
  10. envi矢量图层外面有蓝色边框_蓝白渐层英短猫多少钱一只,美短银渐层大概多少钱...