推荐算法大体分为3类:基于系统过滤的推荐、基于内容的推荐、混合推荐

1.基于协同过滤的推荐系统(Collaborative Filtering)

使用行为数据,利用集体智慧来推荐。属于有监督学习。基于用户的协同过滤(找和你兴趣相似的人所喜欢的东西)和基于物品的协同过滤(都喜欢这个东西的人喜欢的其他东西)

基于数据统计(记忆)的CF(Neighborhood-Based)

(1)基于用户的协同过滤:

步骤一:搜索最相似的用户

相似度的计算方法很多:

I Jaccard相似度:实际上就是 交集/并集

1
sim(A,B)=|A∩B|/|A∪B|

缺点是没有考虑评分,因为只用到了评分项目是什么

II 余弦相似度: 给出的值为-1到1之间

kAXQCs.png

余弦相似度

1
sim(A,B)=cos(A,B);

缺点是认为缺失值为0

III 皮尔逊相关系数:缺失值是平均值。给出的值为-1到1之间

kAPJ6X.png

皮尔逊相关系数

有的用户对于喜欢的打的值普遍偏高或者偏低,这种计算方法可以得到较为客观的结果。

步骤二:计算用户与新物品之间的相似度,也可以理解为预测函数

相似度的计算方法很多:

I 直接求平均

假设A与B、C相似,使用二者已评值相加然后/2求值

II 加权平均

利用上一步求出得余弦相似度,加权求得最终结果。假设B与A余弦相似度为0.38,评分为3,C与A余弦相似度为0.32,评分为5。则加权平均为(3x0.38+0.32x5) / (0.38+0.32)

计算完成之后,根据TOP-N排序得到得就是推荐列表。

基于模型(参数学习)的CF(Model-Based)

相关文章
评论
分享
  • Windows下neo4j的安装

    neo4j是一个高性能的NOSQL图形数据库,他将结构化数据存储在网络上而不是表中。他是一个嵌入式的、基于磁盘的、具备完全的事物特性的Java持久化引擎,neo4j也可看做是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。——百度...

    Windows下neo4j的安装
  • java实现类FTP程序

    继承程序设计实验,实验说明如图所示: 集成程序设计实验 TCP实现首先说明下基于TCP实现的功能: (1)能够实现多用户的同时连接 (2)用户执行成功的命令会在其他用户终端上显式说明 (3)当前用户数以及在线情况会在服务端实时显...

    java实现类FTP程序
  • Java中的流

    流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入输出都是以流的方式进行。设备可以是文件、网络、内存等。 I/O字节流InputStream字节输入流OutputStream字节输出流用于以字节的形式读取和写入数...

    Java中的流
  • eclipse使用

    Eclipse是一个开放源代码的、基于Java的可拓展开发平台。 常用快捷键 快捷键 作用 alt+/ 代码快速补全 ctrl+1 快速修复 ctrl+shift+f 代码格式化 ctrl+d 删除一行代码 ...

    eclipse使用
  • Python网络编程

    网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。 它的含义是使用套接字来达到进程间的通信。套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。 套接字Socket=(IP地址:端口号) 端口号是...

    Python网络编程
  • Centos安装

    虚拟机下载及安装1.进入VMware官网,转到下载页面 https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing/vmware_workstati...

    Centos安装
  • JavaEE开发准备

    个人电脑硬件配置: Windows 10 64位家庭中文版 8G运行内存 Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 1.Java JDK安装及配置(1)下载和安装首先进入oracle网站中Ja...

    JavaEE开发准备
  • Python进阶学习

    假期补习补习Python,防止以后用到炸锅。 闭包在Python语言中,一切皆对象。 闭包:一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。 闭包 = 函数 + 环境变量 123456789101...

    Python进阶学习
  • dart中HTTP请求的处理

    dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等… ,最重要的是国人开发,牛皮。 (1)添加dio库 找到项目中的pu...

    dart中HTTP请求的处理
  • dart底部导航栏的简单编写

    底部导航栏目前在手机应用中非常常见,可见其对于软件设计来说非常的有必要和重要。下面简单总结使用flutter和dart如何实现底部导航栏的制作。 首先值得注意的是底部导航栏为动态的组件,所以继承的话应该是StatefulWidget类...

    dart底部导航栏的简单编写
Please check the comment setting in config.yml of hexo-theme-Annie!