推荐系统【Coursera 斯坦福 机器学习】
本文基于Coursera 斯坦福吴恩达机器学习课程
谢绝任何不标记出处的转载
如有问题请联系作者
1. 问题阐述
推荐系统在机器学习领域具有广泛的实践应用。其本质属于数据填补任务。
比如如图所示,在左侧列出了七首歌曲,在第一行对应四个用户。我们需要基于用户已评分的歌曲信息预测尚未被评分的歌曲,并通过此实现推荐功能。

这里有几个变量声明:

举例来说,在《王妃2.0》这部作品中被观众评价时有两位观众参与评分的具体情况如下:其中一位观众(编号为谢广坤)对该作品给出了一个分数评分为一的情况下,则可得出以下结论:r(一、三)等于一;而y(一、三)也等于一
2. 推荐系统方法之content based recommender systems
content based, 顾名思义就是基于内容进行的推荐。
以歌曲打分为例进行说明。如图所示,在本研究中我们引入了四个指标变量x₁,x₂,x₃,x₄来评估音乐作品的质量特征,并假设每个指标的取值范围在[0,1]区间内。采用这四个指标对每首歌曲进行评估后会得到七个样本点集X={x₁,x₂,…,x₇}(其中数据是我随意设定的,并不科学)。
如上所述,《王妃》可表示为x(2) = [1 ]ᵀ (其中x₀=1)。对于每位用户而言,则将其转换为一个长度固定的向量θ值集合。具体来说就是说,《王二狗》这一人物形象则对应于一个五维向量:其数值分别为[1 ] (这里具体数值代表了他/她对影视音乐的喜爱程度以及对流行音乐与二次元的态度)。
如果我们想要了解王二狗对《王妃2.0》的看法,则可以通过计算θ(2)^T乘以X(2)等于1的方式进行推断,则预测结果表明王二狗会对《王妃》给出1分评价(考虑到《王妃》属于流行音乐领域),因此这一结果具有一定的可信度)。从分析结果来看,在最终阶段采用了简单的线性模型进行分析。

对于cost function, 和线性的一样,我们有:

其中j代表第j个用户,i即第i首歌曲,m代表歌曲总数,nu表示用户的总数量,n代表θ(j)的数量。需要注意的是θ_0和x_0的存在,且正则化不需要约束θ_0

该算法的关键在于能否合理地为各个特征赋值。然而在现实中这一目标通常难以实现。例如歌曲中的特征是一个主观性很强的领域,在不同人的理解中可能存在分歧。因此我们可能需要寻找其他解决方案或方法来解决这个问题。
3. 推荐系统方法之Collaborative filter 协同过滤
协同过滤基于给定参数θ以及已知数据X中的评分信息来计算每个特征值。例如下面的情况,在《βίος》这首拔剑神曲中我们知道了四位用户的评分记录,并根据他们对x1到x4作品的兴趣程度生成了四个参数θ₁至θ₄。随后就可以反推出该作品的各项特征值(下面的数据是我随意编造的)

为了使这个过程更加正式地呈现出来,请问您是否愿意按照以下方式对其进行规范描述?首先,请通过用户提供的对电影类别(features)的具体评分以及对具体电影的评分来计算某一部电影对应的features数值。其中第一行涉及的是单个 feature 的 cost function 的定义域设定问题,在此基础之上构建起第二行关于所有 feature 的 cost function 的整体框架结构。

然后在确定了 feature 后采用内容基于的方法(见上文)用于预测未知的电影。

请稍等片刻


在完成好对 feature 的判别后,在完成后部则可以通过计算两首歌曲间 feature 的距离来进行分类,并进而实施推荐.
4. Mean Normalization
对于全新的用户(θ全为0),我们用mean normalization解决。

这里代码有点绕,需要再看一下。
不需要初始化X0和θ0.
