12.2. 基于内容的推荐算法·内容的特征
本文最后更新于 2024年1月27日 下午
基于内容的推荐算法·内容的特征
系统参数
沿着电影推荐的例子,在上一节中提到过内容推荐系统的相关参数:
- \(n_u\):用户的数量。
- \(n_m\):电影的数量。
- \(r(i,j)\):标记函数,如果\(r(i,j)=1\)则表示第\(j\)个用户已经对第\(i\)部电影进行了评分。
- \(y^{(i,j)}\):评分,表示用户\(i\)对电影\(j\)的评分。当且仅当\(r(i,j)=1\)时\(y^{(i,j)}\)有值
现在设出电影的特征,假设每一部电影都有两个特征:爱情度\(x_1\)和动作度\(x_2\)分别表示某一部电影内容包含爱情片和动作片的程度,以0表示最低,1表示最高。(例如《泰坦尼克号》:\(x_1=0.9\),\(x_2=0.001\)),再加入一个截距特征\(x_0=1\)。那么每一部电影的特征向量\(x^{(i)}\)都由上述的三个特征值组成。
寻找用户的取向
对于评分的预测,可以看成是一个线性回归问题。规定用户\(j\)的参数向量\(θ^{(j)}∈ R^{n+1}\),\(n\)表示特征的数量(不包括\(x_0\))。对每一个用户都应用线性回归,用户\(j\)对于电影\(i\)的评分的预测值可以表示为:
\[y^{(i,j)}_{pre}=(θ^{(j)})^Tx^{(j)}\]
代价函数
如果用\(m^{(j)}\)表示第\(j\)个用户评分电影的数量,学习\(θ^{(j)}\)的过程就是一个基本的线性回归的代价函数:
\[J(θ)=\frac{1}{2m^{(j)}}∑_{i:r(i,j)=1}((θ^{(j)})^Tx^{(j)}-y^{(i,j)})^2+\frac{λ}{2m^{(j)}}∑_{k=1}^n(θ_k^{(j)})^2\]
由于\(m^{(j)}\)对于表达式中求最小\(J(θ)\)时的\(θ^{(j)}\)无影响,则可以直接去掉:
\[J(θ)=\frac{1}{2}∑_{i:r(i,j)=1}((θ^{(j)})^Tx^{(j)}-y^{(i,j)})^2+\frac{λ}{2}∑_{k=1}^n(θ_k^{(j)})^2\]
最小化代价函数即可得到最优的\(θ^{(j)}\)。
如果要找到所有用户的参数向量,则根据多元线性回归公式可以得到代价函数:
\[J(θ)=\frac{1}{2}∑_{j=1}^{n_u}∑_{i:r(i,j)=1}((θ^{(j)})^Tx^{(j)}-y^{(i,j)})^2+\frac{λ}{2}∑_{j=1}^{n_u}∑_{k=1}^n(θ_k^{(j)})^2\]
同样地,最小化的方式可以采用梯度下降算法来找到\(J(θ)\)的最小值。
这种基于内容的特征来预测用户评分的算法称为基于内容的推荐算法。
寻找内容的特征
还是之前的电影推荐的例子,对于很多电影,很难以特征向量的方式来量化“爱情片”或者是“动作片”的程度,也很难获取全部的特征。
换一种思路,假设模型中每个用户的参数向量\(θ^{(i)}\)是已知的(可以看做是每个用户对于电影类型的倾向是已知的),那么就能够反推出每一部电影的“动作度”和“爱情度”:比如如果一部电影倾向于爱情片的用户给电影的评分普遍高,那么可以反推出这个电影大概率是一个爱情片。
用这种思路进行数学建模:即求得\(x^{(i)}\)使得方程:
\[\begin{cases}
(θ^{(1)})^Tx^{(j)}=r(1,i) \\
(θ^{(2)})^Tx^{(j)}=r(2,i) \\
...\\
(θ^{(n_u)})^Tx^{(j)}=r(n_u,i) \\
\end{cases}\] 成立。
代价函数
对于已知的\(θ^{(1)}...θ^{(n_u)}\),为了学习电影\(i\)的特征向量\(x^{(i)}\),应用线性回归模型:
\[J(x^{()i})=\frac{1}{2}∑_{i:r(i,j)=1}((θ^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{λ}{2}∑_{k=1}^n(x_k^{(i)})^2\]
找到使得代价函数\(J(θ)\)最小化的\(x^{(i)}\)。
应用多元线性回归模型的代价函数公式:
\[J(x^{(j)})=\frac{1}{2}∑_{j=1}^{n_m}∑_{i:r(i,j)=1}((θ^{(i)})^Tx^{(i)}-y^{(i,j)})^2+\frac{λ}{2}∑_{j=1}^{n_m}∑_{k=1}^n(x_k^{(i)})^2\]
就能够得到所有电影的特征向量。