Andrew Ng Machine Learning 专题【Recommender Systems】

此文是斯坦福大学,机器学习界 superstar — Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记。力求简洁,仅代表本人观点,不足之处希望大家探讨。
课程网址:https://www.coursera.org/learn/machine-learning/home/welcome

Week 9 前半部分 Anomaly Detection:http://blog.csdn.net/ironyoung/article/details/49334343

Week 9:

  1. 推荐系统

    1. 推荐系统是机器学习的重要应用之一,但是学术界关注较少。但是它的确出现在生活中的方方面面。例如我们上豆瓣、网易云音乐(没错,叫我文青)等,总会有根据你的个人喜好来推荐你可能喜欢的电影、音乐的功能,就是典型的推荐系统。

    2. 我们以外国豆瓣为例,见下图(问号代表尚未评分):
      Andrew Ng Machine Learning 专题【Recommender Systems】_第1张图片
      另外我们需要设计几个变量: nu=#users 数目; nu=#movies 数目; r(i,j) 代表用户 j 是否已经对电影 i 评分,取值为0或1; y(i,j) 代表用户 j 是否对电影 i 的具体评分,取值范围0~5

    3. 一般电影评分是基于内容(content-based),取值范围为0~1。例如某部电影的浪漫成分为0.3,动作成分为0.8,这部电影就主要是动作片,掺杂一些浪漫成分。“浪漫”特征可以设定为 x1 ,“动作”特征可以设定为 x2 ,共有 n 个特征。

    4. 如何寻找相似的电影呢?就是选取“距离”最短的另一部电影,即small ||x(i)x(j)||

    5. 很容易地,我们会想到线性回归的方法。这个方法的前提是已知每部电影属于每种特征的得分 x(1),x(2),...,x(m) 。若每个用户基于特征可以有一个 θ(j) ,则用户 j 对电影 i 的评分为 (θ(j))Tx(i) 。根据线性回归,我们可以得到优化目标为:
      Andrew Ng Machine Learning 专题【Recommender Systems】_第2张图片
      这里需要注意的是,为了简化系统,我们去除了求和符号之前的 12m ,而是 12 。这样并不影响结果。
      对上图中的优化目标,利用梯度下降的办法求出 θ 的最优值(如果对这一部分不熟悉,建议查看《专题【Linear Regression】》:http://blog.csdn.net/ironyoung/article/details/47129523):
      Andrew Ng Machine Learning 专题【Recommender Systems】_第3张图片

  2. 换个角度思考?

    1. 上一部分,我们是假设已知每部电影在每种特征上的得分。如果我们已知有两种特征:romance和action,但是不知道每种电影在哪种特征上得分多少。在这里,我们的求解对象变为了 x(i) .

    2. 但是此时我们已知得知用户对于每种特征的喜欢程度,即已知 θ(j) 。同时已知 y(i,j) ,求解 x(i) 。因此我们的优化目标为:
      Andrew Ng Machine Learning 专题【Recommender Systems】_第4张图片
      同理,也可以使用梯度下降法进行最优值求解。

    3. 上一部分的求解过程是 xθ ,这一部分的求解过程是 θx 。如果这两个过程交替进行,是不是就可以达到整体的最优值?答案是肯定的。这就是下一部分“协同过滤”的基本思想,但是具体实施过程有待改进。

  3. 协同过滤(Collaborative Filtering)

    1. 对于求解过程 xθ ,与求解过程 θx 交替进行,以求达到整体的最优值。协同过滤基本思想是这样的,但是能不能将一切置于同一个公式下?

    2. 查看下图,红色方框中是两个优化目标的求解部分中相同的部分,即使求和顺序不同。而红框之外的部分分别加到新的优化目标中
      Andrew Ng Machine Learning 专题【Recommender Systems】_第5张图片
      这里,我们去除掉 x0,θ0 这些恒为1的变量(其实我忍很久了),让学习更加灵活。

    3. 因此,协同过滤的具体算法流程(第一步类似于神经网络,对系统中的参数首先都进行随机化;后两步完全类似于线性回归)。因为我们不再需要 k=0 的情况,所以不需要单独区分:
      Andrew Ng Machine Learning 专题【Recommender Systems】_第6张图片

  4. 均值归一化(Mean Normalization)

    1. 如果有另一个新用户 Eve,她对于任何电影都尚未评分,我们如何给她推荐呢?很简单,推荐那些大部分都觉得高分的电影呗。

    2. 但是,如果直接利用我们之前的方法求解以下情形:
      Andrew Ng Machine Learning 专题【Recommender Systems】_第7张图片
      为了归一化,肯定最后 Eve 的 θ(5) 一定是全0向量。因此,我们需要对原先的方法采取一些预操作,来避免出现全 0 的预测向量,而是让它变成每部电影的平均得分。

    3. 方法也十分简单,就是对每部电影求出一个平均值(只统计那些对该部电影打过分数的样本),然后将每个人对每部电影的得分减去这部电影的平均值,然后进行协同过滤计算。但是,最后的预测得分公式也需要小小的改变: (θ(i))Tx(i)(θ(i))Tx(i)+μi (其中 μi 表示电影 i 的平均得分)。

编程作业答案:https://github.com/cnauroth/machine-learning-class

你可能感兴趣的:(机器学习,推荐系统,协同过滤,Andrew-Ng)