吴恩达机器学习—推荐系统

问题规划

引例—电影推荐

假设已有的数据如上所示,洋红色线内的数据表示缺失数据,那么我们如何根据已有的评分数据r(i,j),y(i,j)来预测这些缺失的数据呢?

基于特征的推荐算法

基于内容的推荐系统

已知数据如上,有四个人对于不同电影的评分,我们还有x_{1},x_{2}  分别表示电影包含浪漫成分和动作片成分的多少。那么每一个电影都可以用一个向量来表示,如第一个电影可以表示为x^1=[1,0.9,0],其中第一个元素为常数。那么对于每一个用户j,我们可以用一个学习算法学习参数\theta ^j,然后根据公式(\theta ^j)Tx^i预测用户j对电影i的评分。现在问题就变为如何学习到用户的参数向量\theta ^j

基于内容的推荐问题

问题的正规表示方式如上所示,我们可以建立一个类似于线性回归的模型进行用户参数向量的预测,\theta ^j表示用户的参数向量,x^i表示电影的特征向量,现在已经有了该用户的历史评价数据,那么可以通过最小化上式计算用户的参数向量,即使得参数与特征的乘积作为电影预测的评分减去用户对电影实际的评分,当两者最接近的时候求得的用户参数向量就是我们要求的向量。同时可以加入正则项进行调整。

目标最优化

我们可以通过最小化方差得到某一个用户的参数向量,也可以最小化所有用户的和来得到所有用户的参数向量。

梯度下降法求最优

同样可以利用梯度下降法求最优参数。

以上是基于内容的推荐算法,即已经有了表示电影特征的向量,但是在实际中可能没有这些信息,那么要如何进行推荐呢?

协同过滤

之前的数据已经有信息表明,该电影包含浪漫成分,包含多少动作片成本,但是在实际中我们不可能花钱让每一个人看完这部电影然后给出这些信息,而且有时候你可能需要的不止这两个特征。

求解电影的特征向量

假设我们现在已经有了每个用的参数向量和每个用户对电影的评分,要求得电影的特征向量,如对于用户一来说,根据他的参数向量可知他比较喜欢浪漫电影,而他对电影一的评分为5分,那么我们可以推断电影一包含1的浪漫成分,包含0的动作成分,那么就可以得到电影一的特征向量为[1,1,0]。这一思想的正规表示如下:

最优化过程

再给定用户参数和评分的情况下,学习电影特征x^i,通过最小化第一个式子,每一个用户的参数向量与电影特征的内积表示某个用户对该电影的预测评分,而我们还有每个人对该电影的实际评分,使两者平方和最小,则可以求得某一个电影的特征向量。正则化约束了特征值的大小。要求得所有电影的特征向量,则要使所有人对所有电影的预测评分与实际评分误差平方和最小。

协同过滤的思想

现在我们已经知道如果根据评分和电影特征求得用户参数向量,也知道如何根据用户的参数向量和评分来预测电影的特征向量。将两者结合起来就是协同过滤的基本思想:首先初始化用户的参数,然后根据参数和评分计算电影的特征,得到特征以后在进行用户参数向量的预测,如此迭代下去,直至收敛。之所以称之为协同过滤,是因为这一系统结合了每一个用户的行为,协同所有的用户信息在一起,每个用户都在帮助系统进行更好的学习。

这一过程必须在每个用户都对多个电影进行评分,而且每个电影都被多个用户评分的情况下才能有效。

协同过滤算法

协同过滤算法

将用户参数求解和电影特征向量求解结合起来进行最优化,可以避免反复迭代从而达到最优,具体的优化模型如上所示,将两个最优化目标结合在一起,此时特征向量和用户参数向量的维度都是n维,因为系统会自动学习特征,就不用人为设置硬特征x_{0}=1 了。

协同过滤算法流程

首先将用户参数向量和电影特征向量初始化为较小的值,然后最小化包含\theta 和x的损失函数J,利用梯度下降法能求得每一个用户的参数向量\theta ^j和每个电影的特征向量x^i 。最后,给定一个用户即其参数向量和电影的特征向量,就能进行评分预测了。

矢量化:低轶矩阵分解

协同过滤算法还能实现其他功能,比如,给定特定的商品,你可以找到与之相关的其他商品。比如用户一直在寻找某个产品,那么有没有一些相关的产品可以推荐给用户?

每个用户对每个电影的评分

每个用户对每个电影的评分可以表示为一个矩阵y。

低轶矩阵分解

所有电影的特征向量可以表示为一个矩阵X,所有用户的参数向量同样可以表示为一个矩阵\Theta ,这样Y就可以用这两个矩阵的乘积表示。这一过程称为低轶矩阵分解

相似电影推荐

那么我们如何发现并推荐相关电影呢?根据协同过滤算法,我们已经学习到了不同电影的特征向量,这些特征有时是难以可视化和难以理解的,但是他们确实是有意义的,能捕捉不同电影的特征。通过计算两个电影特征向量之间的模,即距离,我们可以找到和这个电影最相似的电影,如果我们要找到5个与某一电影最相近的电影,那么只要找到和该电影特征向量距离最小的前五个即可。

实施细节:均值规范化

没有评分数据的用户

如果对于某一个用户,如这里的Eve,没有她的评分数据,如果对数据进行协同过滤,求出的她的参数向量肯定是零向量,因为在进行最小化的时候,损失函数简化为求正则项的最小化,则求出的参数一定是零。此时预测该用户对电影的评分,得到的结果肯定也是0,这是无意义的。

均值归一化

为了使用户的预测评分有意义,采用均值归一化,首先求出每个电影的评分的均值,然后将每个人对该电影的评分减去均值,这样就实现了均值归一化,如上图所示。然后根据最优化求出用户参数和电影特征向量之后,在进行预测的时候,在每个电影的预测评分上加上该电影评分均值从而得到最终结果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容