楔子
-
最近几十年,人工智能经历了一轮又一轮的高潮和低谷;今天,机器学习、深度学习再一次被赋予强人工智能的历史使命;
-
机器学习作为人工智能中最重要的一环,天生就带有数学家和工程师的基因,旨在于发现数据之间的秘密,研究最优化问题(构造一个合适的目标函数,然后求最优解)。
一、概述
-
机器学习根据训练数据方法的不同,可以分为监督学习、半监督学习、无监督学习和强化学习。其中监督学习的主要任务是分类和回归
-
分类和回归问题都需要根据训练样本找到一个实数值函数g(x)g(x) g (x) ;然后回归根据g(x)g(x) g (x) ,可以推导出给定新样本的输出值,而分类是根据g(x)g(x) g (x) ,推导出新样本的类别(如0或1)。
-
在现实世界中普遍存在变量之间的关系,关系大概分两种:确定的函数关系 或 统计相关关系(非确定但又相互依赖的关系);回归分析就是研究变量之间统计相关关系的方法。
-
唯物辩证法中认为:事物之间的联系是普遍存在的、相互影响、相互作用和相互制约的;佛家认为:前世因,今世果;数学家认为: y=a1x1+a2x2+a3x3+⋯+by = a_1x_1 + a_2x_2 + a_3x_3 + {\cdots}+ b y =a 1 x 1 +a 2 x 2 +a 3 x 3 + ⋯+ b
-
在回归问题中,按照自变量和变量之间的关系类型,分为线性回归分析和非线性回归分析(如对数模型:f(x)=11+e−xf(x) = \frac{1}{1+ e^{-x}} f (x)= 1+e −x 1 ),本文介绍对象是线性回归(Linear Regression)模型。
二、回归方程
1、概述
在回归分析中,只包括一个自变量和一个因变量,且两种的关系可以使用一条直线近似表示,称为一元线性回归分析。如果有两个及以上的自变量,且自变量和因变量是线性关系,称为多元线性回归分析。
-
一元线性回归方程: y=ax+by = ax + b y =ax +b
-
多元线性回归方程: y=a1x1+a2x2+a3x3+⋯+by = a_1x_1 + a_2x_2 + a_3x_3 + {\cdots} + b y =a 1 x 1 +a 2 x 2 +a 3 x 3 + ⋯+ b
2、建立回归方程
hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=θ⃗TX⃗h_θ(x) = θ_0 + θ_1x_1+θ_2x_2+{\cdots}+θ_nx_n = \vec{θ}^T\vec{X} h θ (x)=θ 0 +θ 1 x 1 +θ 2 x 2 +⋯ +θ n x n = θ T X
其中,θ⃗=[θ0θ1θ2⋯θn]X⃗=[1x1x2⋯xn]\vec{θ} = \begin{bmatrix} θ_0 \\ θ_1 \\ θ_2 \\ {\cdots} \\ θ_n \end{bmatrix} \,\,\,\,\,\,\vec{X} = \begin{bmatrix} 1 \\ x_1 \\ x_2 \\ {\cdots} \\ x_n \end{bmatrix} θ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ θ 0 θ 1 θ 2 ⋯ θ n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ X = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 1 x 1 x 2 ⋯ x n ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
说明1:θ0,θ1,θ2,⋯θnθ_0 , θ_1,θ_2,{\cdots}θ_n θ 0 ,θ 1 ,θ 2 ,⋯θ n 是回归系数,我们的目标是求解出它们,然后代入回归方程,来预测新数据的输出值。
说明2:求解该模型就需要用到损失函数(目标函数)和梯度下降算法。
二、损失函数 (Loss Function)
确立了回归方程后,需要寻找一个评估真实值 与预测值之间的差异,我们使用最小均方(Least Mean Square)来描述误差:
J(θ)=12n∑i=1n(hθ(xi)−yi)2,n为样本数J(θ) = \frac {1}{2n} \sum_{i=1}^n(h_θ(x^i) - y^i)^2,\,\,\text{n为样本数} J (θ)= 2n 1 i=1 ∑ n (h θ (x i )− y i ) 2 , n为样本数
其矩阵表达式为:
J(θ)=12n(Xθ−Y)T(Xθ−Y),n为样本数J(θ) = \frac {1}{2n}(Xθ - Y)^T(Xθ - Y) ,\,\,\text{n为样本数} J (θ)= 2n 1 (Xθ −Y) T (Xθ −Y), n为样本数
说明:以上就是线性回归的损失函数;接下来的目标是求θθ θ 的值, 使得J(θ)J(θ) J( θ) 最小,常见的处理方法是梯度下降法
三、梯度下降(Gradient Descent)算法
1、 简介
梯度下降算法是一种求局部最优解的方法;在数学上,函数的梯度(导数)方向是函数值增长最快的方向,其相反方向就是下降最快的方向。
-
首先对θ⃗\vec{θ} θ 赋值,这个值可以是随机的,也可以是一个全零的向量。
-
改变θ⃗\vec{θ} θ 的值,使得J(θ)J(θ) J (θ) 按梯度下降的方向进行减少。
θ=θ−α∂J(θ)∂θ,α是学习率,步长θ = θ - \alpha \frac{\partial J(θ)}{\partial θ}, \,\,\, \alpha\text{是学习率,步长} θ =θ −α ∂θ ∂J( θ) , α是学习率,步长
具体对θθθ 的每个分量的求导公式如下:
∂J(θ)∂θj=(hθ(xi)−yi)xji\frac{\partial J(θ)}{\partial θ_j} = (h_θ(x^i) - y^i)x^i_j ∂ θ j ∂J( θ) = (h θ (x i )− y i )x j i
说明:梯度下降(GD)是最小化损失函数的一种常用方法,主要有批量梯度下降和随机梯度下降两种迭代求解思路。
2、 批量梯度下降 (Batch Gradient Descent)
repeat until convergence {
θj:=θj+α∑i=1n(hθ(xi)−yi)xji\,\,\,\,\,\,\,\,\,θ_j:= θ_j + \alpha \sum_{i=1}^n(h_θ(x^i) - y^i)x^i_j θ j := θ j +α∑ i=1 n (h θ (x i )− y i )x j i
}
说明:每更新一个θjθ_j θ j ,都要遍历一次样本集;如果样本的数量n很大,开销比较大;BGD可以得到一个全局最优解,使得损失函数的风险最小
3、随机梯度下降 (Stochastic Gradient Descent)
repeat until convergence {
for i=1 to n {
θj:=θj+α(hθ(xi)−yi)xji\,\,\,\,\,\,\,\,θ_j:= θ_j + \alpha (h_θ(x^i) - y^i)x^i_j θ j := θ j +α(h θ (x i )− y i )x j i
}
}
说明1:在随机梯度下降法中,每更新θjθ_j θ j 只需要一个样本 (xi,yi)(x^i,y^i) (x i ,y i ) ;在样本数量巨大时,SGD的性能比较好,但是最终结果未必是全局最优解
4、其他
-
随机梯度下降法在还能够应用到一些更加复杂的算法中,如逻辑回归(Logic Regression)算法(虽有回归两字,但实际上是分类算法)等;
-
在回归模型的损失函数求解中,还有正规方程的方式,它不需要调节学习率α\alpha α ,但是要求矩阵可逆,数据维度不能太大。
四、特征缩放
当样本的特征的数值之间差异比较大时,梯度下降的过程不仅曲折,而且耗时;这时候需要将各个特征归一化到统一的区间。常见的做法如下:
1、0均值标准化(Z-score normalization)
将原始数据集归一化为均值为0、方差1的数据集,归一化后的特征将分布在 [−1,1] 区间,公式如下:
z=x−μδz=\frac {x - μ}{δ} z = δ x−μ
其中,μμ μ 、σσσ 分别为原始数据集的均值和方差。
2、线性函数归一化(Min-Max Scaling)
将原始数据线性化的方法转换到[0,1]的范围,公式如下:
Xnormal=X−XminXmax−XminX_{normal} = \frac {X - X_{min}}{ X_{max} - X_{min}} X norm al = X max −X min X −X min
说明:实现对原始数据的等比例缩放,其中XnormX_{norm} X norm 为归一化后的数据,X为原始数据,XmaxX_{max} X max 、XminX_{min} X min 分别为原始数据集的最大值和最小值。
3、总结
-
在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好。
-
在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用Min-Max Scaling或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
五、多项式回归
1、多项式
多项式由称为不定元的变量和常数系数通过有限次加减法、乘法以及自然数幂次的乘方运算得到的代数表达式,可以分为一次一元多项式和多元多项式。我们主要讨论一元多项式,其形式如下:
y=a0+a1∗x+a2∗(x2)+...+an∗(xn)+ey = a_0 + a_1 * x + a_2 * (x^2) + ... + a_n * (x^n) + e y =a 0 +a 1 ∗x +a 2 ∗( x 2 )+ ...+a n ∗ (x n )+ e
2、多项式回归
-
当回归函数不能用直线来描述时,要考虑用非线性回归函数。 多项式回归属于非线性回归的一种。这里主要介绍一元多项式回归。
-
一般非线性回归函数是未知的,或即使已知也未必可以用一个简单的函数变换转化为线性模型。常用的做法是用因子的多项式。
-
从散点图观察到回归函数有一个“弯”,则可考虑用二次多项式;有两个弯则考虑用三次多项式;有三个弯则考虑用四次多项式,等等。
-
真实的回归函数未必就是某个次数的多项式,但只要拟合得好,用适当的多项式来近似真实的回归函数是可行的。
六、过拟合和欠拟合
- 在机器学习中,我们希望能用模型最好地拟合数据,但是常常会出现过拟合和欠拟合问题;以下三幅图分别描述了对数据的欠拟合(拟合程度不高)、拟合和过拟合(过度拟合)。
欠拟合、拟合和过拟合.png
- 在机器学习中,避免过拟合的方法有:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay)、dropout
End
-
机器学习是门非常有趣的学科,本文只是简单介绍下线性回归模型,引入很多新的概念,但是没有进行深入的展开,后面会慢慢讲到,其中包括公式的推导,一些更具体的处理办法
-
如文章有不妥之处,望不吝赐教