Java教程

回归分析

本文主要是介绍回归分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

回归分析

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。该技术通常用于预测分析,时间序列模型,特征(变量)之间的因果关系。

常用回归技术

回归技术的划分主要参考三个度量

  • 自变量个数
  • 因变量类型
  • 回归线形状

主要的回归算法如下:

  • Linear Regression线性回归
  • Logistic Regression逻辑回归
  • Polynomial Regression多项式回归
  • Stepwise Regression逐步回归
  • Ridge Regression岭回归
  • Lasso Regression套索回归
  • ElasticNet回归

具体算法

最小二乘法

设列表函数为g(x),回归方程为f(x),从拟合的定义来看,需要使g(x)和f(x)在某一度量标准下误差最小,满足该条件的f(x)称为g(x)的最佳拟合曲线。

在最小二乘法中,使用的误差标准为SSE或MSE,也就是和方差或均方误差。
S S E = ∑ i = 1 n ( y ^ i − y i ) 2 SSE=\sum_{i=1}^{n}(\hat y_{i}-y_{i})^{2} SSE=i=1∑n​(y^​i​−yi​)2

M S E = 1 n S S E = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 MSE=\frac{1}{n}SSE=\frac{1}{n}\sum_{i=1}^{n}(\hat y_{i}-y_{i})^{2} MSE=n1​SSE=n1​i=1∑n​(y^​i​−yi​)2

他们对于最小二乘法来说没有本质区别。

唯一要注意的是,MSE缩小了误差的数值特征(大小),所以一般都使用SSE,并且使用归一化技术来消除数据本身数值大小的影响。

也可以使用其他的误差度量方法,这并不影响最小二乘法的本质。

以下都使用SSE损失来描述算法流程。

基于假设,列表函数g(x)和回归方程f(x)之间的误差可写作如下
∑ i = 1 n ( g ( x i ) − f ( x i ) ) 2 \sum_{i=1}^{n}(g(x_{i})-f(x_{i}))^{2} i=1∑n​(g(xi​)−f(xi​))2
那么所要寻找的最佳拟合曲线是满足以下条件的f(x)
arg min ⁡   ∑ i = 1 n ( g ( x i ) − f ( x i ) ) 2 {\operatorname {arg\,min} }\,\sum_{i=1}^{n}(g(x_{i})-f(x_{i}))^{2} argmini=1∑n​(g(xi​)−f(xi​))2
设想一下,将f(x)的系数和自变量身份互换,将系数视为自变量,自变量视为系数。那么对于同一组x取值的情况下,使得上述条件式获得最小值的系数就是所需要的最佳系数。

所以分别计算条件式关于系数项的偏导数,令偏导数为0,所求得的系数取值就是最优取值。对于误差函数而言,它是关于系数常数项的二次方程,所以有唯一的驻点。可以简单的证明该驻点是全局最小值。

证明:(使用反正法)

设该驻点为全局最大值点,那么对于误差函数而言,由于列表函数是唯一确定的,那么无法找到一组新的系数常数项,使得f(xi)不等于f’(xi),这显然不成立。所以该驻点一定是全局最小值点。

梯度下降法

梯度

梯度的本意是一个向量(矢量),表示某函数在该点处的方向导数沿着该方向取得最大值,即函数沿着该方向变化最快

梯度是建立在偏导数和方向导数的概念上的

偏导数

对于多元函数,选定一个自变量并让其他自变量保持不变,只考虑因变量与选定自变量的变化关系。

数学上,指对于多元函数:
y = f ( x 1 , x 2 , . . . , x n ) y=f(x_{1},x_{2},...,x_{n}) y=f(x1​,x2​,...,xn​)
假设其偏导数都存在,则该函数共有n个偏导数,表示为:
f x 1 = ∂ y ∂ x 1 、 f x 2 = ∂ y ∂ x 2 、 . . . 、 f x n = ∂ y ∂ x n f_{x_{1}}=\frac{\partial y}{\partial x_{1}}、f_{x_{2}}=\frac{\partial y}{\partial x_{2}}、...、f_{x_{n}}=\frac{\partial y}{\partial x_{n}} fx1​​=∂x1​∂y​、fx2​​=∂x2​∂y​、...、fxn​​=∂xn​∂y​
偏导数只能表示多元函数沿某个坐标轴方向的导数

方向导数

除沿坐标轴方向的导数,多元函数可以在非坐标轴方向上求导数,该导数称为方向导数。多元函数在特定点的方向导数有无穷多个,表示函数在该点各个方向上的变化速度。

问题提出

在函数某点的所有方向导数中,是否存在一个最大的方向导数,如果有,那么其值是否唯一?

从而引出了梯度的概念

定义

梯度一般定义为:全部偏导数组成的向量(这与偏导数和方向导数不同,两者都是标量)

一般将函数f的梯度记为:
∇ f \nabla f ∇f
即:
∇ f ( x 0 , y 0 , . . . ) = [ ∂ f ∂ x ( x 0 , x 1 , . . . , x n ) ∂ f ∂ x ( x 0 , x 1 , . . . , x n ) . . . ] \nabla f(x_{0},y_{0},...)= \left [ \begin{matrix} \frac{\partial f}{\partial x}(x_{0},x_{1},...,x_{n})\\ \frac{\partial f}{\partial x}(x_{0},x_{1},...,x_{n})\\ ... \end{matrix} \right] ∇f(x0​,y0​,...)=⎣⎡​∂x∂f​(x0​,x1​,...,xn​)∂x∂f​(x0​,x1​,...,xn​)...​⎦⎤​
而梯度向量的方向就是函数值增长最快的方向

梯度下降

一般情况求函数的极值点,会分别求函数对于自变量的偏导数,令偏导数为0,求出所有驻点,再从驻点中找出全局最优值点。但是对于一些复杂函数,对偏导数等于0这个等式的求解是十分复杂,甚至是不可行的。这个时候就会考虑使用迭代的方法,在一定误差下逐步逼近最优值。

梯度下降法,让待估系数延梯度(关于待估系数的梯度)方向逐步变化,直到损失下降到一个可接受程度,停止迭代
ω = ω 0 − η ∇ f l o s s \omega=\omega_{0}-\eta\nabla f_{loss} ω=ω0​−η∇floss​

η 称 为 迭 代 步 长 \eta称为迭代步长 η称为迭代步长

自变量沿梯度方向变化,使得函数变化最快,所以选择梯度方向,当待估参数沿该方向变化,损失函数变化最快。

虽然随机选择迭代方向,只要损失函数值下降就可以,但是这样无法以最快速度获得最优参数估计。

Linear Regression

代数求解过程

对于多元线性拟合,拟合函数定义如下
f ( Θ X ) = θ 1 x 1 + θ 2 x 2 + . . . + θ n x n + d = ∑ i = 1 n θ i x i   + d f(\Theta X)=\theta_{1} x_{1}+\theta_{2} x_{2}+...+\theta_{n} x_{n}+d=\sum_{i=1}^{n}\theta_{i} x_{i}\,+d f(ΘX)=θ1​x1​+θ2​x2​+...+θn​xn​+d=i=1∑n​θi​xi​+d
SSE损失如下(训练数据有m个)
L o s s = ∑ j = 1 m ( y j − f ( Θ X j ) ) 2 = ∑ j = 1 m ( y j − ∑ i = 1 n θ i x i j   − d ) 2 Loss=\sum_{j=1}^{m}(y_{j}-f(\Theta X_{j}))^{2}=\sum_{j=1}^{m}(y_{j}-\sum_{i=1}^{n}\theta_{i}x_{ij}\,-d)^{2} Loss=j=1∑m​(yj​−f(ΘXj​))2=j=1∑m​(yj​−i=1∑n​θi​xij​−d)2
利用损失函数分别对系数项
θ i   ( i = 1 , . . . , n ) \theta_{i}\,(i=1,...,n) θi​(i=1,...,n)
分别求偏导,令导数为0。
∂ L o s s ∂ θ k − 2 ∑ j = 1 m ( y j − ∑ i = 1 n θ i x i j − d )   x k j = 0 ∑ j = 1 m ( ∑ i = 1 n θ i x i j + d − y j ) x k j = 0 \frac{\partial Loss}{\partial \theta_{k}} \\ -2\sum_{j=1}^{m}(y_{j}-\sum_{i=1}^{n}\theta_{i}x_{ij}-d)\,x_{kj}=0 \\ \sum_{j=1}^{m}(\sum_{i=1}^{n}\theta_{i}x_{ij}+d-y_{j})x_{kj}=0 ∂θk​∂Loss​−2j=1∑m​(yj​−i=1∑n​θi​xij​−d)xkj​=0j=1∑m​(i=1∑n​θi​xij​+d−yj​)xkj​=0
可以沿k展开为一个n阶线性方程组
∑ j = 1 m ( ∑ i = 1 n θ i x i j + d − y j ) x 1 j = 0 ∑ j = 1 m ( ∑ i = 1 n θ i x i j + d − y j ) x 2 j = 0 … ∑ j = 1 m ( ∑ i = 1 n θ i x i j + d − y j ) x k j = 0 \sum_{j=1}^{m}(\sum_{i=1}^{n}\theta_{i}x_{ij}+d-y_{j})x_{1j}=0 \\ \sum_{j=1}^{m}(\sum_{i=1}^{n}\theta_{i}x_{ij}+d-y_{j})x_{2j}=0 \\ \ldots\\ \sum_{j=1}^{m}(\sum_{i=1}^{n}\theta_{i}x_{ij}+d-y_{j})x_{kj}=0 j=1∑m​(i=1∑n​θi​xij​+d−yj​)x1j​=0j=1∑m​(i=1∑n​θi​xij​+d−yj​)x2j​=0…j=1∑m​(i=1∑n​θi​xij​+d−yj​)xkj​=0
通过求解该线性方程组,就可求出所有系数的值

如果需要考虑系数常数项,那么应该对d求偏导,令偏导等于0,形成一个n+1阶线性方程组,求解该线性方程组,就可以获得所有系数的值
∂ L o s s ∂ d = − 2 ∑ j = 1 m ( y j − ∑ i = 1 n θ i x i j − d ) \frac{\partial Loss}{\partial d}=-2\sum_{j=1}^{m}(y_{j}-\sum_{i=1}^{n}\theta_{i}x_{ij}-d) ∂d∂Loss​=−2j=1∑m​(yj​−i=1∑n​θi​xij​−d)

− 2 ∑ j = 1 m ( y j − ∑ i = 1 n θ i x i j − d ) = 0 -2\sum_{j=1}^{m}(y_{j}-\sum_{i=1}^{n}\theta_{i}x_{ij}-d)=0 −2j=1∑m​(yj​−i=1∑n​θi​xij​−d)=0

矩阵求解过程

SSE损失如下(训练数据有m个)
L o s s = ∑ j = 1 m ( y j − f ( Θ X j ) ) 2 = ∑ j = 1 m ( y j − ∑ i = 1 n θ i x i j   − d ) 2 Loss=\sum_{j=1}^{m}(y_{j}-f(\Theta X_{j}))^{2}=\sum_{j=1}^{m}(y_{j}-\sum_{i=1}^{n}\theta_{i}x_{ij}\,-d)^{2} Loss=j=1∑m​(yj​−f(ΘXj​))2=j=1∑m​(yj​−i=1∑n​θi​xij​−d)2
将系数表示为列向量
ω = [ ω 1 ω 2 ⋮ ω n b ] \omega=\left[ \begin{matrix} \omega_{1}\\ \omega_{2}\\ \vdots\\ \omega_{n} \\ b \end{matrix} \right] ω=⎣⎢⎢⎢⎢⎢⎡​ω1​ω2​⋮ωn​b​⎦⎥⎥⎥⎥⎥⎤​
数据集样例属性表示为
X = [ x 11 x 12 ⋯ x 1 n 1 x 21 x 22 ⋯ x 2 n 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m n 1 ] = [ x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ] X=\left[ \begin{matrix} x_{11} & x_{12} & \cdots & x_{1n} & 1\\ x_{21} & x_{22} & \cdots & x_{2n} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots\\ x_{m1} & x_{m2} & \cdots & x_{mn} & 1 \end{matrix} \right]= \left[ \begin{matrix} x_{1}^{T} & 1\\ x_{2}^{T} & 1\\ \vdots & \vdots\\ x_{m}^{T} & 1 \end{matrix} \right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xm1​​x12​x22​⋮xm2​​⋯⋯⋱⋯​x1n​x2n​⋮xmn​​11⋮1​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​x1T​x2T​⋮xmT​​11⋮1​⎦⎥⎥⎥⎤​
由于将常数项b也视为一个属性的系数,所以增加一个值全为1的属性列

那么样例的计算结果用向量表示为
Y = [ y 1 y 2 ⋮ y m ] Y=\left[ \begin{matrix} y_{1}\\ y_{2}\\ \vdots\\ y_{m} \end{matrix} \right] Y=⎣⎢⎢⎢⎡​y1​y2​⋮ym​​⎦⎥⎥⎥⎤​
则回归方程可以表示为
Y = X ω Y=X\omega Y=Xω
则SSE损失表示为
L o s s = ( y − X ω ) T ( y − X ω ) Loss=(y-X\omega)^{T}(y-X\omega) Loss=(y−Xω)T(y−Xω)
最优化目标为
arg min ⁡ ω   ( y − X ω ) T ( y − X ω ) {\underset {\omega}{\operatorname {arg\,min} }}\,(y-X\omega)^{T}(y-X\omega) ωargmin​(y−Xω)T(y−Xω)
上式对ω求导,请参考具体矩阵运算求导
∂ E ω ∂ ω = 2 X T ( X ω − y ) \frac{\partial E\omega}{\partial\omega}=2X^{T}(X\omega-y) ∂ω∂Eω​=2XT(Xω−y)
令上式为0,求ω
ω = ( X T X ) − 1 X T y \omega=(X^{T}X)^{-1}X^{T}y ω=(XTX)−1XTy
所得线性方程可表示为
y = x ^ i ( X T X ) − 1 X T y x ^ i = ( x i , 1 ) y=\hat x_{i}(X^{T}X)^{-1}X^{T}y \\ \hat x_{i}=(x_{i},1) y=x^i​(XTX)−1XTyx^i​=(xi​,1)

Logistic Regression

线性回归只能用于对结果数值的预测,所描述的自变量与连续值(结果值)之间的关系。而分类任务需要构建自变量(特征)与类别标签(离散数据)之间的关系。

列表函数已经固定,所以只能采用复合函数的方法来构造特征与类别标签(离散)之间的函数关系

设列表函数为f(x),则Logistic Regression致力于构建一个g(x),使得g(f(x))=label

最简单的方式是构造分段函数,例如

设列表函数为一线性方程
f = ω T x + b f=\omega^{T}x+b f=ωTx+b
构建函数g(x)如下
g ( x ) = { 0 , x < 0 0.5 , x = 0 1 , x > 0 g(x)=\begin{cases} 0,\quad x< 0 \\[2ex] 0.5, \quad x=0 \\[2ex] 1, \quad x>0 \end{cases} g(x)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​0,x<00.5,x=01,x>0​
则复合函数如下
g ( ω T x + b ) = { 0 , ω T x + b < 0 0.5 , ω T x + b = 0 1 , ω T x + b > 0 g(\omega^{T}x+b)=\begin{cases} 0,\quad \omega^{T}x+b< 0 \\[2ex] 0.5, \quad \omega^{T}x+b=0 \\[2ex] 1, \quad \omega^{T}x+b>0 \end{cases} g(ωTx+b)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​0,ωTx+b<00.5,ωTx+b=01,ωTx+b>0​
但是问题在于,这是个分段函数,在值域内不连续,所以不可导,那么就无法构造损失函数和优化过程。

所以需要寻找一个连续函数模型,代替分段函数来表示连续特征取值和离散类别标签之间的函数关系。

这里需要思考几个问题,如果标签以离散数值的形式存在,例如用(1,2,3,…)代表类别1,2,3…那么依然采用SSE的损失度量,直接度量与类别标签数值差异度,这种方式是否合理呢(上述分段函数的例子就是这个思想)。那么对于分类任务,构建的模型应该表现出自变量(特征)与因变量(类别标签)之间的何种关系呢。

二分类与Sigmoid函数

在拟合,回归等数值预测方法,或者函数逼近方法中,所构建的是实验或观测的事物在真实物理环境中的分布模型,自变量(特征)和因变量(预测属性)都是连续的。

而在分类任务中,所构建的是一种条件概率模型,或者是概率分布模型,体现的是在某自变量(特征)取值的条件下,属于某因变量(类别标签)的概率。

使用概率误差来度量分类任务中,类别标签预测的差异度是合适的。

Sigmoid函数是一个在生物学中常见的S型函数,也叫做Logistic函数
f = 1 1 + e − z f=\frac{1}{1+e^{-z}} f=1+e−z1​
sigmoid函数值在(0,1)之间,其函数图像如下

在这里插入图片描述

可以看出,该函数在自变量取值靠近0的时候,函数值变化迅速,其比较接近分段函数
g ( x ) = { 0 , x < 0 1 , x > 0 g(x)=\begin{cases} 0,\quad x< 0 \\[2ex] 1, \quad x>0 \end{cases} g(x)=⎩⎨⎧​0,x<01,x>0​
所以常用于二分类任务

如果在该模型中继续使用SSE等误差度量算法,主要问题在于sigmoid函数只有在取值接近0的部分变化剧烈,导致两端的误差无法很好的度量。

所以采用对数损失作为Logistic Regression的损失函数
L o s s = − [ y log ⁡ y ^ + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] Loss=-[y\log{\hat y}+(1-y)\log{(1-\hat y)}] Loss=−[ylogy^​+(1−y)log(1−y^​)]
当类别标签为1时,预测值y越接近1,Loss的值越小,当类别标签为0时,输出值y越接近0,Loss越小。

所以优化目标为:
arg min ⁡ ω , b   L ( ω , b ) L ( ω , b ) = − [ y log ⁡ y ^ + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] {\underset {\omega,b}{\operatorname {arg\,min} }}\,L(\omega,b) \\ L(\omega,b)=-[y\log{\hat y}+(1-y)\log{(1-\hat y)}] ω,bargmin​L(ω,b)L(ω,b)=−[ylogy^​+(1−y)log(1−y^​)]
其中
y ^ = 1 1 + e − z z = w T x + b \hat y=\frac{1}{1+e^{-z}} \\ z=w^{T}x+b y^​=1+e−z1​z=wTx+b
使用梯度下降法进行求解,分别求关于w和b的梯度

根据求导的链式法则,有如下过程:
∂ L ∂ ω = ∂ L ∂ z ∂ z ∂ ω \frac{\partial L}{\partial \omega}=\frac{\partial L}{\partial z}\frac{\partial z}{\partial \omega} ∂ω∂L​=∂z∂L​∂ω∂z​
求解过程如下:
∂ L ∂ y ^ = y ^ − y y ^ ( 1 − y ^ ) \frac{\partial L}{\partial \hat y}=\frac{\hat y-y}{\hat y(1- \hat y)} ∂y^​∂L​=y^​(1−y^​)y^​−y​

∂ y ^ ∂ z = − 1 ( 1 + e − z ) 2 ⋅ 1 ⋅ e − z ⋅ ln ⁡ e ⋅ ( − 1 ) = e − z ( 1 + e − z ) 2 = 1 + e − z − 1 ( 1 + e − z ) 2 = 1 1 + e − z − 1 ( 1 + e − z ) 2 = 1 1 + e − z ⋅ ( 1 − 1 1 + e − z ) = y ^ ⋅ ( 1 − y ^ ) \begin{aligned} \frac{\partial \hat y}{\partial z}&=-\frac{1}{(1+e^{-z})^{2}}\cdot 1 \cdot e^{-z}\cdot \ln^{e} \cdot (-1) \\ &=\frac{e^{-z}}{(1+e^{-z})^{2}} \\ &=\frac{1+e^{-z}-1}{(1+e^{-z})^{2}} \\ &=\frac{1}{1+e^{-z}}-\frac{1}{(1+e^{-z})^{2}} \\ &=\frac{1}{1+e^{-z}}\cdot(1-\frac{1}{1+e^{-z}}) \\ &=\hat y\cdot(1-\hat y) \end{aligned} ∂z∂y^​​​=−(1+e−z)21​⋅1⋅e−z⋅lne⋅(−1)=(1+e−z)2e−z​=(1+e−z)21+e−z−1​=1+e−z1​−(1+e−z)21​=1+e−z1​⋅(1−1+e−z1​)=y^​⋅(1−y^​)​

∂ z ∂ ω = x \begin{aligned} \frac{\partial z}{\partial \omega}=x \end{aligned} ∂ω∂z​=x​

所以
∂ L ∂ ω = y ^ − y y ^ ( 1 − y ^ ) ⋅ y ^ ⋅ ( 1 − y ^ ) ⋅ x = ( y ^ − y ) ⋅ x \begin{aligned} \frac{\partial L}{\partial \omega}&=\frac{\hat y-y}{\hat y(1- \hat y)}\cdot\hat y\cdot(1-\hat y)\cdot x \\ &=(\hat y-y)\cdot x \end{aligned} ∂ω∂L​​=y^​(1−y^​)y^​−y​⋅y^​⋅(1−y^​)⋅x=(y^​−y)⋅x​

多分类与Softmax函数

one hot encoding(独热编码)

对于多分类,一般将类别标签表示为独热编码的形式,例如要对4种类别进行分类,类别标签如下:
1 , 0 , 0 , 0                    类 别 1 0 , 1 , 0 , 0                    类 别 2 0 , 0 , 1 , 0                    类 别 3 0 , 0 , 0 , 1                    类 别 4 1,0,0,0 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,{类别1}\\ 0,1,0,0 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,{类别2}\\ 0,0,1,0 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,{类别3}\\ 0,0,0,1 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,{类别4}\\ 1,0,0,0类别10,1,0,0类别20,0,1,0类别30,0,0,1类别4

softmax函数

设有一数组X,xi表示X中的第i个元素,那么这个元素的softmax值为
X S i = e x i ∑ j e x j XS_{i}=\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}} XSi​=∑j​exj​exi​​
求导过程如下
∂ e x i ∑ j e x j ∂ x i = ∂ ( 1 − ∑ j ≠ i e x j ∑ j e x j ) ∂ x i = − ∑ j ≠ i e x j ⋅ ∂ 1 ∑ j e x j ∂ x i = ∑ j ≠ i e x j ⋅ 1 ( ∑ j e x j ) 2 ⋅ e x i ⋅ ln ⁡ e = ∑ j ≠ i e x j ⋅ e x i ( ∑ j e x j ) 2 \begin{aligned} \frac {\partial\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}}}{\partial x_{i}}&= \frac{\partial(1-\frac{\sum_{j\neq i}e^{x_{j}}}{\sum_{j}e^{x_{j}}})}{\partial x_{i}}\\&= -\sum_{j\neq i}e^{x_{j}}\cdot\frac{\partial\frac{1}{\sum_{j}e^{x_{j}}}}{\partial x_{i}}\\&= \sum_{j\neq i}e^{x_{j}}\cdot \frac{1}{(\sum_{j}e^{x_{j}})^{2}}\cdot e^{x_{i}}\cdot \ln^{e}\\&= \sum_{j\neq i}e^{x_{j}}\cdot\frac{e^{x_{i}}}{(\sum_{j}e^{x_{j}})^{2}} \end{aligned} ∂xi​∂∑j​exj​exi​​​​=∂xi​∂(1−∑j​exj​∑j​=i​exj​​)​=−j​=i∑​exj​⋅∂xi​∂∑j​exj​1​​=j​=i∑​exj​⋅(∑j​exj​)21​⋅exi​⋅lne=j​=i∑​exj​⋅(∑j​exj​)2exi​​​

交叉熵损失函数(Cross Entropy Error Function)

二分类交叉熵损失函数形式
∑ − y i log ⁡ ( y ^ i ) − ( 1 − y ^ ) log ⁡ ( 1 − y ^ i ) \sum -y_{i}\log(\hat y_{i})-(1-\hat y)\log(1-\hat y_{i}) ∑−yi​log(y^​i​)−(1−y^​)log(1−y^​i​)
多分类交叉熵损失函数形式为
− ∑ i = 1 n y i log ⁡ ( y ^ i ) -\sum^{n}_{i=1}y_{i}\log(\hat y_{i}) −i=1∑n​yi​log(y^​i​)
求导过程如下
∂ − ∑ i = 1 n y i log ⁡ ( y ^ i ) ∂ y ^ i = − ∑ i = 1 n ( y i ⋅ 1 y ^ i ln ⁡ e ) = − ∑ i = 1 n ( y i ⋅ 1 y ^ i ) \begin{aligned} \frac{\partial -\sum^{n}_{i=1}y_{i}\log(\hat y_{i})}{\partial \hat y_{i}}&= -\sum^{n}_{i=1}(y_{i}\cdot \frac{1}{\hat y_{i}\ln^{e}})\\&= -\sum^{n}_{i=1}(y_{i}\cdot \frac{1}{\hat y_{i}}) \end{aligned} ∂y^​i​∂−∑i=1n​yi​log(y^​i​)​​=−i=1∑n​(yi​⋅y^​i​lne1​)=−i=1∑n​(yi​⋅y^​i​1​)​

Polynomial Regression

一元线性回归,使用一元一次方程来构建回归模型。在一元多项式中,使用一元高次多项式来构建回归模型,使得模型可以逼近非线性函数,使得回归效果更好。

一元多项式回归构建的目标函数如下:
f ( Θ x ) = θ 1 x + θ 2 x 2 + . . . + θ n x n + d f(\Theta x)=\theta_{1}x+\theta_{2}x^{2}+...+\theta_{n}x^{n}+d f(Θx)=θ1​x+θ2​x2+...+θn​xn+d
分别对theta求偏导:
∂ f ( Θ x ) ∂ θ 1 = x ∂ f ( Θ x ) ∂ θ 2 = x 2 ⋮ ∂ f ( Θ x ) ∂ θ n = x n ∂ f ( Θ x ) ∂ d = 1 \begin{aligned} \frac{\partial f(\Theta x)}{\partial \theta_{1}}&=x \\ \frac{\partial f(\Theta x)}{\partial \theta_{2}}&=x^{2} \\ \vdots \\ \frac{\partial f(\Theta x)}{\partial \theta_{n}}&=x^{n} \\ \frac{\partial f(\Theta x)}{\partial d}&=1 \\ \end{aligned} ∂θ1​∂f(Θx)​∂θ2​∂f(Θx)​⋮∂θn​∂f(Θx)​∂d∂f(Θx)​​=x=x2=xn=1​

Stepwise Regression

一定程度的解决了多重共线性问题

Forward selection:将自变量逐个引入模型,引入一个自变量后要查看该变量的引入是否使得模型发生显著性变化(F检验),如果发生了显著性变化,那么则将该变量引入模型中,否则忽略该变量,直至所有变量都进行了考虑。即将变量按照贡献度从大到小排列,依次加入。

Backward elimination:与Forward selection选择相反,在这个方法中,将所有变量放入模型,然后尝试将某一变量进行剔除,查看剔除后对整个模型是否有显著性变化(F检验),如果没有显著性变化则剔除,若有则保留,直到留下所有对模型有显著性变化的因素。即将自变量按贡献度从小到大,依次剔除。

Bidirectional elimination:逐步筛选法。是在第一个的基础上做一定的改进,当引入一个变量后,首先查看这个变量是否使得模型发生显著性变化(F检验),若发生显著性变化,再对所有变量进行t检验,当原来引入变量由于后面加入的变量的引入而不再显著变化时,则剔除此变量,确保每次引入新的变量之前回归方程中只包含显著性变量,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止,最终得到一个最优的变量集合。

Ridge Regression

解决自变量个数多于样本个数的情况(虽然一般情况不会出现,且可以使用降维技术进行降维,或求矩阵的广义逆)。

在线性回归模型中,待估参数为:
y = x ^ i ( X T X ) − 1 X T y x ^ i = ( x i , 1 ) y=\hat x_{i}(X^{T}X)^{-1}X^{T}y \\ \hat x_{i}=(x_{i},1) y=x^i​(XTX)−1XTyx^i​=(xi​,1)

X T X X^{T}X XTX
不可逆时无法求解,且当
∣ X T X ∣ |X^{T}X| ∣XTX∣
越趋近于0,使得回归系数趋近于无穷大,此时得到的回归系数是无意义的。

岭回归在线性回归的基础上添加了一个L2范数的惩罚项
L o s s = ( y − X ω ) T ( y − X ω ) + λ ω T ω Loss=(y-X\omega)^{T}(y-X\omega)+\lambda \omega^{T}\omega Loss=(y−Xω)T(y−Xω)+λωTω
求导结果为
ω = ( X T X + λ I ) − 1 X T y \omega=(X^{T}X+\lambda I)^{-1}X^{T}y ω=(XTX+λI)−1XTy
L2范数的惩罚项使得
X T X + λ I X^{T}X+\lambda I XTX+λI
满秩。

但是由于引入惩罚项,使得岭回归不再是无偏估计。岭回归是以放弃无偏性,降低精度为代价解决病态矩阵问题的回归方法。

单位矩阵I的对角线上全是1,像一条岭一样,这也是岭回归名称的由来。

lambda的值可以使用岭迹法和交叉验证法来确定

Lasso Regression

岭回归无法剔除变量(特征),LASSO回归将惩罚项有L2范数变为L1范数,可以将一些无效的回归系数缩减为0,达到剔除变量的目的。

ElasticNet Regression

ElasticNet融合了L1范数和L2范数两种正则化方法,岭回归和Lasso回归都可以看做它的特例

ElasticNet对于自变量个数远大于样例个数时,或者存在严重的共线性问题时,有明显的效果

附录

多重共线性

多重共线性是指线性回归模型中的解释变量(特征)之间存在精确相关关系或高度相关关系。多重共线性使得模型估计失真或难以估计准确

无偏估计

用样本统计量来估计总体参数的一种无偏推断。估计量的数学期望等于被估参数的真实值,则称此估计量为被估计参数的无偏估计,具有无偏性。这是一种评价估计量优良的准则。无偏估计的意义是:在多次重复下,它们的平均数接近所估计的参数真值。

似然

似然函数是概率函数的反函数,已知自变量(特征)求类别概率称为概率函数,已知类别概率求自变量(特征)称为似然函数。一般使用最大化似然函数的方法,求最优自变量,该方法称为最大似然估计。

这篇关于回归分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!