吴恩达《机器学习》学习笔记三——多变量线性回归
- 一、 多元线性回归问题介绍
- 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个数据,则很可能导致不可逆,那么可以通过删除一些特征或者采用正则化的方法来解决。正则化的方法后续会讲到。这是笼统的解释,更数学的解释可以看深度之眼的西瓜书的课程,会一步步推导出来。