目录

3.1 多维特征

3.2 多变量梯度下降

3.3 梯度下降法实践1-特征缩放

3.4 梯度下降法实践2-学习率

3.5 特征和多项式回归

3.6 正规方程

3.7 正规方程及不可逆性

下节将介绍Octave的基本操作。


3.1 多维特征

目前为止,我们探讨了单变量/特征的回归模型。现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为

增添更多特征后,我们引入一系列新的定义变量:

代表特征的数量

代表第 i 个训练实例,是特征矩阵中的第 i 行,是一个向量vector)。

比方说,上图的

代表特征矩阵中第 i 行的第 j 个特征,也就是第 i 个训练实例的第 j 个特征。

如上图的

支持多变量的假设 h  表示为 ​​​​​​​,

这个公式中有n+1 个参数和 n个变量,为了简化公式,使 ​​​​​​​,则公式转化为: ​​​​​​​,此时模型中的参数是一个n+1 维的向量,任何一个训练实例也都是n+1维的向量,特征矩阵X的维度是m*(n+1)。因此公式可以简化为: ​​​​​​​ ,其中上标T代表矩阵转置。

3.2 多变量梯度下降

与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即 ​​​​​​​,

其中: ,

我们的目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。 多变量线性回归的批量梯度下降算法为:

即:

求导数后得到:

n>=1 时,

​​​​​​​

​​​​​​​

​​​​​​​

开始时,随机选择一系列的参数值,计算所有的预测结果后,再给同步更新所有的参数,如此循环直到收敛。

代码示例:

计算代价函数的python代码:

def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))

3.3 梯度下降法实践1-特征缩放

解决多维特征问题时,必须保证这些特征具有相近的尺度,这将帮助梯度下降算法更快地收敛。

以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:

最简单的方法是令: ​​​​​​​ ,其中是平均值, ​​​​​​​是标准差。

3.4 梯度下降法实践2-学习率

梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,但是可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如0.001)进行比较,但通常看上面这样的图表更好。

梯度下降算法的每次迭代受到学习率的影响,如果学习率a 过小,则达到收敛所需的迭代次数会非常高;如果学习率a 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率,差不多每次三倍放大学习率:

α = 0.010.030.10.31310

3.5 特征和多项式回归

如房价预测问题,

​​​​​​​

​​​​​​​(临街宽度), ​​​​​​​(纵向深度), ​​​​​​​(面积),则:​​​​​​​。

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型: ​​​​​​​,

或者三次方模型: ​​​​​​​,

通常我们需要先观察数据然后再决定准备尝试怎样的模型。 另外,我们可以令:

​​​​​​​,从而将模型转化为线性回归模型。

根据函数图形特性,我们还可以使:

​​​​​​​

或者:

​​​​​​​

注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要

3.6 正规方程

到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案。如:

正规方程是通过求解下面的方程来找出使得代价函数最小的参数的: ​​​​​​​。  假设我们的训练集特征矩阵为 ​​​​​​​(包含了 ​​​​​​​ )并且我们的训练集结果为向量 y ,则利用正规方程解出向量 ​​​​​​​。

上标T代表矩阵转置,上标-1 代表矩阵的逆。设矩阵 ​​​​​​​ ,则: ​​​​​​​

以下表示数据为例:

即:

运用正规方程方法求解参数:

Octave 中,正规方程写作:

pinv(X'*X)*X'*y

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

梯度下降与正规方程的比较:

梯度下降

正规方程

需要选择学习率α

不需要

需要多次迭代

一次运算得出

当特征数量n 大时也能较好适用

需要计算 ​​​​​​​,如果特征数量n 较大则运算代价大,因为矩阵逆的计算时间复杂度为 ​​​​​​​,通常来说当n 小于10000 时还是可以接受的

适用于各种类型的模型

只适用于线性模型,不适合逻辑回归模型等其他模型

总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数θ 的替代方法。具体地说,只要特征变量的数量小于一万,通常使用标准方程法,而不使用梯度下降法。

随着要讲的学习算法越来越复杂,例如,当我们讲到分类算法,像逻辑回归算法,实际上对于那些算法,并不能使用标准方程法。对于那些更复杂的学习算法,我们不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。或者我们以后在课程中,会讲到的一些其他的算法,因为标准方程法不适合或者不能用在它们上。但对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快的替代算法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。

正规方程的python实现:

import numpy as np
def normalEqn(X, y):
   theta = np.linalg.inv(X.T@X)@X.T@y   #X.T@X等价于X.T.dot(X)
   return theta

3.7 正规方程及不可逆性

本节谈谈正规方程 ( normal equation )以及它们的不可逆性,即使没有理解正规方程和线性回归的关系,也没有关系。

我们要讲的问题如下: ​​​​​​​,

当计算 θ =inv(X'X ) X'y ,那对于矩阵X'X 的结果是不可逆的情况咋办呢?X'X不可逆的问题很少发生,在Octave里,如果用它来实现θ 的计算,你将会得到一个正常的解。在Octave里,有两个函数可以求解矩阵的逆,一个被称为pinv(),另一个是inv(),这两者之间的差异是些许计算过程上的,一个是所谓的伪逆,另一个被称为逆。使用pinv() 函数可以展现数学上的过程,这将计算出θ 的值,即便矩阵X'X 是不可逆的。

不可逆的原因有两个,第一是特征矩阵中,两个特征值之间是倍数关系;第二是训练样本数量远小于特征/属性的个数。

因此,解决不可逆问题的关键在于观察所有特征检查是否有多余的特征,如果有就删除掉,直到他们不再多余为止,如果特征数量实在太多,可以删除一些对结果影响不大的特征来反映尽可能多内容,否则使用正规化方法。 如果矩阵X'X 不可逆,在Octave中用伪逆函数pinv() 来实现求逆。即使X'X 的结果是不可逆的,但算法执行的流程是正确的。

增加内容:

​​​​​​​ 的推导过程:

​​​​​​​其中: ​​​​​​​

将向量表达形式转为矩阵表达形式,则有 ​​​​​​​ ,其中Xmn列的矩阵(m为样本个数,n为特征个数),θn行1列的矩阵,ym行1列的矩阵,对J(θ)进行如下变换:

​​​​​​​

接下来对J(θ) 偏导,需要用到以下矩阵的求导法则:

​​​​​​​, ​​​​​​​
所以有:

​​​​​​​,

, ​​​​​​​则有 ​​​​​​​。

下节将介绍Octave的基本操作。

吴恩达机器学习个人笔记03——多变量线性回归相关推荐

  1. 吴恩达机器学习python作业之多变量线性回归

    建议先看单变量线性回归再看多变量线性回归哦. 参考链接: (7条消息) 吴恩达|机器学习作业1.1多变量线性回归_学吧学吧终成学霸的博客-CSDN博客 数据集:一共三列,左边两列是自变量x,最右边一列 ...

  2. 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 1 Linear Regression with Multiple Variable ...

  3. 吴恩达|机器学习作业1.1多变量线性回归

    1.1.多变量线性回归 1)题目: 在本部分的练习中,需要预测房价,输入变量有两个特征,一是房子的面积,二是房子卧室的数量:输出变量是房子的价格. 数据链接: https://pan.baidu.co ...

  4. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  5. 吴恩达机器学习课程笔记一

    吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...

  6. Github标星24300!吴恩达机器学习课程笔记.pdf

    个人认为:吴恩达老师的机器学习课程,是初学者入门机器学习的最好的课程!我们整理了笔记(336页),复现的Python代码等资源,文末提供下载. 课程简介 课程地址:https://www.course ...

  7. 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)

    目录 1-1机器学习的相关名词 1-2 什么是机器学习? 1.definition 定义 2.主要的机器学习算法的分类 1-3有监督学习及常用算法 1.定义 2.两种数据类型补充:categorica ...

  8. 【CV】吴恩达机器学习课程笔记 | 第1-2章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量 ...

  9. 【CV】吴恩达机器学习课程笔记第18章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 18 应用案例:照片OCR 18-1 问题描述与流程(pi ...

最新文章

  1. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例
  2. php对二维数据排序
  3. Input.GetAxis 获取轴
  4. python读取json配置文件_Python简单读取json文件功能示例
  5. 商汤科技实习生招募专场 | 与大咖畅聊AI拿OFFER,赢商汤年会入场券
  6. 布隆过滤器 redis_redis布隆过滤器
  7. 11 SD配置-企业结构-分配-设置销售范围(Sales Area)
  8. Spring AOP 的切点切在Controller上没有起作用的问题。
  9. BZOJ4025 二分图
  10. 浅谈软件质量保证SQA角色和职能
  11. Android Layout 布局属性全解
  12. DH算法图解+数学证明
  13. 数字化智慧工地,工地智能监管一体化解决方案
  14. 北交《交通需求管理》
  15. android studio 连接夜神模拟器
  16. 什么是NFC,NFC和RFID对比有什么区别?
  17. 量化交易:金融算法交易的前沿发展
  18. Sinkhorn算法
  19. 数字改造有色金属产业链,发挥产业优势效能
  20. 程序员提升码字代码速度网站

热门文章

  1. 服务器一键部署可道云KODBOX网盘云盘
  2. 利用python进行保险数据分析及可视化
  3. 详细分析Win11与Win10哪个好用
  4. 钉钉机器人项目踩过的坑
  5. 手把手教处理串口数据
  6. Plants vs. Zombies ZOJ - 4062
  7. ChinaSoft 论坛巡礼 | 面向可解释人工智能的软件工程方法与技术论坛
  8. Bcftools的下载与安装
  9. 程序分析-Slice,深度神经网络动态slice
  10. 费舍尔方法(Fisher‘s method)的数学原理解释