#对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. Android使用SQLite数据库(2)

    打开SQLite数据库,首先要建立一个DatabaseHelper类的实例,然后,再获得数据库: DatabaseHelper mDBH; SQLiteDatabase db; mDBH = new ...

  2. mysql分页查询详解

    我们做的后端项目一般都会有admin管理端,当管理端将要展示数据的时候,就需要用到分页.所以分页的考查在面试中也相当多.在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用o ...

  3. LR常见问题整理

    1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. LR11 无法弹出ie浏览 ...

  4. 不可小觑的SQL语句

    在前面学的我们通过点鼠标给数据表插数据,虽然这种方法很靠谱,但是有那么的一些缺点,就是比较麻烦和效率不高.所以现在我们的好好学SQL语句,来弥补这么的一个漏洞,能提高我们工作的效率. SQL语句能做什 ...

  5. LBS数据分析:使用地图展示统计数据——麻点图与麻数图

    作为一个LBS的APP,都获得了用户经纬度,也都使用了友盟统计.google ana等等统计分析系统,不过没有地图展示功能,不能进行直观的展示. 友盟统计.google ana等系统是总体数据统计,无 ...

  6. CSS中的浮动和定位

    在了解CSS中的浮动和定位之前有必要先了解清楚标准流和脱离标准流的特性 标准流的默认特性 1.分行.块级元素,并且能够dispay转换. 2.块级元素(block):默认独占一行,不能并列显示,能够设 ...

  7. C#实现类似"hello $world"的格式化字符串方法

    C#自带的string.Format可以格式化字符串,但是还是不太好用,由于格式的字符占位符都是数字,当数目较多时容易混淆.其实可以扩展string的方法,让C#的字符串具备其他的方法,下面介绍一个实 ...

  8. Windows 安装 GTK+ 图文说明

    首先去官方下载: //官方网站 http://www.gtk.org/download/index.php //下载链接 http://win32builder.gnome.org/gtk+-bund ...

  9. [DeviceOne开发]-白板的示例

    一.简介 该demo通过do_Painterview这个组件实现画板的基本功能,模仿的是Appstore上的叫“白板”的应用,可以更改字体颜色,字体粗细,然后用手指进行绘制,可以回退,清屏,保存到相册 ...

  10. javascript中this关键字详解

    不管学习什么知识,习惯于把自己所学习的知识列成一个list,会有助于我们理清思路,是一个很好的学习方法.强烈推荐. 以下篇幅有点长,希望读者耐心阅读. 以下内容会分为如下部分: 1.涵义 1.1:th ...