#对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 林軒田;

转载于:https://www.cnblogs.com/dfcao/p/ng_ml_2.html

coursera机器学习笔记-多元线性回归,normal equation相关推荐

  1. 【吴恩达机器学习】第二周课程精简笔记——多元线性回归和计算参数分析

    1. Multivariate Linear Regerssion(多元线性回归) (1)Multiple Feature We now introduce notation for equation ...

  2. 机器学习之多元线性回归

    1.多元线性回归模型:定义:具有多个特征的线性回归模型 多元线性回归模型,见下图: 多元线性回归总结(参数.模型.损失函数.梯度下降算法)见下图:[注意:梯度下降算法每次都是同时更新wj和b] 2.多 ...

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

    转载自:http://www.cnblogs.com/llhthinker/tag/Machine%20Learning/ Content: 1. Linear Regression 1.1 Line ...

  4. 【机器学习】机器学习之多元线性回归

    目录 一.多元线性回归基础理论 二.案例分析 三.数据预处理 1.错误数据清洗 2.非数值型数据转换 四.使用Excel实现回归 1.回归实现 2.回归分析 五.使用代码实现回归 1. 数据预处理 2 ...

  5. 机器学习10—多元线性回归模型

    多元线性回归模型statsmodelsols 前言 什么是多元线性回归分析预测法 一.多元线性回归 二.多元线性回归模型求解 2.1最小二乘法实现参数估计-估计自变量X的系数 2.2决定系数:R² 与 ...

  6. 机器学习基础-多元线性回归-02

    矩阵运算 多元线性回归 梯度下降法-多元线性回归 import numpy as np from numpy import genfromtxt import matplotlib.pyplot as ...

  7. 机器学习(多元线性回归模型逻辑回归)

    多元线性回归 定义:回归分析中,含有两个或者两个以上自变量,称为多元回归,若自变量系数为1,则此回归为多元线性回归. (特殊的:自变量个数为1个,为一元线性回归)多元线性回归模型如下所示: 如上图所示 ...

  8. [学习笔记]多元线性回归的matlab实现

    1. Matlab函数 函数:regress [b,bint,r,rint,stats]=regress(y,x); 参数:x.y X:矩阵x表示预测变量,要注意的是如果有常数项,要在矩阵x中包含一个 ...

  9. 大数据(041)机器学习【多元线性回归实例】

    一.前言 保险公司对个人投保时或根据历史数据生成的模型来计算个人保费,那么本次我们就以这个模型的求解过程为例来实践下多元线性回归. 二.数据&简单分析 我们已经获取到了一些数据(模拟数据),文 ...

最新文章

  1. 洛谷 1281 书的复制
  2. 一文读懂全系列树莓派!
  3. python编写木马攻击_用Python写一个自动木马程序
  4. 《小美斗地主》:棋牌手游新商业模式启示录
  5. c++ STL平常练习-1
  6. 耦合式是什么意思_高内聚 ,低耦合 到底是什么意思?
  7. java 反射 成员变量_java基础--反射(成员变量)
  8. 资源放送丨《数据模型重构案例分享》PPT视频
  9. error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
  10. backtrack常用的一些综合扫描工具实例用法
  11. oracle 获取异常 信息,oracle存储过程异常信息的显示
  12. 酒店结婚播放PPT模板
  13. linux服务器离线安装python第三方库
  14. 软考笔记——2.1进程管理、同步互斥、死锁、线程
  15. 2022年医院三基考试肿瘤相关训练题及答案
  16. 【现代通信原理笔记】8 蜂窝系统
  17. matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...
  18. 开启定位权限还是定位失败
  19. BZOJ 2314 士兵的放置(play) 树形DP
  20. 计算机系统保护怎么打开,如何开启系统还原 开启系统还原方法有哪些

热门文章

  1. java 包装类型_2.Java基本类型与包装类型
  2. php数组重置,php 重置数组索引,兼容多维数组
  3. 基于GPT2的中文闲聊机器人/GPT2 for Chinese chitchat
  4. 如何做好一位合格qc_如何做好一个合格的热缩产品
  5. pytorch按照索引取batch中的数
  6. 资源描述框架RDF-阮一峰
  7. Js与flash交互:在html页面中用js与MyReport插件交互
  8. Docker-Docker-file构建Redis5.0.3镜像
  9. Spring读取xml配置文件的原理与实现
  10. Maxent猛犸反欺诈入选Gartner 2018 Cool Vendors