机器学习日记(13)

本文探讨了推荐系统在机器学习中的重要性,特别是特征选择和学习。介绍了基于内容的推荐系统,其中线性回归模型用于根据电影特征预测用户评分。协同过滤算法则同时学习用户参数和电影特征,解决无特征情况下的推荐问题。通过低秩矩阵分解实现向量化,可以找到相关产品并进行推荐。此外,还讨论了如何对评分数据进行均值归一化以处理新用户的情况。
摘要由CSDN通过智能技术生成

推荐系统(Recommender Systems)

问题形式化

推荐系统是个有趣的问题,在学术机器学习中因此,我们可以去参加一个学术机器学习会议,推荐系统问题实际上受到很少的关注,或者,至少在学术界它占了很小的份额。但是,如果你看正在发生的事情,许多有能力构建这些系统的科技企业,他们似乎在很多企业中占据很高的优先级。这是我为什么在这节课讨论它的原因之一。
我想讨论推荐系统地第二个原因是:对机器学习来说,特征是很重要的,你所选择的特征,将对你学习算法的性能有很大的影响。因此,在机器学习中有一种大思想,它针对一些问题,可能并不是所有的问题,而是一些问题,有算法可以为你自动学习一套好的特征,因此,不要试图手动设计、手写代码。有一些设置,你可以有一个算法,仅仅学习其使用的特征,推荐系统就是类型设置的一个例子。还有很多其它的,但是通过推荐系统,我们将领略一小部分特征学习的思想,至少,你将能够了解到这方面的一个例子,机器学习中的大思想也是这样。因此,让我们开始讨论推荐系统问题形式化。
我们从一个例子开始定义推荐系统的问题:
假使我们是一个电影供应商,我们有 5 部电影和 4 个用户,我们要求用户为电影打分。
在这里插入图片描述
前三部电影是爱情片,后两部则是动作片,我们可以看出 Alice 和 Bob 似乎更倾向与爱情片,而 Carol 和 Dave 似乎更倾向与动作片。并且没有一个用户给所有的电影都打过分。我们希望构建一个算法来预测他们每个人可能会给他们没看过的电影打多少分,并以此作为推荐的依据。
下面引入一些标记:
𝑛𝑢 代表用户的数量
𝑛𝑚 代表电影的数量
𝑟(𝑖,𝑗) 如果用户 𝑗 给电影 𝑖 评过分则 𝑟(𝑖,𝑗) = 1
𝑦(𝑖,𝑗) 代表用户 𝑗 给电影 𝑖 的评分
𝑚𝑗代表用户 𝑗 评过分的电影的总数

基于内容的推荐系统

在一个基于内容的推荐系统算法中,我们假设对于我们希望推荐的东西有一些数据,这些数据是有关这些东西的特征。
在我们的例子中,我们可以假设每部电影都有两个特征,如𝑥1代表电影的浪漫程度,𝑥2代表电影的动作程度。
在这里插入图片描述
则每部电影都有一个特征向量,如𝑥(1)是第一部电影的特征向量为[0.9 0]。下面我们要基于这些特征来构建一个推荐系统算法。 假设我们采用线性回归模型,我们可以针对每一个用户都训练一个线性回归模型,如𝜃(1)是第一个用户的模型的参数。 于是,我们有:
𝜃(𝑗)用户 𝑗 的参数向量
𝑥(𝑖)电影 𝑖 的特征向量
对于用户 𝑗 和电影 𝑖,我们预测评分为:(𝜃(𝑗))𝑇𝑥(𝑖)
代价函数针对用户 𝑗,该线性回归模型的代价为预测误差的平方和,加上正则化项:
在这里插入图片描述
其中 𝑖: 𝑟(𝑖,𝑗)表示我们只计算那些用户 𝑗 评过分的电影。在一般的线性回归模型中,误差项和正则项应该都是乘以1/2𝑚,在这里我们将𝑚去掉。并且我们不对方差项𝜃0进行正则化处理。
上面的代价函数只是针对一个用户的,为了学习所有用户,我们将所有用户的代价函数求和:
在这里插入图片描述
如果我们要用梯度下降法来求解最优解,我们计算代价函数的偏导数后得到梯度下降的更新公式为:
在这里插入图片描述

协同过滤(Collaborative Filtering)

在之前的基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,使用这些特征训练出了每一个用户的参数。相反地,如果我们拥有用户的参数,我们可以学习得出电影的特征。
在这里插入图片描述
但是如果我们既没有用户的参数,也没有电影的特征,这两种方法都不可行了。协同过滤算法可以同时学习这两者。
我们的优化目标便改为同时针对𝑥和𝜃进行:
在这里插入图片描述
对代价函数求偏导数的结果如下:
在这里插入图片描述
注:在协同过滤从算法中,我们通常不使用方差项,如果需要的话,算法会自动学得。
协同过滤算法使用步骤如下:

  1. 初始 𝑥(1), 𝑥(1), . . . 𝑥(𝑛𝑚), 𝜃(1), 𝜃(2), . . . , 𝜃(𝑛𝑢)为一些随机小值
  2. 使用梯度下降算法最小化代价函数
  3. 在训练完算法后,我们预测(𝜃(𝑗))𝑇𝑥(𝑖)为用户 𝑗 给电影 𝑖 的评分

通过这个学习过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读懂的,但是我们可以用这些数据作为给用户推荐电影的依据。例如,如果一位用户正在观看电影 𝑥(𝑖),我们可以寻找另一部电影𝑥(𝑗),依据两部电影的特征向量之间的距离∥𝑥(𝑖) − 𝑥(𝑗)∥的大小。

协同过滤算法(Collaborative Filtering Algorithm)

协同过滤优化目标:给定𝑥(1), . . . , 𝑥(𝑛𝑚),估计𝜃(1), . . . , 𝜃(𝑛𝑢):
在这里插入图片描述
给定𝜃(1), . . . , 𝜃(𝑛𝑢),估计𝑥(1), . . . , 𝑥(𝑛𝑚)
同时最小化𝑥(1), . . . , 𝑥(𝑛𝑚)和𝜃(1), . . . , 𝜃(𝑛𝑢)
在这里插入图片描述

向量化:低秩矩阵分解(Vectorization_ Low Rank Matrix Factorization)

在上面,我们谈到了协同过滤算法,讲到有关该算法的向量化实现,以及说说有关该算法可以做的其他事情。
举例子:
1.当给出一件产品时,你能否找到与之相关的其它产品。
2.一位用户最近看上一件产品,有没有其它相关的产品,你可以推荐给他。
我将要做的是:实现一种选择的方法,写出协同过滤算法的预测情况。
我们有关于五部电影的数据集,我将要做的是,将这些用户的电影评分,进行分组并存到一个矩阵中。
我们有五部电影,以及四位用户,那么 这个矩阵 𝑌 就是一个 5 行 4 列的矩阵,它将这些电影的用户评分数据都存在矩阵里:
在这里插入图片描述
在这里插入图片描述
推出评分:
在这里插入图片描述
找到相关影片:
在这里插入图片描述
现在既然你已经对特征参数向量进行了学习,那么我们就会有一个很方便的方法来度量两部电影之间的相似性。例如说:电影 𝑖 有一个特征向量𝑥(𝑖),你是否能找到一部不同的电影 𝑗,保证两部电影的特征向量之间的距离𝑥(𝑖)和𝑥(𝑗)很小,那就能很有力地表明电影𝑖和电影 𝑗 在某种程度上有相似,至少在某种意义上,某些人喜欢电影 𝑖,或许更有可能也对电影𝑗 感兴趣。总结一下,当用户在看某部电影 𝑖 的时候,如果你想找 5 部与电影非常相似的电影,为了能给用户推荐 5 部新电影,你需要做的是找出电影 𝑗,在这些不同的电影中与我们要找的电影 𝑖 的距离最小,这样你就能给你的用户推荐几部不同的电影了。

推行工作上的细节:均值归一化(Mean Normalization)

让我们来看下面的用户评分数据:在这里插入图片描述
如果我们新增一个用户 Eve,并且 Eve 没有为任何电影评分,那么我们以什么为依据为 Eve 推荐电影呢?
我们首先需要对结果 𝑌矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:
在这里插入图片描述
然后我们利用这个新的 𝑌 矩阵来训练算法。 如果我们要用新训练出的算法来预测评分,则需要将平均值重新加回去,预测(𝜃(𝑗))𝑇𝑥(𝑖) + 𝜇𝑖,对于 Eve,我们的新模型会认为她给每部电影的评分都是该电影的平均分。

大数据开发中的shell学习日记可以包括以下内容: 1. 学习Linux命令和shell脚本:作为大数据开发者,在Linux下进行开发是常见的,因此了解一些基本的Linux命令和编写shell脚本的技能是必备的。 2. 学习Django:Django是一个常用的Python Web框架,对于大数据开发来说,掌握Django可以帮助你构建数据分析和机器学习的应用程序。 3. 数据分析与机器学习:大数据开发中经常需要进行数据分析和机器学习的工作,因此学习相关的技术和算法是必要的。可以参考一些前人的经验贴和教程,了解常见的数据分析和机器学习方法。 4. 大数据组件:了解大数据开发中常用的组件,如Hadoop、Spark等,掌握它们的基本原理和使用方式。 5. 前端内容:虽然大数据开发主要是后端的工作,但了解一些基本的前端知识也是有帮助的,比如HTML、CSS和JavaScript。 6. 数据架构:了解大数据开发中的数据架构,包括数据采集层、数据存储与分析层、数据共享层和数据应用层等,这对于设计和搭建大数据系统是很重要的。 此外,你还可以在牛客网等平台上深入学习和交流大数据开发的经验和知识。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java版斗地主源码-Interview-Summary:回顾这两年来学了些什么和日记,private](https://download.csdn.net/download/weixin_38592548/19393922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [程序员必备学习资源资料库!!!免费开发书籍中文版大全](https://blog.csdn.net/qq_32146369/article/details/106194267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [大数据平台架构--学习日记(一)](https://blog.csdn.net/lp279579561/article/details/104746083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值