数学原理
回归分析
回归分析是用来评估变量之间关系的统计过程。用来解释自变量X与因变量Y的关系。即当自变量X发生改变时,因变量Y会如何发生改变。
线性回归
回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系。当只有一个自变量时,称为一元线性回归,当具有多个自变量时,称为多元线性回归。
线性关系的理解:
- 画出来的图像是直的。
- 每个自变量的最高次项为1。
我们从简单的一元线性回归开始。这里,我们以房屋面积(x)与房屋价格(y)为例,显而易见,二者是一种线性关系,房屋价格正比于房屋面积,我们假设比例为w:
y ^ = w ∗ x \hat{y} = w * x y^=w∗x
然而,这种线性方程一定是过原点的,即当x为0时,y也一定为0。这可能并不符合现实中某些场景。为了能够让方程具有更广泛的适应性,我们这里再增加一个截距,设为b,即之前的方程变为:
y ^ = w ∗ x + b \hat{y} = w * x + b y^=w∗x+b
而以上方程,就是我们数据建模的模型。方程中的w与b,就是模型的参数。
假定数据集如下:
房屋面积 | 房屋价格 |
---|---|
30 | 100 |
40 | 120 |
40 | 115 |
50 | 130 |
50 | 132 |
60 | 147 |
线性回归是用来解释自变量与因变量之间的关系,但是,这种关系并非严格的函数映射关系。从数据集中,我们也看到了这一点。相同面积的房屋,价格并不完全相同,但是,也不会相差过大。
解决方法
我们现在的目的就是,从现有的数据(经验)中,去学习(确定)w与b的值。一旦w与b的值确定,我们就能够确定拟合数据的线性方程,这样就可以对未知的数据x(房屋面积)进行预测y(房屋价格)。
多元线性回归
然而,现实中的数据可能是比较复杂的,自变量也很可能不只一个。例如,影响房屋价格也很可能不只房屋面积一个因素,可能还有距地铁距离,距市中心距离,房间数量,房屋所在层数,房屋建筑年代等诸多因素。不过,这些因素,对房屋价格影响的力度(权重)是不同的,例如,房屋所在层数对房屋价格的影响就远不及房屋面积,因此,我们可以使用多个权重来表示多个因素与房屋价格的关系:
y ^ = w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3 + … … + w n ∗ x n + b \hat{y} = w_{1} * x_{1} + w_{2} * x_{2} + w_{3} * x_{3} + …… + w_{n} * x_{n} + b y^=w1∗x1+w2∗x2+w3∗x3+……+wn∗xn+b
其中,每个x为影响因素,每个w为对应的影响力度,y为房屋的价格。我们也可以使用向量的表示方式,设x与w为两个向量:
w = ( w 1 , w 2 , w 3 , … … w n ) x = ( x 1 , x 2 , x 3 , … … x n ) w = (w_{1}, w_{2}, w_{3}, …… w_{n})\\ x = (x_{1}, x_{2}, x_{3}, …… x_{n}) w=(w1,w2,w3,……wn)x=(x1,x2,x3,……xn)
则方程可表示为:
y ^ = ∑ j = 1 n w j ∗ x j + b = w T ∗ x + b \hat{y} = \sum_{j=1}^{n}w_{j} * x_{j} + b\\ \ \ = w ^ {T} * x + b y^=∑j=1nwj∗xj+b =wT∗x+b
我们也可以令:
{ x 0 = 1 w 0 = b \left\{\begin{matrix}x_{0} = 1 & \\ w_{0} = b & \end{matrix}\right. {
x0=1w0=b
这样,就可以表示为:
y ^ = w 0 ∗ x 0 + w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3 + … … + w n ∗ x n = ∑ j = 0 n w j ∗ x j = w T ∗ x \hat{y} = w_{0} * x_{0} + w_{1} * x_{1} + w_{2} * x_{2} + w_{3} * x_{3} + …… + w_{n} * x_{n}\\ \ \ = \sum_{j=0}^{n}w_{j} * x_{j}\\ \ \ = w ^ {T} * x y^=w0∗x0+w1∗x1+w2∗x2+w3∗x3+……+wn∗xn =∑j=0nwj∗xj =wT∗x
说明:在机器学习中,习惯用上标表示样本,用下标表示特征。
多元线性回归在空间中,可以表示为一个超平面,去拟合空间中的数据点。
拟合
拟合,是指构建一种算法(数学函数),使得该算法能够符合真实的数据。从机器学习角度讲,线性回归就是要构建一个线性函数,使得该函数与目标值之间的拟合性最好。从空间的角度来看,就是要让函数的直线(面),尽可能穿过空间中的数据点。线性回归会输出一个连续值。
损失函数
通过之前的介绍,我们得知,对机器学习来讲,就是从已知数据(经验)去建立一个模型,使得该模型能够对未知的数据进行预测。实际上,机器学习的过程,就是确定(学习)模型参数(即模型的权重与偏置)的过程,因为只要模型的参数确定了,我们就可以利用模型进行预测(有参数模型)。
那么,模型的参数该如果求解呢?对于监督学习来说,我们可以通过建立损失函数来实现。损失函数,也称目标函数或代价函数,简单的说,就是关于误差的一个函数。损失函数用来衡量模型预测值与真实值之间的差异。机器学习的目标,就是要建立一个损失函数,使得该函数的值最小。
也就是说,损失函数是一个关于模型参数的函数(以模型参数作为自变量的函数),自变量可能的取值组合通常是无限的,我们的目标,就是要在众多可能的组合中,找到一组最合适的自变量组合(值),使得损失函数的值最小。
损失函数我们习惯使用J来表示,例如,J(w)则表示以w为自变量的函数。
损失函数分类
损失函数有很多种,常见的损失函数为:
- 平方和损失函数
- 交叉熵损失函数
参数求解
误差与分布
接下来,我们来看一下线性回归模型中的误差。正如我们之前所提及的,线性回归解释的变量(现实中存在的样本),是存在线性关系的。然而,这种关系并不是严格的函数映射关系,但是,我们构建的模型(方程)却是严格的函数映射关系的,因此,对于每个样本来说,我们拟合的结果会与真实值之间存在一定的误差,我们可以将误差表示为:
y ^ ( i ) = w T ∗ x ( i ) y ( i ) = y ^ ( i ) + ε ( i ) \hat{y} ^ {(i)} = w ^ {T} * x ^ {(i)}\\ y ^ {(i)} = \hat{y} ^ {(i)} + \varepsilon ^ {(i)} y^(i)=wT∗x(i)y(i)=y^(i)+ε(i)
其中, ε ( i ) \varepsilon ^ {(i)} ε(i)表示每个样本与实际值之间的误差。
由于每个样本的误差 ε \varepsilon ε是独立同分布的,根据中心极限定理, ε \varepsilon ε服从均值为0,方差为 σ 2 \sigma ^ {2} σ2的正态分布。因此,根据正态分布的概率密度公式:
p ( ε ( i ) ) = 1 σ 2 π e x p ( − ( ε ( i ) ) 2 2 σ 2 ) p ( y ( i ) ∣ x ( i ) ; w ) = 1 σ 2 π e x p ( − ( y ( i ) − w T x ( i ) ) 2 2 σ 2 ) p(\varepsilon ^ {(i)}) = \frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{(\varepsilon ^ {(i)}) ^ {2}}{2\sigma ^ {2}})\\ p(y ^ {(i)}|x ^ {(i)};w) = \frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{(y ^ {(i)} - w ^ {T}x ^ {(i)}) ^ {2}}{2\sigma ^ {2}}) p(ε(i))=σ2π1exp(−2σ2