吴恩达机器学习笔记(1)

2021-03-28  本文已影响0人  python小白22

一.初识机器学习

1.监督学习

在监督学习中,训练数据既有特征又有标签,通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。监督学习可以分为回归问题和分类问题。回归问题是利用训练出的模型,预测连续的数值输出;分类问题是预测离散值的输出。

2.无监督学习

无监督学习是给算法大量的数据,要求它找出数据的类型结构。无监督学习的数据没有标签,或是所有数据都是同一种标签。聚类算法就属于无监督学习。

二.单变量线性回归

1.模型描述

线性回归就是用直线模型来拟合数据,它解决的是最小化问题,要求预测值与准确值之间的差异最小。
\begin{cases} 假设函数(hypothesis):h_\theta (x)=\theta_0+\theta_1 x \\ 参数(parameters):\theta_0,\theta_1\\ 损失函数(cost function):J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})^2}\\ 目标(goal):min_{\theta_0,\theta_1} J(\theta_0,\theta_1) \end{cases}

2.梯度下降法
(1)梯度下降法思路

给定\theta_0\theta_1的初始值(通常取0);不断更新\theta_0\theta_1,使得J(\theta_0,\theta_1)变小,直到找到最小值。

(2)梯度下降法的参数更新公式:

\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)
其中,\alpha是学习率,即控制梯度下降迈出的步长;\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)是导数项,即梯度下降的方向。要注意,在更新时必须要同时更新\theta_0\theta_1
梯度下降时,不用刻意减小\alpha,因为随着离最小值越来越近,导数项(斜率)会越来越小,所以下降幅度会自动变小。

3.线性回归中的梯度下降
(1)线性回归中的更新公式

\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)=\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})^2}=\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^{m}{(\theta_0+\theta_1x^{(i)}-y^{(i)})^2}
\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})},\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})x^{(i)}}.
所以 \theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})},\theta_1:=\theta_1-\alpha\frac{1}{m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})x^{(i)}}
重复上述更新,直至收敛。需要强调的是,梯度下降法容易陷入局部最优的问题,但如果目标函数为凸函数,则梯度下降法只有全局最优解,没有局部最优解,线性回归的损失函数就是凸函数。

三.多变量线性回归

1.模型描述

多变量线性回归模型和单变量线性回归模型类似,单变量线性回归模型每个训练样本有一个特征,而多变量线性回归模型每个训练样本有多个特征。
\begin{cases} 假设函数(hypothesis):h_\theta (x)=\theta_0x_0+\theta_1 x_1+...+\theta_nx_n (x_0=1)\\ 参数(parameters):\theta_0,\theta_1,...,\theta_n\\ 损失函数(cost function):J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})^2}\\ 目标(goal):min_{\theta_0,\theta_1,...,\theta_n} J(\theta_0,\theta_1,...,\theta_n) \end{cases}
需要注意的是:线性回归中的“线性”的含义是指预测值h_\theta(x)与未知的回归系数\theta_0,\theta_1,...,\theta_n是线性的,并不是指跟特征x是线性的。所以可以根据解决问题的不同,选择合适的特征去拟合数据(比如将已知的特征相乘等)。

2.多变量线性回归的梯度下降法
(1)更新公式

\theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}{(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}}(j=0,1,...,n)
重复上式,直至收敛。

(2)多元梯度下降法演练

特征缩放:在梯度下降中,如果每个特征值的范围相差太大,则损失函数的等高线呈椭圆状,会导致梯度下降来回震荡(下降方向与等高线切线垂直),需要很长时间才会收敛;所以如果能确保每个特征值都在相近的范围内,这样梯度下降就可以更快地收敛。
特征缩放的方法主要有:每个特征值都除以它的最大值;或均值归一化\frac{x-\mu}{max-min}等;具体方法视情况而定。
学习率的选择:一般可以用损失函数的值和迭代次数的函数来判断梯度下降是否收敛。如图:

如果函数如上述三种情况所示,则都说明学习率过大,应该减小学习率。只有当函数图像如下图所示时,才说明梯度下降法是收敛的:
总之,只要学习率足够小,则每次迭代后的损失函数都会下降,但如果学习率过小,则梯度下降法可能收敛速度过慢。
3.正规方程法

正规方程法是通过求解该方程:\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,...,\theta_n)=0来寻找使得损失函数最小的 \theta

假设有m个训练样本:(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)}),和n个特征变量。
x^{(i)} = \left[ \begin{matrix} x_0^{(i)}\\ x_1^{(i)}\\ ...\\ x_n^{(i)}\\ \end{matrix} \right],设计矩阵X = \left[ \begin{matrix} x^{(1)T}\\ x^{(2)T}\\ ...\\ x^{(m)T}\\ \end{matrix} \right] _{m*(n+1)},y = \left[ \begin{matrix} y^{(1)}\\ y^{(2)}\\ ...\\ y^{(m)}\\ \end{matrix} \right]

\theta=(X^TX)^{-1}X^Ty。具体数学推导可参考链接

4.梯度下降法与正规方程法比较

梯度下降法缺点:(1)需要选择合适的学习率;(2)需要多次迭代,计算较慢。(这些缺点正规方程法都可避免)
梯度下降法优点:特征变量很多时,也能运行的相当好。(但特征变量过多的话,正规方程法计算逆的速度会很慢)
所以,当n较小时,选正规方程法;当n>10000时,更倾向于梯度下降法。

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

若矩阵不可逆,首先看是否有多余特征,比如x_1x_2线性相关,则可删除其中一个;如果没有多余的特征,则检查是否有过多的特征,如果特征过多,则考虑删除一些影响很小的特征或考虑正则化。

四.总结

这两周学习了吴恩达的机器学习视频,主要是线性回归的部分,内容都还是比较基础的,之前也都学习过,但之前的学习主要是从统计角度的理解,从机器学习的角度重新学习后,也有一些新的收获。

上一篇下一篇

猜你喜欢

热点阅读