在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了。

林首先介绍了机器学习里面比较困难的一种问题:categorical features

这种问题的特征就是一些ID编号这类的,不是numerical的。

如果要处理这种情况,需要encoding from categorical to numerical

最常用的一种encoding方法就是binary vector encoding(也是实习工作中用过的路子),将binary vector作为输入。

联系之前学过的模型,可以用NNet来学习这种映射关系。

但是,binary vector毕竟不是numerical vector,由于每个输入只在一个维度上是1,其余都是0,因此,NNet中的tanh就没啥必要了(因为每个输入数据x喂到每个tanh的只有一个维度的值,输出也只受这个一个维度的值影响,且tanh是关于x是单调的)。

所以,有了如下的简化版的Linear Network,即把tanh换成了Σ求和。

这里对符号进行一下说明:

1)V是d×N的矩阵(d是hidden unit的个数,N是user的个数):V的每个column代表每个user对hidden unit的权重。

2)W’是M×d的矩阵(M是movie的个数):M的每个row代表的是每个movie关于hidden unit的权重。

考虑每个xn是binary vector,则h(xn) = W’vn(动笔推导一下就OK了):Linear Network的输出h(xn)是一个M维的vector,代表每个user对于各个movie的rating。

综上,Linear Network对于recommender system来说,需要学习的一个是V矩阵(user-hidden unit或latent factor),另一个是W矩阵(item-hidden或latent factor)。

在介绍学习方法之前,林重新整理了一下Linear Network问题。

linear network对于m-th movie来说:就是有一个对应的Wm'来对转换后的x进行线性加权hm(x) = Wm' fi(x)。

因此,学习目标也了然了:

1)transform的系数矩阵

2)linear model的系数矩阵

综上,由于Linear Network的输入是binary vector的,因此对原Linear Network问题做一个变形:rnm = Wm'Vn → R = V‘W,即转化成一个matrix factorization问题。(个人非常喜欢这段motivation的讲解,matrix factorization为什么在NNet这部分出现也理解了

关于Linear Network转化成Matrix Factorization问题的推导,按照个人理解,我再多写两笔:

h(x) = W'Vx (在前面的PPT中找

    = (Vx)'W (由于h(x)是一个向量所以颠倒一下没关系了,输出h(x)由原来的列向量变成了行向量了,但对应位置的值不变

    = x'V'W ((AB)'=B'A', 矩阵转置运算性质

则h(X) = X'V'W (按行补上所有的输入xn=1...N

     = I(N) V'W (X’矩阵每一行代表一个输入的binary vector,这里按照编号顺序排布X,所以X'就是一个单位阵喽

       = V'W (原始的Linear Network问题转化为Basic Matrix Factorization问题了

并且,这种分解是可以加上些物理意义的:可以把每个hidden unit当成是一种隐含特征(喜剧、动作...)。V和W代表user与movie与hidden unit的关系。

下面讲求解模型的方法:

最优化的问题有两组变量,可以模仿K-means学过的alternating minimization模式:轮流最优化,即alternating least square algorithm

1)固定V(相当于user对hidden unit的权重固定):需要挨个学习Wm(m=1,...,M);学习每个Wm的时候,喂进去的是<V, Rm-th column)> n=1,...M,详单与少了bias的linear regression

这里容易产生一个思维误区:矩阵大部分的位置上都是空的,这些位置的值在linear regression中怎么处理呢?

想了一下,这些值根本就不在linear regression的求解范围中(注意,只对有rating评分的那些点计算误差

2)V与M的关系类似,学的方法也类似,不赘述

整个Alternating Least Squares的算法流程如下:

1)初始化的时候randomly一下

2)由于Ein是有下限的,所以能converge

这里,林还提了一句:Linear Autoencoder(PCA)是一种特殊的Matrix Factorization。

另一种求解Matrix Factorzation的方法,也是更常用的一种就是Stochastic Gradient Descent方法。

在最优化Ein的时候,不考虑前面的常数项,考虑后面的式子。

由于有两个变量,因此需要分别求梯度。可以自行查阅SGD的算法,这里就是最简单的求导,不再赘述。

这里多提一句:为啥对Vn的求导只用考虑 (rnm - Wm'Vn)²这一项呢?

因为,这里求导有两个变量,Vn和Wm:

1)不含有Vn的项自然不用考虑了

2)含有Vn同时含有W1,...WM的项中:

  a. 如果是batch gradient,这些含有Vn的项都应该考虑(挨个求出来,再取个平均这类的

  b. 如果是stochastic gradient的方法,只需要考虑Wm这一个点即可了(前提是rnm有值),所以梯度的式子也就留下这一项了

个人感觉细节还是扣清楚好,有助于理解复杂的问题

这里有一个讲梯度算法并行化的文章:http://www.superchun.com/machine-learning/parallel-matrix-factorization.html

总体的算法流程如下:

最后,林还稍稍讲了一下KDD cup中的SGD使用trick:

这个trick叫time-deterministic GD : 即,在GD的最后一轮,不再用随机选点的策略了,改用选择时间轴上最近的几个点。这样对于有时间属性的数据,可以达到更好的效果。

转载于:https://www.cnblogs.com/xbf9xbf/p/4731453.html

【Matrix Factorization】林轩田机器学习技法相关推荐

  1. 台大林轩田·机器学习技法记要

    台大林轩田·机器学习技法 记要 6/1/2016 7:42:34 PM 第一讲 线性SVM 广义的SVM,其实就是二次规划问题 把SVM问题对应到二次规划的系数 这就是线性SVM,如果想变成非线性,只 ...

  2. 台湾大学林轩田机器学习技法课程学习笔记4 -- Soft-Margin Support Vector Machine

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel SVM.先将特征转换和计算内积这两个步骤合并起来,简化计算.提高计算速度,再用Dual SVM的求解方法来解决. ...

  3. 林轩田机器学习技法(Machine Learning Techniques)笔记(一)

    终于到机器学习技法了,接下来还是尽量保持每章完结就立刻更吧..基石没有保持写完就更,现在回头不知道自己在写啥,看笔记感觉写得一塌糊涂,感觉翻车了.慢慢改进吧. 听说技法挺难的,贴一下大神博客来加持一发 ...

  4. 林轩田机器学习技法(Machine Learning Techniques)笔记(三)

    感觉边写边记还不错hhh(感觉之前就剪剪图,写在记事本里打算之后再贴上去,实在是太蠢了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄) 林轩田机器学习技法(Machine Learning Techniques)笔记 ...

  5. 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine

    红色石头的个人网站:redstonewill.com 关于台湾大学林轩田老师的<机器学习基石>课程,我们已经总结了16节课的笔记.这里附上基石第一节课的博客地址: 台湾大学林轩田机器学习基 ...

  6. 台湾大学林轩田机器学习技法课程学习笔记15 -- Matrix Factorization

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Radial Basis Function Network.它的原理就是基于距离相似性(distance-based simi ...

  7. 【完结】林轩田机器学习技法终章

    AI有道 一个有情怀的公众号 1 Feature Exploitation Techniques 我们在本系列课程中介绍的第一个特征提取的方法就是kernel.Kernel运算将特征转换和计算内积这两 ...

  8. 台湾大学林轩田机器学习技法课程学习笔记16(完结) -- Finale

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Matrix Factorization.通过电影推荐系统的例子,介绍Matrix Factorization其实是一个提取用 ...

  9. 台湾大学林轩田机器学习技法课程学习笔记6 -- Support Vector Regression

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel Logistic Regression,讨论如何把SVM的技巧应用在soft-binary classifica ...

  10. 台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了神经网络Neural Network.神经网络是由一层一层的神经元构成,其作用就是帮助提取原始数据中的模式即特征,简称为pat ...

最新文章

  1. 【项目经理应该知道的97件事】三位一体的项目管理
  2. 看完这篇文章之后,终于明白了编译到底怎么回事。
  3. 2022-2027年中国PPR管材行业发展态势及市场需求分析报告
  4. IMYAOPTableView 源码学习笔记
  5. python拓展7(Celery消息队列配置定时任务)
  6. 看到这一幕,我甚至都想戒烟了。。 | 今日最佳
  7. “返回指向栈空间的指针”的错误
  8. [Apache]安装中出现的问题
  9. javascript 事件冒泡和事件代理
  10. 【Android】【移动应用开发】基础案列
  11. 如何选用企业内部沟通工具
  12. nexus批量上传与下载
  13. 把PDF/AZW/EPUB转成图片
  14. Flink catalog简单使用
  15. LeetCode K站中转内最便宜的航班(回溯法、动态规划)
  16. 2021年中国电梯行业现状及主要企业产销情况分析[图]
  17. 阿里云 x86计算机,什么是x86服务器?x86是多少位系统?
  18. NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
  19. twitter下载网络教程_糟糕的主意:喜p Twitter广告网络
  20. 【Nginx】Nginx主机域名配置

热门文章

  1. iOS开发 frame 与 bounds 的区别与关系
  2. Linux 内存管理之 SLUB分配器 (4):slub page大小计算方法
  3. layui 自定义request_layuiAdmin pro v1.x 【单页版】开发者文档
  4. 转发技术风雨三十年,你经历过……
  5. mmap 系统调用 的使用
  6. Web浏览器已经限制此文件显示
  7. linux下数据同步、回写机制分析
  8. php 改变页面元素,JavaScript动态改变页面元素
  9. 好用的代理服务器工具_secscanauthcheck越权检查工具
  10. 优先队列——Priority_Queue 详解