吴恩达《机器学习》学习笔记三——多变量线性回归

吴恩达《机器学习》学习笔记三——多变量线性回归

  • 一、 多元线性回归问题介绍
    • 1.一些定义
    • 2.假设函数
  • 二、 多元梯度下降法
    • 1. 梯度下降法实用技巧:特征缩放
    • 2. 梯度下降法的学习率
  • 三、 特征选择与多项式回归
  • 四、 正规方程法
    • 1. 一些定义
    • 2. 正规方程解的公式
    • 3. 梯度下降法和正规方程法的比较
    • 4. 正规方程法在矩阵不可逆的情况下的解决

课程链接: https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118

上一个笔记介绍了单输入变量(一元)线性回归问题,即只考虑了一个属性对房价的影响,但很多时候会有多个因素对输出产生影响,所以这次笔记主要针对多元线性回归问题,是对笔记二的推广。

一、 多元线性回归问题介绍

1.一些定义

还是以房价预测问题为例,与一元线性回归问题所不同的是,将有多个因素来共同决定房价,如下表所示,除了面积之外,还有卧室数量、楼层数量、房屋年纪共四个属性作为输入,分别记为x1、x2、x3、x4。
在这里插入图片描述
在这里,我们将属性(特征)的数量记为n,这里n=4;数据样本数量记为m,如m=47。x(i)表示第i个数据的所有属性,是对数据集的索引,因为这里是多属性,所以可以表示为一个向量,如x(2) = [1416 3 2 40]T;而x_j(i)表示第i个数据样本的第j个属性值,是对具体属性的索引,如x_3(2)=2。

2.假设函数

还是考虑采用一次线性函数,但是不再是一元,而是多元。再次强调,并非一定采用一次线性函数的形式,可以采用别的形式如二次、指数等来进行模型的求解,这里是为了介绍线性回归问题所以采用线性函数。

针对上述提出的四个属性,假设函数可以改写为如下形式:
在这里插入图片描述
再推广一下到一般形式:
在这里插入图片描述
这里有一个小技巧,为了后面表示的方便,我们定义一个x0=1,那么有
在这里插入图片描述
下面,令
在这里插入图片描述
那么假设函数又能用向量相乘的方式表示:
在这里插入图片描述
这么做的意义是,在计算机的一些库中,向量相乘的计算速度要比普通的相乘相加来得快,当数据量非常庞大时,该操作可以有效提升效率。

二、 多元梯度下降法

多元线性回归问题的假设函数、参数、代价函数和对应的梯度下降法如下图所示。
在这里插入图片描述
这里需要注意的是,我们尽量使用向量的计算来代替n个变量之间的计算,所以参数θ_0,θ_1,…,θ_n可以用一个n+1维的向量表示θ=[θ_0 θ_1…θ_n]^T。

下面具体看一下梯度下降的求偏导部分,如下所示:
在这里插入图片描述
与一元线性回归问题相比,推广到了更一般的情况,而其θ_0,θ_1的表达式就是一元的表达式。

1. 梯度下降法实用技巧:特征缩放

主要的思想是,如果数据的各个属性的值的范围都有相同的尺度,那么梯度下降法将能够更快收敛。可以通过下面的图来说明:
在这里插入图片描述
x1的值的范围在0-2000,而x2的范围是1-5,做出的等高线图如左图所示,因为尺度差异过大,非常细长,从而导致很不利于梯度下降法收敛到最优点,红色的线是梯度下降的过程。解决办法可以是将x1和x2都标准化到0-1的范围,等高线图将比较均匀,如右边的图所示,不论初始位置在哪,都容易收敛到最优点。

一般我们特征缩放的范围都会尽量使他靠近-1到1这个大致范围,这不固定,0 ~ 3或-2 ~ 0.5这种范围都可以接受,但是-100 ~ 100或-0.0001 ~ 0.0001这种就相差太大,最好进行特征缩放。
在这里插入图片描述
说到底,特征缩放其实就是数据预处理的一个体现——标准化,以后会经常遇到需要标准化的数据,标准化的方法也有很多,如下面这种均值标准化,通过减去均值除以标准差后进行范围的标准化,后面有机会我会进行标准化方法的总结。
在这里插入图片描述

2. 梯度下降法的学习率

主要介绍调试以及如何选择学习率。
在这里插入图片描述
在梯度下降算法迭代的过程中,如何判断是在朝着正确的方向计算,可以绘制一张迭代次数与代价函数的曲线图,如下所示,如果代价函数J(θ)随着迭代次数不断减小,则是正确的。曲线下降到后期可能已经趋于平坦,则意味着已经达到收敛,此时几乎就是最优点。
在这里插入图片描述
一些不正确的的代价函数变化曲线如下所示,说明没有在正确工作。一般的解决办法是减小学习率。
在这里插入图片描述
理论上说,只要学习率足够小,总能最终收敛到局部最优点,但是如果学习率太小的话,收敛所需的时间也是非常漫长的,这是需要综合考虑的问题,也就是调参的工作。

总结一下,一般判断梯度下降是否在正确工作,会绘制迭代次数和代价函数的变化曲线图来判断,而且可以通过调节学习率来达到更好的结果,学习率的选择一般需要尝试,并不断改善。
在这里插入图片描述

三、 特征选择与多项式回归

在之前的讨论中,数据集提供了什么属性(特征),我们就全部进行了使用,其实特征的使用与否可以人为选择,甚至可以根据现有的特征创造新的特征,只要是对问题的解决更合理即可。如下图所示,给了房屋的宽度和深度特征,但是我们从现实情况考虑,应该使用房屋的面积来衡量更为合理,所以定义新的特征面积等于宽度×深度,然后使用该新特征去计算。
在这里插入图片描述
还有一点,之前提到过假设函数的形式并不唯一,这里是为了讲解线性回归问题才给定的多元线性模型,还可以使用二次,三次模型来拟合,如下图所示,这里为简单起见,只考虑一个特征。
在这里插入图片描述
而这些其他的模型,其实也可以使用多元线性模型来拟合,只需要将二次项、三次项或平方根项当成一个新的属性即可。

四、 正规方程法

梯度下降法是通过不断的迭代来求得最优点,而下面介绍的正规方程法,可以依据公式直接求得最优解。
在这里插入图片描述
从微积分的知识可以知道,想要求使得函数达到最小的自变量的值,可以对该函数求偏导并使之等于0,求解出的自变量的值就是最优解。但是当函数复杂而且变量比较多时,这样做非常复杂。
在这里插入图片描述

1. 一些定义

还是使用房价预测的例子,假设有包含四条数据的数据集如下:
在这里插入图片描述
定义X,y为
在这里插入图片描述
更一般的形式如下图:
在这里插入图片描述

2. 正规方程解的公式

在这里插入图片描述
该公式由来的推导过程这里暂时先不写,有需要可以看深度之眼提供的西瓜书推导课程,详细到令人发指,非常良心的课程:
深度之眼西瓜书推导课程

3. 梯度下降法和正规方程法的比较

先上图
在这里插入图片描述
(1) 梯度下降法需要选择学习率,需要需要很多次的迭代,而且经常需要绘制代价函数变化曲线来判断过程是否正确,而正规方程法不需要,它可以依据公式直接求解。
(2) 当特征数量非常庞大时,梯度下降法法依然可以很好的工作,而正规方程因为涉及到逆矩阵的计算,计算复杂度会飞速上升,计算速度很慢,而且梯度下降是一种通用方法,正规方程是根据线性回归的特点推导出来的,用在别的模型上就很可能不适用,如后面的逻辑回归。

所以,当特征数量不是很庞大时,正规方程法是梯度下降法很好的替代方法,但是当特征数量很庞大或是用到其他模型时,梯度下降法会更好。

4. 正规方程法在矩阵不可逆的情况下的解决

从正规方程的求解公式中可以看到,需要进行一次求逆矩阵的运算,那么必然存在逆矩阵不存在的情况,这时该如何求解?
在这里插入图片描述
主要有两个原因会导致不可逆:
在这里插入图片描述
一个是存在重复多余的特征,像面积特征有两个,一个用平方米做单位,一个用平方英尺做单位,其实是重复的,那么我们需要去掉。

还有可能是特征数太多,甚至超过了样本数,如100个特征却只有10个数据,则很可能导致不可逆,那么可以通过删除一些特征或者采用正则化的方法来解决。正则化的方法后续会讲到。这是笼统的解释,更数学的解释可以看深度之眼的西瓜书的课程,会一步步推导出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五大核心构成的AIoT,正在遭遇三大挑战,两条突破口外还有什么?

来源:物联网智库随着IoT与AI逐步走向融合,AIoT正将以全新的方式改变人们的生活。一、新业务需求近年来,物联网呈现突飞猛进的发展态势。根据中商情报网的数据,2018年全球物联网设备已经达到70亿台;到2020年&#xff0c…

机器学习中防止过拟合的方法总结

来自机器学习成长之路公众号 在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(…

iOS:面向对象的思想使用sqlite数据库

SQLite支持的常见数据类型如下所示。–INTEGER 有符号的整数类型–REAL 浮点类型–TEXT 字符串类型,采用UTF-8和UTF-16字符编码–BLOB 二进制大对象类型,能够存放任何二进制数据(C语言中)使用步骤:1.新建项目时,先导入系统框架(C语言). (libsqlite3&…

吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码一、问题介绍二、解决过程及代码讲解三、函数解释1. pandas.read_csv()函数2. DataFrame.head()函数3. Dataframe.insert()函数课程链接: https://www.bilibili.com/video/BV…

从IoT World 2019看全球IoT九大发展趋势

来源:全球物联网观察美国时间5月14日,IoT World2019在美国硅谷圣克拉拉会议中心举行,今年的主题是“工业与IOT的交互”,从大会主题演讲内容和现场产品展示来看,随着5G的商用和人工智能技术的大面积落地,IoT…

TensorFlow实现单隐层神经网络

这里使用MNIST数据集,MNIST数据集的下载地址http://yann.lecun.com/exdb/mnist/ from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf mnist input_data.read_data_sets(r"D:\PycharmProjects\tensorflow\MNIST_data"…

美国一箭投放60颗卫星 马斯克组互联网“星链”

来源:新华网美国太空探索公司当地时间23日晚在美国佛罗里达州一处空军基地发射火箭,将60颗小卫星送入近地轨道。这标志着企业家埃隆马斯克组建互联网卫星群的“星链”项目迈出实质性一步,抢在电子商务巨头亚马逊公司创始人杰夫贝索斯的“柯伊…

Ubuntu 中Mysql 操作

一、mysql服务操作 0、查看数据库版本 sql-> status; 1、net start mysql //启动mysql服务 2、net stop mysql //停止mysql服务  3、mysql -h主机地址 -u用户名 -p用户密码 //进入mysql数据库 4、quit //退出mysql操作 5、mysqladmin -u用户名 -p旧密码 passwor…

吴恩达《机器学习》学习笔记五——逻辑回归

吴恩达《机器学习》学习笔记五——逻辑回归一、 分类(classification)1.定义2.阈值二、 逻辑(logistic)回归假设函数1.假设的表达式2.假设表达式的意义3.决策界限三、 代价函数1.平方误差函数的问题2.logistic回归的代价函数四、梯…

协方差与相关系数

定义: 协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。 期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为: 如果两个变量的变化趋势一致,也就是说如果其中一…

吴恩达《机器学习》学习笔记六——过拟合与正则化

吴恩达《机器学习》学习笔记六——过拟合与正则化一、 过拟合问题1.线性回归过拟合问题2.逻辑回归过拟合问题3.过拟合的解决二、 正则化后的代价函数1.正则化思想2.实际使用的正则化三、 正则化的线性回归1.梯度下降的情况2.正规方程的情况四、 正则化的逻辑回归1.梯度下降的情…

Swift - 数组排序方法(附样例)

下面通过一个样例演示如何对数组元素进行排序。数组内为自定义用户对象,最终要实现按用户名排序,数据如下: 1234var userList [UserInfo]()userList.append(UserInfo(name: "张三", phone: "4234"))userList.append(Use…

5G时代,智能工厂迎来4大改变!

来源:亿欧网作为新一代移动通信技术,5G技术切合了传统制造企业智能制造转型对无线网络的应用需求,能满足工业环境下设备互联和远程交互应用需求。在物联网、工业自动化控制、物流追踪、工业AR、云化机器人等工业应用领域,5G技术起…

主成分分析PCA以及特征值和特征向量的意义

定义: 主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。PCA的思想是将n维特征映射到k维上…

吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码一、无正则项的逻辑回归1.问题描述2.导入模块3.准备数据4.假设函数5.代价函数6.梯度下降7.拟合参数8.用训练集预测和验证9.寻找决策边界二、正则化逻辑回归1.准备数据2.特征映射3.正则化代价函数4.…

需要自己调研的框架,以及需要学习的内容

_webView 图文解析需要学习 Core Text 来解决图文混合的xml文件 项目中用到哪些数据持久化,什么场景下使用? http://www.cocoachina.com/ios/20150720/12610.html 解决问题的网站 CSDN.NETCocoaChina51CTO技术论坛特酷吧国外it技术论坛stack overflow 需…

Python获得一篇文档的不重复词列表并创建词向量

获得一篇文档的不重复词列表: def loadDataSet():postingList [[my, dog, has, flea, problems, help, please],[maybe, not, take, him, to, dog, park, stupid],[my, dalmation, is, so, cute, I, love, him],[stop, posting, stupid, worthless, garbage],[mr,…

从认知学到进化论,详述强化学习两大最新突破

来源:大数据文摘深层强化学习(deep RL)近年来在人工智能方面取得了令人瞩目的进步,在Atari游戏、围棋及无限制扑克等领域战胜了人类。通过将表征学习与奖励驱动行为相结合,深层强化学习又引发了心理学和神经科学领域的…

Python实现一个数组除以一个数

如果直接用python的一个list除以一个数,会报错: a [1.0, 1.0, 1.0] c a/3 print(c) TypeError: unsupported operand type(s) for /: list and int 使用Numpy可以轻松做到: import numpy as npa np.array([1,1,1]) c a/3 print(c)

吴恩达《机器学习》学习笔记九——神经网络相关(1)

吴恩达《机器学习》学习笔记九——神经网络相关(1)一、 非线性假设的问题二、 神经网络相关知识1.神经网络的大致历史2.神经网络的表示3.前向传播:向量化表示三、 例子与直觉理解1.问题描述:异或XOR、同或XNOR2.单个神经元如何计算…