#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得;

#注:此笔记是我自己认为本节课里比较重要、难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点;

#标记为<补充>的是我自己加的内容而非课堂内容,参考文献列于文末。博主能力有限,若有错误,恳请指正;

#---------------------------------------------------------------------------------#

多元线性回归的模型:

#---------------------------------------------------------------------------------#

梯度下降法在多元线性回归中的应用:

代价函数:

梯度下降:

代入J(theta)得到:

在多元线性回归中用梯度下降法要注意feature scaling!

如果不同变量之间的大小不再一个数量级,作feature scaling能大大减少寻找最优解的时间;

例如:

  • x1 = size (0 - 2000 feet)
  • x2 = number of bedrooms (1-5)
  • x1,x2之间差别很大,如果不做feature scaling,对θ1和θ2作等高线图:

  ,将会花很长时间去找最优解;

NG给的建议:最大变量和最小变量均值差3倍以内为佳;

mean normalization:将xi替换为(xi - mean)/max;

#---------------------------------------------------------------------------------#

学习速率α大小的选择:

1, 对足够小的α,J(theta)会单调减少,

2, 如果α过小, 梯度下降会很慢;

3, 如果α过大, J(theta)可能不会单调减少,甚至可能不收敛,

;

如何选择α,如下:

..., 0.001, 0.01, 0.1, 1, ..., 或者 ..., 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, ....

#---------------------------------------------------------------------------------#

normal equation:假设我们有m个样本。特征向量的维度为n。因此,可知样本为{(x(1),y(1)), (x(2),y(2)),... ..., (x(m),y(m))},其中对于每一个样本中的x(i),都有x(i)={x1(i), xn(i),... ...,xn(i)}。令 H(θ)=θ+ θ1x1 +θ2x+... + θnxn,则有

,其中:

表示第i个training example;
表示第i个training example里的第j个feature的值;
m为#training example;
n为#feature;

#---------------------------------------------------------------------------------#

Normal Equation VS Gradient Descent

Normal Equation 跟 Gradient Descent(梯度下降)一样,可以用来求权重向量θ。但它与Gradient Descent相比,既有优势也有劣势。

优势:

Normal Equation可以不管x特征的scale。比如,有特征向量X={x1, x2}, 其中x1的range为1~2000,而x2的range为1~4,它们的范围相差了500倍。如果使用Gradient Descent方法的话,会导致椭圆变得很窄很长,而出现梯度下降困难,甚至无法下降梯度(因为导数乘上步长后可能会冲出椭圆的外面)。但是,如果用Normal Equation方法的话,就不用担心这个问题了。因为它是纯粹的矩阵算法。

劣势:

相比于Gradient Descent,Normal Equation需要大量的矩阵运算,特别是求矩阵的逆。在矩阵很大的情况下,会大大增加计算复杂性以及对计算机内存容量的要求。Andrew Ng建议矩阵维数<10,000时用normal equation,大于时改用梯度下降法;

#---------------------------------------------------------------------------------#

什么情况下会出现XTX non-invertible该如何应对?

(1)当特征向量的维度过多时(如,m <= n 时)

解决方法:① 使用regularization的方式

     or ②删除一些特征维度

(2)有冗余特征(也称为linearly dependent feature)

例如, x1= size in feet2

    x2 = size in m2

    feet和m的换算为 1m≈3.28feet所以,x1 ≈ 3.28* x2, 因此x1和x2是线性相关的(也可以说x1和x2之间有一个是冗余的)

解决方法:找出冗余的特征维度,删除之。

#---------------------------------------------------------------------------------#

normal equation 的推导:

这种方法不需要经过任何循环,也不需要假设初始值。虽然推导本身有点复杂,但是结果一步到位,简单又效率。

准备工作:

定义function f(A):Mapping from M-by-n matrices to the real numbers。定义f(A)的微分为:

定义trace operator。对于一个n by n的matrix A, the trace of A is:

Trace有如下特性:如果a是一个real number, 那么tr a = a;


矩阵微分有如下特性:

开始推导:

首先,设计一个m行n列的(实际上是n+1列,应为我们假设x0 =1 )矩阵X,他的每一行都是一个training sample,每列都是一个特征。

设计y成为一个m列的目标值(输出值)向量,也就是房子的价格在我们例子中。

因为:

所以:

因为对于一个向量z来说:
所以:
最后我们用之前提到的矩阵微分特性的第二和第三条:

所以:

因为我们要让J最小,所以J的微分必须等于0。

所以:

#---------------------------------------------------------------------------------#

参考:

coursera: standford machine learning, by Andrew Ng;

coursera: 台湾大学機器學習基石,by 林軒田;

coursera机器学习笔记-多元线性回归,normal equation的更多相关文章

  1. 吴恩达机器学习笔记——正规方程(Normal Equation)

    问题描述:m examples : (x(1),y(1)), (x(2),y(2)),..., (x(m),y(m)) and n features; 计算方法:θ = (XTX)-1XTy; 计算过 ...

  2. Stanford机器学习笔记-1.线性回归

    Content: 1. Linear Regression 1.1 Linear Regression with one variable 1.1.1 Gradient descent algorit ...

  3. [机器学习Lesson4]多元线性回归

    1. 多元线性回归定义 多元线性回归也被称为多元线性回归. 我们现在介绍方程的符号,我们可以有任意数量的输入变量. 这些多个特征的假设函数的多变量形式如下: hθ(x)=θ0+θ1x1+θ2x2+θ3 ...

  4. 【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归

    一.前述 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,T ...

  5. 100天搞定机器学习|Day3多元线性回归

    前情回顾 [第二天100天搞定机器学习|Day2简单线性回归分析][1],我们学习了简单线性回归分析,这个模型非常简单,很容易理解.实现方式是sklearn中的LinearRegression,我们也 ...

  6. coursera机器学习笔记-建议,系统设计

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  7. coursera机器学习笔记-神经网络,学习篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  8. coursera机器学习笔记-神经网络,初识篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  9. coursera机器学习笔记-机器学习概论,梯度下降法

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

随机推荐

  1. EL表达式错误attribute items does not accept any expressions

    解决方法是将 <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 改成 <% ...

  2. final static 深度解析

    function test(){ var a = b = 10; } test( ); alert(b); 由上一篇博客说起,最后输出的是10.引起歧义的原因是全局变量和局部变量的关系.顺着这个话题, ...

  3. python验证登录

    一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢 这里我们使用装饰器来做登录验证 网站构成 假设我们有这样一个网站,是一个类似与博客园这种多个用 ...

  4. jquery学习笔记:获取下拉框的值和下拉框的txt

    <div class="form-group"> <select class="form-control" id="iv_level ...

  5. js中的原型、继承的一些想法

    最近看到一个别人写的js类库,突然对js中的原型及继承产生了一些想法,之前也看过其中的一些内容,但是总不是很清晰,这几天利用空闲时间,对这块理解了一下,感觉还是有不通之处,思路上没那么条理,仅作为分享 ...

  6. jquery刷新页面

    下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象(用于框架) opener.loc ...

  7. 局域网ping Linux主机名

    1.Windows ping Linux主机名 #ubuntu 下 sudo apt-get install winbind #centos 下 yum install samba service n ...

  8. this指向问题

    我今天下午本来想做个就是tr鼠标移出之后过三秒把对应的input添加hiddens类 然后我就这样写了 $('.table>tbody>tr').mouseout(function(){ ...

  9. var和dynamic的区别及如何正确使用dynamic ?

    C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,他们都可以申明动态类型的变量,但是本质上他们还是有不少区别的.var 在编译阶段已经确定类型,在初始化时候,必须提供初始化的值, ...

  10. 对jQuery选择器的总结

    jQuery基础选择器 $("div*")获取div下面的所有元素 $(".red,.green").html("怎么") // 需要注意的 ...