向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤

目录

一.特征&成本函数

二.协同过滤算法

三.二进制标签

四.均值归一化

五.协同过滤TensorFlow实现

六.寻找相关特征


一.特征&成本函数

特征选择:

n_u表示用户数,n_m表示电影数,n表示特征数,评分中的?代表没看过,0代表评价是0颗星(相当于分),5代表5颗星,其他依次类推

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第1张图片

左侧是电影名,上侧是用户名,然后右下侧是用户给电影的评分,最右侧是每个电影的特征(是的,特征也有评分,比如romance=0.1代表有一点小浪漫,romance=0.99代表非常浪漫,等于0就是和浪漫不沾边,即浪漫的程度)

成本函数:

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第2张图片

上图的一些解释:

r(i,j)是用户j是否给电影i进行了评分(1代表评了,0代表没评)

y^(i,j)代表用户j给电影i的评分是多少

m^(j)代表甩户j评分的电影数量

因为m^(j)只是一个常量,有没有无所谓,所以可以直接拿掉,如下图:

然后让我们看看总的成本函数如何计算,其实就是把所有用户的成本累加起来

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第3张图片

二.协同过滤算法

 这里假设给定参数w和b,和之前的线性回归恰恰相反,咱们之前是给定x,需要建立模型来推导w和,但是咱们是假设有了w和b,建立模型来推x,也就是如下图所示,x_1和x_2都是未知的。

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第4张图片

然后还是之前的成本函数,但是这个成本函数是关于哪个变量的成本函数就发生了变动,现在是关于x^(1)~x^(n_m)的成本函数。

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第5张图片

协同过滤:

其实咱们上面写的那俩成本函数都是一个东西(我指的是格式),所以咱们下面把这两个成本函数放到一起构成协同过滤,即此时的成本函数J就是关于w,b,x的函数了

最小化成本函数:

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第6张图片

三.二进制标签

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第7张图片

上图用了二进制标签,比如0代表不喜欢(没收藏),1代表喜欢(收藏)

下面是一些示例:

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第8张图片

其实二进制标签就和咱们之前学过的二进制分类差不多,看下面的成本函数和激活函数就明白了

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第9张图片

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第10张图片

四.均值归一化

让我们来看下面的用户评分数据:

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第11张图片

如果我们新增一个用户 Eve,并且 Eve 没有为任何电影评分,那么我们以什么为依据为Eve推荐电影呢?

我们首先需要对结果矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第12张图片

然后我们利用这个新的Y矩阵来训练算法。 如果我们要用新训练出的算法来预测评分,则需要将平均值重新加回去(为了让预测值不是一个负数),即w^(j)*x^(i)+b^(j)+μ_i,对于Eve,这样训练完预测时我们的新模型会认为用户五最初给每部电影的评分都是该电影的平均分,而不至于因为用户五没看过这几部电影就会把这五部电影都评0分,所以预测更加合理了,并且均值归一化可以让我们的程序运行更快。

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第13张图片

咱们上面的例子是均值归一化了行,这适用于存在某些用户没怎么对电影评过分数的情况,因为这可以让系统认为这个用户对电影的评分和其他用户对次电影的评分的均值差不多;那么咱们现在如果遇到新出了一部电影,所以还没有多少用户给这部电影评分的情况呢,这时候对列进行均值归一化更加合适,那么系统就会认为用户会给这部电影的打分是这个用户对自己已经打过分的电影的评分的均值。

五.协同过滤TensorFlow实现

直接用课后代码去练习吧。

六.寻找相关特征

一个生活中的例子就是你看一部电影时,系统可能会给你推荐其他相关(相似)的电影,或者购物时你浏览一个商品时,淘宝会给你推荐相似的物品

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第14张图片

 协同过滤的一些缺点:

few代表少,几乎没有,表否定;a few代表一些,表肯定

向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤_第15张图片


到此为止,我的机器学习的入门就告一段落了(跟着吴恩达老师的课程学习的,感谢吴佬!),其实后面还有推荐系统的基于内容过滤的算法和强化学习部分,但是推荐系统和强化学习对于我的研究方向来说,可能用不太到,所以就暂且搁置吧,若是日后能用到再回来学习!

下一个阶段就是跟着吴佬的深度学习课程开启新的旅程了,加油!

你可能感兴趣的:(#,机器学习,推荐系统,协同过滤算法,均值归一化,二进制标签)