上一篇:机器学习是什么?https://mp.csdn.net/mp_blog/creation/editor/122619296
目录
2.单变量回归
2.1模型表示
我们先从一个例子开始:这个例子是关于预测房屋价格的,我们已知这样一个数据集:
横坐标表示房屋的面积,纵坐标表示房屋的价格。我们的目的是预测当房屋的面积确定时,房屋的价格是多少。比方说,如果你朋友的房子是1250平方尺大小,你通过上图的数据集就可以预测出能卖多少钱,那么,我们具体应该怎么预测呢?
为了便于之后的理解,我们有必要先了解训练集和测试集的概念(相关概念在上一篇中也提到过,也可直接看上一篇中的解释),已经知道的同学可以直接隔过去下一段:
为了测试机器学习算法的效果,通常使用两套独立的样本集:训练集和测试集。当机器学习程序开始运行时,使用训练集作为算法的输入,训练完成之后的那个东西叫模型,我们可以借助模型,通过输入测试集来预测目标变量。比较预测出来的目标变量和实际目标变量之间的差别,就可以算出算法的实际精确度。
你可以做的一件事就是构建一个模型,比如说拟合一条直线,如上图所示,从这个模型上来看,也许你可以告诉你的朋友,他能以大约 220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子,或者更确切的说这是一个回归问题。
以此例为基础,假使我们上例的训练集如下表所示:
为了将来我们描述这个训练集,我们做了如下的规定:★★★★★
𝑚 代表训练集中实例的数量
𝑥 代表特征/输入变量
𝑦 代表目标变量/输出变量
(𝑥, 𝑦) 代表训练集中的实例
代表第𝑖 个观察实例
ℎ 代表学习算法的解决方案或函数也称为假设(hypothesis)
ℎ 代表 hypothesis(假设),ℎ表示一个函数,也是模型,输入是房屋尺寸大小,输出是房屋的价格。
我们需要借助h来预测房价。实际上 ,我们是要将训练集“喂”给我们的学习算法,进而学习得到一个假设ℎ,然后将我们要预测的房屋 的尺寸作为输入变量输入给ℎ,预测出该房屋的交易价格作为输出变量输出为结果。那么,既然h是一个函数,那么它长什么样子呢?
一种可能的表达方式为:ℎ𝜃 (𝑥) = 𝜃0 + 𝜃1𝑥,因为只含有一个输入变量,因此这样的问题叫作单变量线性回归问题。
2.2代价函数
我们用假设函数来表示我们预测结果的模型。那么,这个模型好还是不好呢?我们需要有一个判别标准,这个标准就叫作代价函数。
代价函数:
说一下我对这个公式的理解:通过训练集我们可以得到假设函数h,即我们建立的模型,y是测试集。通过输入测试集的自变量向函数h和y,得出预测出来的结果与实际的结果,让两者相减得到误差,通过误差可以看出我们预测的结果好还是不好,如果误差小于某一个极小数时,我们可以认为我们建立的模型非常成功,反之则是失败。求和的目的是把所有预测值的误差加起来,平方的目的是保证求和的时候,误差是正数,除以m是求平均误差,除以2是为了今后对代价函数求导方便的一种手段。
举个例子:比如说我们有如下的数据集
三个样本点,分别为(1,1),(2,2),(3,3),且已知我们通过训练集,拟合了一条直线方程(假设函数)是:。
那么:
如果假设函数是,那么易知.通过对比这两个式子可知,当取最小值时,误差最小,假设函数拟合的最好。
即我们的目的变成了,求当 取最小值时,将其所对应的参数,代入ℎ𝜃 (𝑥) = 𝜃0 + 𝜃1𝑥这个式子中即得假设函数。
那么如何求 的最小值,变成了我们最主要的问题,解决这个问题的方法有很多,这里我们介绍一种最常用的方法:梯度下降(下文有介绍)
2.2.1代价函数的直观理解I
我们先理解含有一个参数的代价函数。还以上面的那个例子为例,我们来探究:假设函数与代价函数之间有什么关系。
观察如下数据集:
已知:
,当时,,由
可算出,如下图所示
同理,当时可画出如下
同理,当时
由此类推,当取所以取值时, 的图像如下图所示
由图像我们可以知道,当取最小值时的参数所对应的假设函数是拟合数据最好的直线。
2.2.2代价函数的直观理解II
那么,再增加一个参数呢?我们知道,有时候我们需要在一大推数据中拟合出来的直线不一定非得过原点,那么这个时候就需要再增加一个参数,那么,的图像该怎么表示呢?
多了一个参数相当于多了一个维度,图像也由一开始的二维拓展到了三维。求代价函数的最小值仍然是我们的目标。下面介绍求代价函数最小值的方法:梯度下降
2.3梯度下降
梯度下降的目的:求代价函数的最小值
那么如何更好的理解“梯度下降”呢?其实我们可以把它想象成“下山”的场景。如何从高山上以最快的速度走到山脚呢?那就是:以我们所在的位置为基准,寻找该位置最陡峭的方向,然后沿该方向走一段路程,并且每走一段路程,都要重新寻找当前位置最陡峭的方向,然后沿新的方向再走一段路程,反复采用以上的方法,就能以最快的速度走到山脚下。
在下山的过程中,我们每走一段路,都需要确认新位置最陡峭的方向。如何“确认最陡峭的方向”这个问题最为关键。而“梯度”就可以反映最陡峭的方向。
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。想要进一步深入了解梯度的可以点击一下
那么具体我们应该怎么做呢?
最核心的思路是:实时更新参数
由上面的内容,我们知道:
为什么要实时更新参数?我们知道,在下山的过程中,因为我们每走一段路,就要确定新的方向,不断确定新的方向意味着代价函数的参数不断在变化,而我们要想获得新的参数就必须要在已知旧的参数的基础上获得。
我们需要不断重复更新参数的过程是(批量梯度下降):
其中𝑎是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向 向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
批量梯度下降的具体实现的步骤如下所示:
接下来我们将更深入的理解这个公式
2.3.1梯度下降的直观理解
描述:𝑎是学习率,它决定了我们下山过程中迈出的步子有多大。求导()的目的是为了确定下山的方向,等式右面的是旧的参数,左边的是新的参数,每走一步(每一次迭代)我们都需要确定新的参数,因为只有更新了参数才能确定下一步的方向。
需要注意的是:a虽然决定了我们迈出的步子的大小,但是,步子的大小却不仅仅是由a决定的,还与它后面的偏导数有关。就是我们前面提到的“梯度”,梯度的本质是一个向量,(有大小,有方向),其大小和a一同决定了迈出步子的大小,其方向决定了“下山”最快的方向。
所以,由此可见,a取一个适当的值是一个多么重要的事情啊。好,现在假设我们取的a值非常的好,那么让我们看看代价函数是怎样一步步地收敛到最小值的。
如下图所示:
先初始化当前所在位置,根据公式计算出梯度下降一步之后的位置,然后再以此位置为基础,让参数值减去学习率乘以该点的导数,得出再梯度下降一步之后的位置,即新的参数值。重复上面的步骤直到走到最低点。在此过程中,我们发现随着梯度下降法的运行,点移动的幅度会越来越小,这是因为,点越往下走,导数的值越小,而a不变,所以步幅会减小。
2.3.2梯度下降的线性回归
接下来我们让梯度下降与线性回归相结合(关键在于对代价函数求偏导):
如果你之前学过线性代数,你应该知道有一 种计算代价函数𝐽最小值的数值解法,不需要梯度下降这种迭代算法。在文章的最后,我们也会谈到这个方法,它可以在不需要多步梯度下降的情况下,也能解出代价函数𝐽的最小值,这是另一种称为正规方程(normal equations)的方法。实际上在数据量较大的情况下,梯度下降法比正规方程要更适用一些。
3.线性代数的回顾
3.1矩阵和向量
矩阵的定义:由m×n个数排成的m行n列数表,称为一个m行n列矩阵,简称m×n矩阵。例如,如图:这是一个3×5矩阵,即3行5列。
怎么表示矩阵里的元素?
指第i行第j列的元素,例如上图:=2
向量是一种特殊的矩阵,即列矩阵,如:
3.2加法和标量乘法
矩阵的加法: 只有当相加的矩阵行数和列数相等时才能相加
例:
标量乘法(矩阵的数乘):每个元素都要乘
3.3矩阵向量乘法
矩阵和向量的乘法:𝑚 × 𝑛的矩阵乘以𝑛 × 1的向量,得到的是𝑚 × 1的向量
例 :
3.4矩阵的乘法
两个矩阵相乘,前提条件是:第一个矩阵的列等于第二个矩阵的行。矩阵相乘的规则为:
例如:
3.5矩阵乘法的性质
矩阵乘法满足下列运算规律:
结合律 (AB)C=A(BC);
数乘结合律 k(AB)=(kA)B=A(kB),k为数;
分配律 A(B+C)=AB+AC,(B+C)A=BA+CA.
3.6逆,转置
矩阵的逆:
前面我们定义了矩阵的加法,减法和乘法三种运算。自然的,欲在矩阵中引入类似于除法的概念,其关键在于引入类似于倒数的概念。
对于任意方阵A,有AI=IA=A.所以,从矩阵的乘法角度来看,单位矩阵I类似于数1的作用。一个数a≠0的倒数可用来刻画,类似的,我们引入逆矩阵的概念。
定义 设A为n阶方阵,若存在n阶方阵B,使得AB=BA=I,则称A是可逆矩阵,简称A可逆,并称B是A的逆矩阵。
定理1 设A是逆矩阵,则它的逆矩阵是唯一的。
有定义可知,若B是A的逆矩阵,则A亦是B的逆矩阵,它们互为逆矩阵。
若A可逆,则A的逆矩阵存在,记为,且
矩阵的转置:
把一个矩阵A的行列互换,所得到的矩阵称为A的转置,记为.确切的定义如下
定义 设
则称
为A的转置。
显然,m×n矩阵的转置是n×m矩阵.
矩阵的转置满足以下规律:
k为数
4.多变量线性回归
4.1多维特征
目前为止,我们探讨了单变量线性回归模型,现在我们对房价模型增加更多的特征,例如房间的数量,楼层数和房屋的年龄等,构成一个含有多变量的模型,模型中的特征为(x1,x2,...,xn)。
增添更多特征后,我们引入新的注释:
n 代表特征的数量
代表第i个训练实例,表示特征矩阵中的第i行,是一个向量,比如说,上图的
代表特征矩阵中第 𝑖 行的第 𝑗 个特征,也就是第 𝑖 个训练实例的第 𝑗 个特征。
这个公式中有n+1个参数和n个变量,为了能够使公式简化一些,引入,则公式转化为:
此时该模型中的参数和变量都是n+1维的向量,可以写成如下的形式:
,所以,其中上标T代表矩阵的转置。
4.2多变量梯度下降
其中,
4.2.1梯度下降法实践1-特征缩放
解决的方法是尝试将所有特征的尺度都尽量缩放到-1 到 1 之间,如图:
这样迭代的次数会大大降低。那么具体我们应该怎么做呢?
4.2.2梯度下降法实践2-学习率
4.3特征和多项式回归
如预测房价问题:
如果我们只有房屋所占面积的长度和宽度两个特征变量,那么假设函数应该写成这个样子:其中,是长度,是宽度。当然了,为了计算方便,我们也可以将假设函数改写成这个样子:,其中,X是面积。
但是,线性回归并不适用于所有的数据,有时我们需要曲线来适应我们的数据。比如是一个二次方模型:
或者是一个三次方模型:
通常我们需要先观察数据然后再决定准备尝试怎样的模型。 另外,我们可以令: ,从而将模型转化为线性回归模型。
注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要
4.4正规方程
正规方程是求代价函数最小值的另一种方法,它可以通过一个公式直接把参数求出来。由前面我们知道:,我们也可以把它改写成下面的形式
看下图:
怎么求的最小值呢?很容易想到,令.
注意:对于那些不可逆的矩阵,正规方程是不能用的。
梯度下降和正规方程都能求代价函数的最小值,那么它们之间有什么区别呢?
梯度下降与正规方程的比较:
总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数𝜃的替代方法。 具体地说,只要特征变量数量小于一万,我通常使用正规方程法,而不使用梯度下降法。
下一篇:逻辑回归