推荐系统

此系列笔记来源于

Coursera上吴恩达老师的机器学习课程


推荐系统

基于内容的推荐算法

image-20220526205705286

上图是一个 四位用户 对 五部电影的打分情况 加上 各电影的特征值

image-20220526210023459

对于每个电影的特征值 x(i)我们还要加上特征的截距项 x0(i)

x(1)=[10.90]

接下来要用线性回归模型来构建一个推荐系统算法,我们对每个用户都训练一个线性回归模型。

image-20220526210144516

其中 i:r(i,j) 表示我们只计算那些用户 j 评过分的电影。在一般的线性回归模型中,误差项和正则项应该都是乘以 12m,在这里我们将 m 去掉,因为这并不影响我们最小化代价函数。并且我们不对方差项θ0进行正则化处理。

image-20220526210503196

如果用梯度下降法求解,更新公式为:(偏导数部分已计算)

image-20220526210606820

协同过滤

之前我们是根据可用的特征,训练出了每位用户的参数,但相反地,如果我们拥有用户的参数,我们也可以来学习得出电影的特征。

image-20220527140332022

在这里,协同过滤算法便指的是 我们可以根据不同用户的评分,及参数,来学习电影的特征值,进而我们又可以用这些特征值去更好地预测用户的评分,就这样来不断的优化算法。

然而借由 x 预测 θ,再借由 θ 预测 x…… 这一过程我们可以高效地用一个式子来进行:

image-20220527203818224

步骤:

1、初始化 x(1),,x(nm),θ(1),,θ(nm)为一些随机的小值

2、使用梯度下降算法最小化代价函数

image-20220527210047079

3、训练完算法后,我们便可以预测(θ(j))Tx(i)为用户 j 给电影 i 的评分

向量化

我们先将 所有用户对所有电影的评分 放在一个矩阵中

记作 Y,Y(i,j)表示第j名用户对第i部电影的评分

例:

image-20220527211443298

我们的预测值:

image-20220527211454206

我们可以将电影的特征和用户的参数转化为一个大矩阵

image-20220527211225427

这被称为低秩矩阵分解,接着计算这个预测评分的矩阵 XΘT

另外在这里将不再需要 x0θ0

寻找相关内容

对于电影 i 有特征 x(i),电影 j 有特征 x(j)

当电影 i 和 电影 j 相关时,只需要 ||x(i)x(j)|| 较小即可

找到与电影 i 最相关的五部电影,就是找到||x(i)x(j)|| 最小的五部电影 j

均值归一化

还是刚才的例子,此时我们增加一名新的用户 Eve,她从未对电影评过分

img

如果我们按照之前的步骤,那么我们最后计算出来 Eve的参数矩阵一定是零矩阵,那我们以什么为依据为 Eve 推荐电影呢?

这里我们就要用到均值归一化。

我们先对已知的其他用户对各个电影的评分求一个平均值,再将这些评分减去各个电影对应的均值

img

μ 就是均值矩阵

接着我们对这个新得到的 Y 矩阵来训练算法,步骤和之前一样。

如果我们要用这个新训练出来的算法预测评分,我们只需要预测的评分加上均值即可,即 (θ(j))Tx(i)+μi,对于 Eve,新模型便会认为她给每部电影的评分都是平均分

posted @   Yra  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示