关于算法:MindSpore跟着小Mi一起机器学习吧推荐系统

42次阅读

共计 2046 个字符,预计需要花费 6 分钟才能阅读完成。

一周未见,甚是惦记,明天小 Mi 带大家学习举荐零碎(Recommender Systems)!举荐零碎是机器学习中一个很重要的利用,比方某易举荐的歌曲呀,某宝举荐的购物清单呀等等,既然应该这么宽泛,那就废话不多说,咱们开始吧~

1 定义
举荐零碎是个很有意思的问题,机器学习的学术会议上通常不太会关注举荐零碎问题,然而在咱们生存中却随处可见。

同时对机器学习来说,特色是很重要的,抉择的特色将对学习算法的性能有很大影响。因而,在机器学习中有一种大思维,针对一些问题,能够通过算法主动学习一套比拟好的特色,从而代替手动设计,其中举荐零碎就是类型设置的一个例子。

那么什么是举荐零碎问题呢?咱们从一个例子开始定义举荐零碎的问题。

倘若一个电影供应商有 5 部电影和 4 个用户,咱们要求用户为电影打分。

前三部电影是爱情片,后两部则是动作片,图中能够发现 Alice 和 Bob 仿佛更偏向与爱情片,而 Carol 和 Dave 仿佛更偏向与动作片,同时每个用户都并未给全副的电影都打过分。这时能够构建一个算法,预测每个人可能会给各自没看过的电影打多少分,并以此作为举荐的根据。

上面引入一些相干参数:

:用户数量;

:电影数量;

:如果用户给电影评过分,则;

:用户给电影的评分;

:用户评过分的电影总数。

2 特色与算法
在一个基于内容的举荐零碎算法中,对于用户心愿举荐的电影有一些数据,而这些数据更精确地说就是相干的特色。

假如每部电影都有两个特色,如代表电影的浪漫水平,代表电影的动作水平。

那么每部电影都有一个特征向量,如是第一部电影的特征向量:[0.9 0]。

基于这些特色来构建一个举荐零碎算法,采纳线性回归模型,咱们能够针对每一个用户都训练一个线性回归模型,如是第一个用户的模型参数。于是就有:

:用户的参数向量;

:电影的特征向量;

对于用户和电影,咱们预测评分为:;

代价函数

针对用户,该线性回归模型的代价为预测误差的平方和,加上正则化项:

其中示意只计算那些用户评过分的电影。在个别的线性回归模型中,误差项和正则项应该都是乘以,在这里的话咱们抉择将去掉,同时也不会对方差项进行正则化解决。

下面的代价函数只是针对一个用户的,为了学习所有用户,将所有用户的代价函数求和:

如果要用梯度降落法来求解最优解,计算代价函数的偏导数后失去梯度降落的更新公式为:

3 协同过滤
在基于内容的举荐零碎中,对于每一部电影,咱们都把握了可用的特色,应用这些特色训练出了每一个用户的参数。触类旁通,如果咱们领有用户的参数,那么其实也能够学习得出电影的特色,有没有?!

然而如果既没有用户的参数,也没有电影的特色,那么应该如何解决呢?不必放心,协同过滤算法闪亮退场~

优化指标将同时针对和进行,对代价函数求偏导数的后果如下:

注:在协同过滤算法中,通常不应用方差项,如果需要的话,算法会主动学得。协同过滤算法应用步骤如下:

1. 初始为一些随机小值

2. 应用梯度降落算法最小化代价函数

3. 在训练完算法后,预测为用户给电影的评分

通过这个学习过程取得的特色矩阵蕴含了无关电影的重要数据,能够用这些数据作为给用户举荐电影的根据。

例如,如果一位用户正在观看电影,寻找另一部电影,根据两部电影的特征向量之间的间隔大小,间隔越小,那么就越合乎该用户的品尝。

4 协同过滤算法
协同过滤优化指标:

给定,预计::

给定,预计,同时最小化和:

5 算法的向量化实现
依据五部电影的数据集,将这些用户的电影评分,进行分组并存到一个矩阵中。

因为数据集有五部电影和四位用户,那么这个矩阵 Y 就是一个 5 行 4 列的矩阵,同时蕴含了这些电影的用户评分数据:

推出评分:

找到相干影片:

后期小 Mi 曾经带大家对特征参数向量进行了学习,那么其实如何度量两部电影之间的相似性就很好解决啦。例如说:电影有一个特征向量,而另一部不同的电影,只有保障两部电影的特征向量之间的间隔和很小,那就能很无力地表明电影和电影在某种程度上有类似,至多在某种意义上,某些人喜爱电影,或者更有可能也对电影感兴趣。也就是说,当用户在看某部电影的时候,如果须要找出 5 部与电影十分类似的电影,为了能给用户举荐 5 部新电影,咱们须要做的是找出电影,在这些不同的电影中与咱们要找的电影的间隔最小,这样你就能给你的用户举荐几部不同的电影了。

通过这个办法,置信大家能够晓得,应该如何进行一个向量化的计算来对所有的用户和所有的电影进行评分计算,同时也能把握通过学习特征参数,来找到相干电影和产品的办法。

6 均值归一化
用户评分数据:

如果新增一个用户 Sky,并且 Sky 没有为任何电影评分,那么咱们以什么为根据为 Sky 举荐电影呢?

首先须要对矩阵 Y 进行均值归一化解决,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:

而后利用这个新的矩阵来训练算法,如果咱们要用新训练出的算法来预测评分,则须要将平均值从新加回去,预测,而对于用户 Sky,新模型会认为她给每部电影的评分都是该电影的平均分。

好啦,对于举荐零碎的学习就先到这咯~ 下周小 Mi 给大家安顿大规模机器学习!咱们,下周再见呦(挥手十分钟!)

正文完
 0