本章讲述了推荐系统相关的知识,比如基于内容的推荐算法、基于协同过滤的推荐算法以及实践中遇到的问题。
更多内容参考 机器学习&深度学习
推荐系统是机器学习在工业界应用最广泛的方向,很多电子商务类、咨询类的平台都在做个性化推荐的工作,通过机器学习的算法让自己的平台个性定制,千人千面。
比如我们拥有这样的数据集,其中nu代表用户的个数,nm代表物品的个数,r(i,j)为1代表用户j对物品i有评分,y(i,j)代表用户j对物品的分值。
基于内容的推荐
现在我们有了上面的数据集,即用户对电影的评分。还有电影的两个特征,浪漫指数和动作指数,假设我们针对每个用户都有一个θ,使得θTx能预测到一个分值——可以看做每个用户拥有一个线性回归的公式,通过这个公式,可以跟电影的两个特征(还有一个偏置项,固定为1)计算出分值。
其中r(i,j)是用户J对电影i是否有评分,y(i,j)是对应的分值,θ(j)代表用户j的参数向量,x(i)代表电影i的特征向量,因此对于用户j对电影i的评分就是(θ(j))T(x(i)),m(j)是用户j评分的电影数量。因此就有下面的公式:
协同过滤
前面的算法有一个特点就是需要有每个电影的特征向量,这个需要人为的来标注,如果你的数据没有这种现成的向量,而是有用户的偏好特征。比如知道一个用户对两个特征的喜好程度x,又知道他对这个电影的评分,那么就可以猜测出来这个电影对应的特征指数了。
比如上面的例子中如果用户的洗好向量是[0,5,0],对于第一个电影它的评分又是5,第五个电影评分时0,我们就可以猜到第一个电影的特征是[1,1,0],第五个电影是[1,0,1],这样就可以猜测出来每个电影的特征指数了。
总结来说,如果有电影的特征向量,就可以猜测出来用户对电影的评分;如果有用户的特征偏好,也可以猜测出来电影的特征指数。还有一种简单的方式就是随机给定θ,然后训练得出x,再通过x训练得出θ——这就是矩阵分解的意思啊!
这里讲到了通过评分矩阵可以计算相似物品,其实这也是物品协同过滤的核心:
有一个实践的小技巧,如果用户对任何的物品都没有评分,那么可以先给他初始化成均值(我们在做推荐系统的时候,这种用户一般都不会用协同过滤来做推荐)