线性回归是利用数理统计中的回归分析,来肯定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,在机器学习中属于监督学习。在数据分析等领域应用十分普遍。算法
不少状况下咱们都用它进行预测,好比预测房屋价格。在这里用一个简单的例子来讲明,假设有一组房屋数据,为了理解方便,假设决订价格的只有房屋到市中心的距离:机器学习
Distance(km)函数 |
Price(¥/m2)学习 |
5spa |
1000003d |
10blog |
80000图片 |
15ci |
60000数据分析 |
25 |
50000 |
30 |
30000 |
从上面自拟的数据能够看到,距离越小价格就会越大。那么问题来了,假如你有一套房,距离市中心大约有8km,你想要知道大概能卖多少钱?这个时候线性回归就起做用了。
将数据大概地绘制成以下的图,因而可知这套房大体上能卖92000¥
这就是线性回归,它能够用来预测值。在现实中,决定性的因素绝对不止一个,数据每每是多维的,那就会变得有些复杂了,这时候就须要经过算法来实现了。在学习算法以前,能够先过一下有关的数学知识。
一、导数
导数这个概念在高中的时候就接触了,它的几何意义为函数y=f(x)在某一点处沿x轴正方向的变化率,通俗地讲,表明函数的斜率。
二、偏导数
偏导数的概念其实跟导数差很少,区别就在于偏导数通常是对于多元函数而言,y=f(x1,x2,…,xn)在某一点处沿某一坐标轴(x1,x2,…,xn)正方向的变化率。也就是说,函数对x1的偏导即为函数在x1方向上的变化率。
三、方向导数
方向导数是创建偏导数的基础上的一个数学定义,偏导是指在正方向的变化率,而方向导数是指在其余特定方向上的变化率。以二元函数为例,假设已知x,y方向上的偏导,那么方向导数就能够是图中蓝色箭头方向上的数值(不要被图片迷惑了,它能够是其余任意方向上的数值,并且它是个标量)。
四、梯度
梯度是一个向量,即有方向有大小,它的方向是最大方向导数的方向,它的值是最大方向导数的值。就跟介绍方向导数的图那样,蓝色的矢量,表明的就是梯度。
在线性回归中,回归方程为:,经过这个方程获得的预测值每每与真实值y之间会存在偏差。令偏差为
,则预测值与真实值之间的关系就能够表示为
,咱们但愿求出来的
使得偏差最小。所以,咱们假设
服从均值为0,方差为
的正态分布,根据正态分布的几率密度函数可得
,其中
==
。
为了使得偏差尽量的小,根据上式,咱们能够令,这个公式表示求使得预测值更接近于真实值的
值的几率,所以咱们但愿它的值越大越好。接下来进行最大似然估计:
,相比于累加,这个公式累乘计算的难度会更大,因此不妨把它转换成对数形式,以下图所示:
最后获得: ,在这个式子中,起关键做用的式子是
,咱们称它为代价函数(Cost Function)。咱们但愿代价函数越小越好,所以咱们须要求它的极小值,或者说局部最小值。假如只有一个,那么这个代价函数的图像能够这样表示:
能够看到,当曲线的斜率为0,即函数的导数值为0时,函数值最小。这只是对于一元函数而言,可事实上咱们的数据是不少维度的,所以咱们就须要经过梯度来获得咱们须要的值。因而,梯度降低算法就出现了。
梯度降低算法是这样的:
repeat until convergence {
;
}
其中,称为速率因子,表示梯度降低的速度。对于这个算法,通俗点说,假设初始的时候某个点在曲面(曲线)上,它找到相对比较“陡峭”的方向,沿着这个方向“下坡”,直到最低点为止。在这里须要注意的一点是,
的值不宜过小也不宜太大,过小会使得“下坡”的次数不少,影响效率;太大的话可能会错过最低点。一般咱们能够经过斜率的值改变
的值。