”基于用户的协同过滤算法“是推荐算法的一种,这类算法强调的是:把和你有相似爱好的其他的用户的物品推荐给你。

  要实现该推荐算法,就需要计算和你有交集的用户,这就要用到物品到用户的反查表

  先举个例子说明下反查表:甲喜欢的物品有:A、B、C;乙喜欢的物品有:B、E、F;丙喜欢的物品有:A、J、K;而你喜欢的物品是:A、J、M。反查表就是喜欢A物品的有你、甲、丙,喜欢J物品的有你、丙,喜欢M物品的只有,这就是和你喜欢的物品有联系的用户。有了这个反查表,我们就可以看出和你有关系的用户只有甲和丙,乙用户和你没有任何的交集。于是,接下来我们只需要再计算甲、丙和你的相似性,找出和你最相邻的用户,通过这个用户来给你推荐物品。

  因此,我在实现基于用户的协同过滤算法的第一步的关键是:通过SQL自连接,能够反查到和你喜欢的物品有联系的用户。(自连接的定义By百度百科:自连接(self join)是SQL语句中经常要用到的连接方式,使用自连接可以将自身表的一个镜像当做另一个表来对待,从而能够得到一些特殊的数据。)

  我所建的评分信息表拥有的字段和数据(删减版)如下图所示:

图1.评分信息表

其中,字段u_ID代表用户ID,f_ID代表视频ID,两者都是另外两张表的主键,score代表评分值。

  我所使用的自连接语句为(原语句放置于存储过程中):

SELECT DISTINCT B.u_ID
FROM tb_interest A,tb_interest B
WHERE A.f_ID = B.f_ID AND A.u_ID = 2 AND B.u_ID<>2;

  执行的结果截图如下:

图2.自连接语句执行结果

  由结果我们可以知道,和用户2有关联的用户为4、5,即用户2评分过的视频,用户4和用户5也评分过。这样,我们利用SQL自连接语句,通过一句简单的SQL语句,就能够反查到了所要的信息。

http://www.cnblogs.com/HellerTse/archive/2014/05/02/3703801.html

SQL自连接(源于推荐算法中的反查表问题)的更多相关文章

  1. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法

    操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...

  2. 将 Book-Crossing Dataset 书籍推荐算法中 CVS 格式测试数据集导入到MySQL数据库

    本文内容 最近看<写给程序员的数据挖掘指南>,研究推荐算法,书中的测试数据集是 Book-Crossing Dataset 提供的亚马逊用户对书籍评分的真实数据.推荐大家看本书,写得不错, ...

  3. Attention机制在深度学习推荐算法中的应用(转载)

    AFM:Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Ne ...

  4. 机器学习算法 Python&R 速查表

    sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  5. css字体中英速查表

    例1(小米米官网):font-family: "Arial","Microsoft YaHei","黑体","宋体",s ...

  6. 机器学习算法 Python & R速查表

  7. PostgreSQL中,如何查表属于哪个数据库

    db1=# \x Expanded display is on. db1=# SELECT * FROM information_schema.tables WHERE table_name='tab ...

  8. HAWQ + MADlib 玩转数据挖掘之(五)——奇异值分解实现推荐算法

    一.奇异值分解简介 奇异值分解简称SVD(singular value decomposition),可以理解为:将一个比较复杂的矩阵用更小更简单的三个子矩阵的相乘来表示,这三个小矩阵描述了大矩阵重要 ...

  9. SimRank协同过滤推荐算法

    在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的 ...

随机推荐

  1. Convert String to Long

    问题: Given a string, write a routine that converts the string to a long, without using the built in f ...

  2. win8\win server 2012添加【中文--美式键盘】

    1. 修改注册表 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERKeyboard Layout] [HKEY_CURRENT_USERK ...

  3. Delphi XE5 附破解补丁

    Embarcadero RAD Studio XE5 Version 19.0.13476.4176: http://altd.embarcadero.com/download/radstudio/x ...

  4. MVC4,4月22日,Ninject的另外注入方式。

    学习了Ninject另外两种绑定注入的方式: 1.根据属性绑定      先在特殊的实现借口类中定义属性 使用 2.根据构造函数方式绑定     学习了条件绑定方式(conditional bindi ...

  5. Big Data Security Part One: Introducing PacketPig

    Series Introduction Packetloop CTO Michael Baker (@cloudjunky) made a big splash when he presented ‘ ...

  6. PCB设计备忘录

    在PCB设计过程中,常常有很多细节只有在实践中才能体会到其重要性,本人记性不好,索性把相关的注意点记录下来,也顺便希望能够给读者朋友们一些帮助. 接插件以及连接器比较常用的针脚之间间距有2.54mm/ ...

  7. Android TextView背景颜色与背景图片设置

    Android TextView 背景颜色与背景图片设置,android textview 控件,android textview 背景, android textview 图片,android te ...

  8. 如何实现室内Wi-Fi无线终端的精准定位

    如何实现室内Wi-Fi无线终端的精准定位 如何实现室内Wi-Fi无线终端的精准定位 随着商圈020的兴起,室内定位技术的也如百花争艳般不断涌现.但随着室内Wi-Fi网的架设普及,基于Wi-Fi定位技术 ...

  9. 查询Linux系统最后重启时间的三个方法

    对于在Linux平台开发或运维的工程师来说,经常需要查询系统最后一次重启的时间,这篇文章将给大家介绍三种方法: 方法一:last命令 # last rebootreboot system boot 2 ...

  10. ORACLE表空间

    在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示,一个数据库由对应 ...