Lec2 协同过滤_基于邻域| 学习笔记

简介: 快速学习 Lec2 协同过滤_基于邻域。

开发者学堂课程【高校精品课-北京大学 -推荐系统 :Lec2 协同过滤_基于邻域】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/122/detail/3919


Lec2 协同过滤_基于邻域

 

内容介绍:

一、经典系统

二、基本思想

三、算法分类

四、协同过滤的一般步骤

五、收集用户行为数据

 

一、经典系统

1、协同过滤是工业界也是学术界研究最多的算法,1992年,Tapestry 系统是公开的最早的应用 CF 进行信息过滤的系统,施乐公司为解决其 PaloAlto 研究中心内部的资讯过载问题,利用其他用户的显式反馈(标注是否有用),帮助用户过滤新闻组邮件。

1994年基于协同过滤CF的跨网络新闻推荐系统 GroupLens,由 MITT 和明尼苏达大学共同推出,根据相似用户对新闻的评分(1分~5分)预测目标用户对新闻的评分并做出推荐。

在系统框架中可以看出系统会记录每一位用户看完一跳新闻之后的评分,并根据评分给相应的用户进行推荐。其他不同领域的协同过滤系统,电影推荐 MovieLens、音乐推荐 Ringo、书籍( 商品)推荐 Amazon。虽然应用领域和产品各不相同,但方法的基本思想都一样。


二、基本思想

1、协同过滤(Collaborative Filtering, CF) :

利用集体智慧,借鉴相关人群的观点进行推荐,例如小明看哈利波特,

神奇动物在哪里,少年派三部电影,小刚看哈利波特和神奇动物在哪里两部电影,小红只看过龙猫,通过用户的行为,可以看出小明和小刚的兴趣更为相似,所以可以把小明喜欢看的少年派推荐给小刚。

2、基本假设:

(1)过去兴趣相似的用户在未来的兴趣也会相似,所以会把小明喜欢的少年派推荐给小刚,假设小刚也会喜欢这部电影。

(2)相似的用户会产生相似的(历史)行为数据。根据历史行为,判断两个用户是否相似。

 

三、算法分类

1、Top-N 推荐 vs. 评分预测

输入(输出) :隐式的 0-偏好 vs. 显式的评分

Top-N 推荐的输入是隐式的反馈,比如点击购买的行为,评分预测的输入是显示的评分,比如酒店评分,Top-N 推荐的输出预测的是用户推荐项目的相对偏好程度,评分预测一般是用户对酒店评分,

2、基于领域的方法 vs. 基于模型的方法

利用信息的角度不一样

利用局部(邻域)信息 VS .基于全局信息

在内存中存储(记忆)整个数据集 vs. 训练出抽象模型,在存储时只需要存储抽象模型函数即可。

基于领域的方法可以分为基于用户形成过滤,基于项目形成过滤,以及图扩散的是三个方法,基于模型的方法可以分为矩阵分解,关联规则,机器学习。

 

四、协同过滤的一般步骤

1、基于领域的协同过滤主要包括三步,第一个收集数据,第二步针对模型方法寻找领域,第三步是计算推荐结果。

2、基于模型系统的协同过滤也是三步,第一步和第三步相同,第二步把基于领域的,寻找领域变成训练模型。

3、收集数据

目标:收集能反应用户偏好的数据,例如隐式 Top-N 推荐中的点击购买,和显示返回中的评分行为。

4、寻找领域:相似的用户(或项目)

可以根据喜欢行为寻找相似的用户,或者相似的物品。

5、计算推荐结果:根据领域信息计算推荐结果,在例子中可以为用户 a 推荐物品 c,为用户 a 推荐物品 b。

 

五、收集用户行为数据

用户行为

类型

特征

作用

评分

显式

整数,取值[0, n]

精确的用户偏好

点击流

隐式

组用户点击

定程度上反映用户的注意力和喜好

页面停留时间

隐式

一组时间信息

定程度上反映用户的注意力和喜好

保存书签

隐式

布尔值,取值0或1

较精确的用户偏好

标记标签(Tag)

隐式

一些词语

可以分析出用户的情感和兴趣

购买

隐式

布尔值,取值0或1

明确的用户兴趣

显式反馈:用户主动地向系统表达其偏好,一股需要用户在消费完项目后进行额外反馈,会影响用户的体验。

隐式反馈:隐含用户对项目偏好的行为数据,是用户在探索或消费项目过程中正常操作。虽然质量不如显式反馈,收集比较容易,不会对用户的体验产生影响,一般更容易获取较大的隐式反馈数据。

示例

用户购买行为数据:

用户 a 购买过项目{b,d}

用户 B 购买过{a, b, c}

用户 C 购买过项目{a, b, d}

用户 D 购买过项目{a, e}

目标:

为用户 A 推荐项目,如何推荐,给用户A推荐哪些项目。

相关文章
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
328 1
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
315 1
|
传感器 移动开发 物联网
【Bluetooth开发】蓝牙开发入门
【Bluetooth开发】蓝牙开发入门
616 0
|
存储 安全 Java
Go Slice的底层实现原理深度解析
在Go语言的世界里,切片(Slice)是一种极其重要的数据结构,它以其灵活性和高效性在众多编程场景中扮演着核心角色。本文将深入探讨Go切片的底层实现原理,通过实例和源码分析,带你领略Go语言设计之美。
|
数据采集 人工智能 JSON
跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)
跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)【2月更文挑战第1天】
 跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)
|
边缘计算 物联网 5G
4G 网络跟 5G 的区别
4G 网络跟 5G 的区别
888 0
|
存储 小程序 编译器
C语言从入门到实战——数据在内存中的存储方式
数据在内存中的存储方式是以二进制形式存储的。计算机中的内存由一系列存储单元组成,每个存储单元都有一个唯一的地址,用于标识它在内存中的位置。计算机可以通过这些地址来定位并访问内存中的数据。 数据在内存中的存储方式取决于数据的类型。数值类型的数据(例如整数、浮点数等)以二进制形式存储,并根据类型的不同分配不同的存储空间。字符串和字符数据由ASCII码存储在内存中。数据结构(例如数组、结构体、链表等)的存储方式也取决于其类型和组织结构。 总之,数据在内存中以二进制形式存储,并根据其类型和组织方式分配不同的存储空间。
598 0
|
机器学习/深度学习 数据可视化 网络协议
【论文精读】ECCV2020 - 带有圆平滑标签的定向目标检测
【论文精读】ECCV2020 - 带有圆平滑标签的定向目标检测
|
数据可视化 Ubuntu 算法
量子程序设计基础 | 基于Python的量子程序设计
IBM量子程序开发套件的安装。
338 2