推荐系统介绍
什么是推荐系统?
一句话概括,推荐给你感兴趣的视频,商品等,让你入迷。
推荐系统的应用
个性化推荐,优化用户体验,海量数据中快速定位,精准营销。抖音,京东,小红书等这些例子大多数人都耳闻能详。举几个例子
- 抖音:推荐给你喜欢的视频,你就会挪不开眼睛,一看半天就下去了,这样抖音就赚到了流量,在当前这个社会,流量就是钱。
- 京东:当你买了一个键盘后,肯定需要鼠标,鼠标垫啥的,推荐给你,你买的概率会很大,京东也就多挣一份钱呗。
为什么需要深度学习
- 宏观:传统人工特征工程难度较大,深度学习可以把特征做的更好
- 本质:end2end的架构让模型训练起来更容易,项目做起来更简单!
- 深度学习更适合NLP与图像数据,符合当下用户行为数据
- 但凡看到深度学习,第一感觉应该是这件事做起来没那么麻烦了
协同过滤与矩阵分解
矩阵分解中的显式与隐式特征
显式特征:可以直观看到的数据
隐式特征:通过某些操作行为产生的数据
用户行为 | 类型 | 特征 | 作用 |
---|---|---|---|
评分 | 显式 | 整数量化的偏好,可能的取值是 [0,n];一般取值为 5 或者是 10 | 通过用户对物品的评分,可以精确的得到用户的偏好 |
投票 | 显式 | 布尔量化的偏好,取值是 0 或 1 | 通过用户对物品的投票,可以较精确的得到用户的偏好 |
转发 | 显式 | 布尔量化的偏好,取值是 0 或 1 | 而过用户对物品的投票,可以精确的得到用户的偏好 |
保存书签 | 显示 | 布尔量化的偏好,取值是 0 或 1 | 通过用户对物品的投票,可以精确的得到用户的偏好 |
标记标签 | 显示 | 一些单词,需要对单词进行分析,得到偏好 | 通过分析用户的标签,可以得到用户对项目的理解,同时可以分析出用户的情感: 喜欢还是讨厌 |
评论 | 显示 | 一段文字,需要进行文本分析,得到偏好 | 通过分析用户的评论,可以得到用户的情感:喜欢还是讨厌 |
点击流 | 隐式 | 一组用户的点击,用户对物品感兴趣,需要进行组分析,得到偏好 | 用户的点击一定程度上反映了用户的注意力,所以它也可以从一定程度上反映用户的喜好. |
页面停留时间 | 隐式 | 一组时间信息,噪音大,需要进行去噪分析,得到偏好 | 用户的页面停留时间一定程度上反映了用户的注意力和喜好,但噪音偏大,不好利用。 |
购买 | 隐式 | 布尔量化的偏好,取值是 0 或 1 | 用户的购买是很明确的说明这个项目它感兴趣。 |
基于用户的协同过滤
- 首先找到相似用户(相似度计算)
- 属性特征,行为特征等都可以当做计算输入
- User1喜欢1,2,3,4;User3当前喜欢2,3
- 如果这俩用户计算后相似度较高,就可以把1,4推给User3
存在的问题:数据稀疏,计算复杂度,人是善变的,冷启动问题,稀疏(通常商品非常多,用户购买的只是其中极小一部分),计算(计算相似度矩阵是个大活,用户和商品都比较多的时候就难了),冷启动(新用户来了怎么办?)
基于物品的协同过滤
- 还是要先得到用户与商品的交互数据
- 此时发现商品1和3经常在一起出现
- 那这俩商品之间肯定有鬼。。。(相关度)
- User3目前只买了商品2和3,此时可以推给他商品1
## 矩阵分解
- user-item矩阵分解
- 得到user,item两个矩阵
- 原矩阵:m*n(用户,音乐)
- user(mk),item(kn)
目标函数
- 跟回归方程很像: min X , Y ∑ r u i ≠ 0 ( r u i − x u T y i ) 2 + λ ( ∑ u ) ∣ ∣ x u ∣ ∣ 2 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 2 ) \min\limits_{X,Y}\sum\limits_{r_{ui}\neq0}(r_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u)||x_u||_2^2+\sum\limits_i||y_i||_2^2) X,Yminrui=0∑(rui−xuTyi)2+λ(u∑)∣∣xu∣∣22+i∑∣∣yi∣∣22)
- 用户矩阵 X = [ x 1 , x 2 , … … , x N ] X=[x_1,x_2,……,x_N] X=[x1,x2,……,xN]: 商品矩阵: Y = [ y 1 , y 2 , … … , y M ] Y=[y_1,y_2,……,y_M] Y=[y1,y2,……,yM]
- N为用户个数,M为商品个数,还需注意隐向量维度
- 其中还额外引入了正则化惩罚项
后续的改进
- 如果用户就特别刁钻,评分都会很低;如果商品本身就很好,评分都较高
- 这里还需要注意的就是用户与商品的本身属性信息,之前公式中木有涉及
- 在原公式中 min X , Y ∑ r u i ≠ 0 ( r u i − x u T y i ) 2 + λ ( ∑ u ) ∣ ∣ x u ∣ ∣ 2 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 2 ) \min\limits_{X,Y}\sum\limits_{r_{ui}\neq0}(r_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u)||x_u||_2^2+\sum\limits_i||y_i||_2^2) X,Yminrui=0∑(rui−xuTyi)2+λ(u∑)∣∣xu∣∣22+i∑∣∣yi∣∣22)分别加入用户与商品偏置项
- 例如bu表示用户偏置,bi表示商品偏置
隐式情况分析
- 用户-商品的评分矩阵做起来非常直接,但是哪有那么正好的事啊
- 通常收集的数据都是用户的行为:观看时间,点击次数等指标
- 这种数据该怎么求解呢?首先定义置信度: c u i = 1 + α r u i c_{ui}=1+\alpha r_{ui} cui=1+αrui
- 置信度默认为1,表示用户没有产生行为的商品;行为越多,置信度越大
- 重新定义评分: p u i = { 0 r u i = 0 1 r u i > 0 p_{ui}= \lbrace_{0\quad r_{ui}=0}^{1\quad r_{ui}>0} pui={0rui=01rui>0 (有行为的则评分为1)
- 新的优化目标: G ( x ∗ , y ∗ ) = ( ∑ u , i c u i ( p u i − x u T y i ) 2 + λ ( ∑ u ∣ ∣ x u ∣ ∣ 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 ) G(x_*,y_*)=({\sum\limits_{u,i}}c_{ui}(p_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u||x_u||^2+\sum\limits_i||y_i||^2) G(x∗,y∗)=(u,i∑cui(pui−xuTyi)2+λ(u∑∣∣xu∣∣2+i∑∣∣yi∣∣2)
- 总结起来就是置信度越大的你得预测的越准,要不损失就大了
- 求解过程依旧交替使用最小二乘法,固定Y优化X,再固定X优化Y
Embedding的作用
无处不在的Embedding,Ai的核心其实就是让计算机能更懂我!
NLP,CV领域做得太多啦,推荐中也不例外,Embedding做好啦一切都解决了!
音乐推荐系统实战
Code:链接: https://pan.baidu.com/s/1iq5FLpPIxsRrTEec2TV_Ug 提取码: 2xk5
–来自百度网盘超级会员v3的分享
更多代码 加微信 AI_xiaoao
回复题目【基于XXXX的XXXX系统设计】免费获取源代码
所有代码均可远程部署安装+代码调试讲解