玉山县建设局的网站,做网站网站建设专业公司哪家好,集团门户网站建设费用科目,三只松鼠软文范例500字继续是机器学习课程的笔记#xff0c;这节课介绍的是多变量的线性回归。
多变量线性回归
多维特征
上节课介绍的是单变量的线性回归#xff0c;这节课则是进一步介绍多变量的线性回归方法。 现在假设在房屋问题中增加更多的特征#xff0c;例如房间数#xff0c;楼层等…继续是机器学习课程的笔记这节课介绍的是多变量的线性回归。
多变量线性回归
多维特征
上节课介绍的是单变量的线性回归这节课则是进一步介绍多变量的线性回归方法。 现在假设在房屋问题中增加更多的特征例如房间数楼层等构成一个含有多个变量的模型模型中的特征为(x1,x2,…,xn)(x_1,x_2,\ldots,x_n). 如下图所示 在增加这么多特征后需要引入一系列新的注释
n 代表特征的数量x(i)x^{(i)}代表第i个训练实例是特征矩阵中的第i行是一个向量x(i)jx_j^{(i)}代表特征矩阵中第i行的第j个特征也是第i个训练实例的第j个特征
所以在如上图中特征数量n4然后x(2)⎡⎣⎢⎢⎢14163240⎤⎦⎥⎥⎥x^{(2)}=\left[\begin{matrix} 1416 \\ 3 \\ 2 \\ 40 \end{matrix} \right] ,这表示的就是图中第二行的数据也是第二个训练实例的特征而x(2)32x^{(2)}_3 = 2,表示的就是第二行第3列的数据。
现在支持多变量的假设h表示为
hθ(x)θ0θ1x1θ2x2⋯θnxnh_\theta (x)= \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n这个公式中有n1个参数和n个变量为了让公式可以简化一些引入x0x_0 1,则公式变为 hθ(x)θ0x0θ1x1θ2x2⋯θnxnh_\theta (x)= \theta_0 x_0+ \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n此时模型中的参数是一个n1维的向量任何一个训练实例也是n1维的向量特征矩阵X的维度是
m*(n1)。 此时特征矩阵x⎡⎣⎢⎢⎢⎢⎢⎢⎢x0x1x2⋮xn⎤⎦⎥⎥⎥⎥⎥⎥⎥x=\left[\begin{matrix} x_0 \\ x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right],参数θ⎡⎣⎢⎢⎢⎢⎢⎢⎢θ0θ1θ2⋮θn⎤⎦⎥⎥⎥⎥⎥⎥⎥\theta = \left[\begin{matrix} \theta_0 \\ \theta_1 \\ \theta_2 \\ \vdots \\ \theta_n \end{matrix} \right],所以假设
h就可以如下表示 hθ(x)θTx
h_\theta (x) = \theta^T x上述公式中的
T表示矩阵转置。多变量梯度下降
与单变量一样我们也需要为多变量构建一个代价函数同样也是一个所有建模误差的平方和即:
J(θ0,θ1,…,θn)12m∑i1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1,\ldots,\theta_n) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2目标也是找到让代价函数最小的一系列参数使用的也是梯度下降法多变量线性回归的批量梯度下降算法如下所示Repeat{ θj:θj−α∂∂θjJ(θ0,θ1,…,θn)\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0,\theta_1,\ldots,\theta_n)} 也就是 Repeat{ θj:θj−α∂∂θj12m∑i1m(hθ(x(i))−y(i))2\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2} 通过求导数后可以得到 Repeat{ θj:θj−α1m∑i1m(hθ(x(i))−y(i))⋅x(i)j(同时更新参数θj,forj0,1,…,n)\theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_j^{(i)} \\(同时更新参数\theta_j, for \; j = 0,1,\ldots,n)} 其更新方法如下所示:
θ0:θ0−α1m∑i1m(hθ(x(i))−y(i))⋅x(i)0θ1:θ1−α1m∑i1m(hθ(x(i))−y(i))⋅x(i)1θ2:θ2−α1m∑i1m(hθ(x(i))−y(i))⋅x(i)2…
\theta_0 := \theta_0 - \alpha \frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_0^{(i)} \\\theta_1 := \theta_1 - \alpha \frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_1^{(i)} \\\theta_2 := \theta_2 - \alpha \frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})\cdot x_2^{(i)} \\\ldots特征缩放
在面对多特征问题的时候我们要保证这些特征都具有相近的尺度这将帮助梯度下降算法更快地收敛。
以房价问题为例假设我们使用两个特征房屋的尺寸和房间的数量前者的值是0-2000平方英尺而后者的值是0-5以两个参数分别为横纵坐标绘制代价函数的等高线图如下图所示能看出图像会显得很扁梯度下降算法需要非常多次的迭代才能收敛。 解决的方法就是尝试将所有特质的尺度都尽量缩放到−1≤xi≤1-1\le x_i \le 1之间。最简单的方法如下所示
xnxn−μnSn其中μn是平均值Sn可以是标准差或者是最大值减去最小值
x_n = \frac{x_n-\mu_n}{S_n} \\其中\mu_n是平均值,S_n可以是标准差或者是最大值减去最小值学习率
对于梯度下降我们还需要解决的问题有
如何判断当前的梯度下降是正常工作即最终可以收敛如何选择一个学习率
对于第一个问题由于迭代次数会随着模型不同而不同我们也不能提前预知但可以通过绘制迭代次数和代价函数的图表来观察算法在何时收敛。如下图所示 由上图所示当曲线在每次迭代后都是呈下降趋势那么可以表明梯度下降是正常工作的然后图中可以看出在迭代次数达到400后曲线基本是平坦的可以说明梯度下降法在迭代到这个次数后已经收敛了。
当然也有一些自动测试是否收敛的例如将代价函数的变化值与某个阈值(如0.001)进行比较。但选择这个阈值是比较困难的所以通常看上面的图表会更好。
对于第二个问题如何选择一个学习率。由于梯度下降算法的每次迭代都会受到学习率的影响如果学习率过小那么达到收敛需要的迭代次数会非常大但如果学习率过大每次迭代可能不会减小代价函数可能会越过局部最小值导致无法收敛。
通常可以考虑尝试这些学习率α0.001,0.003,0.01,0.03,0.1,0.3,1,…\alpha = 0.001,0.003,0.01,0.03,0.1,0.3,1,\ldots。
特征和多项式回归
线性回归并不适用于所有数据有时需要曲线来适应数据比如一个二次方模型hθ(x)θ0θ1x1θ2x22h_\theta(x) = \theta_0 + \theta_1 x_1+\theta_2 x_2^2或者三次方模型hθ(x)θ0θ1x1θ2x22θ3x33h_\theta(x) = \theta_0 + \theta_1 x_1+\theta_2 x_2^2+\theta_3 x_3^3 而这就是多项式回归比如在房屋问题中我们可以选择3个特征一个房屋的价格房屋的面积房屋的体积这样就会用到三次方模型其曲线如下图所示 当然如果我们希望继续使用线性回归模型可以令
x2x22x3x33x_2 = x_2^2 \\
x_3 = x_3^3这样就可以将模型转换为线性回归模型hθ(x)θ0θ1x1θ2x2θ3x3h_\theta(x) = \theta_0 + \theta_1 x_1+\theta_2 x_2+\theta_3 x_3。但是如果使用多项式回归模型在运行梯度下降算法前有必要使用特征缩放。
正规方程(Normal Equation)
到目前为止我们都是使用梯度下降算法来解决线性回归问题但是对于某些线性回归问题正规方程方法是更好的解决方案。 正规方程是通过求解下面的方程来找出使得代价函数最小的参数的 ∂∂θjJ(θj)0
\frac{\partial}{\partial \theta_j} J(\theta_j) = 0假设我们的数据如下所示 ![此处输入图片的描述][1] 然后我们在每行数据都添加一个x01x_0=1可以得到下列表格数据 那么可以得到我们的训练集特征矩阵X以及训练结果向量y
X⎡⎣⎢⎢⎢11112104141615348525332122145403036⎤⎦⎥⎥⎥y⎡⎣⎢⎢⎢460232315178⎤⎦⎥⎥⎥
X = \left[\begin{matrix}1 (XTX)−1XTy\color{red}{\theta = (X^TX)^{-1}X^Ty},其中T代表矩阵转置上标-1表示矩阵的逆。注意对于那些不可逆的矩阵(通常是因为特征之间不独立如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征也有可能是因为特征数据量大于训练集的数量)正规方程方法是不能用的。 梯度下降法与正规方程的比较
下面给出梯度下降方法和正规方法的比较
梯度下降正规方程需要选择学习率α\alpha不需要需要多次迭代一次运算得到当特征量n大时也能较好使用如果特征数量n比较大则运算代价大因为矩阵逆的运算时间复杂度为O(n3)O(n^3),通常来说n小于10000还是可以接受的适用于各种类型的模型只适用于线性模型不适合逻辑回归模型等其他模型
小结
本节课内容主要是介绍了多变量的线性回归方法跟单变量线性回归方法还是比较类型的只是需要增加多几个变量同样是使用误差平方和函数作为代价函数然后也是使用梯度下降算法。但需要注意的是由于是多个变量每个变量的取值范围可能相差很大这就需要使用特征缩放通常是将每个特征缩放到[−1,1][-1,1]然后就是介绍了如何选择学习率以及判断梯度下降是否收敛的问题。
接着就是介绍了多项式回归方法这是由于线性回归可能对某些数据并不适用所以需要使用如二次方模型三次方模型等训练数据但可以通过变量转换来重新使用线性回归模型但是需要使用特征缩放方法。
最后就是介绍了一种跟梯度下降方法有同样效果的正规方程方法主要是通过求解∂∂θjJ(θj)0\frac{\partial}{\partial \theta_j} J(\theta_j) = 0来得到参数值并给出两种方法的对比。