0


机器学习之回归算法——只需要看这一篇

1. 范数的类型

在开始之前我们先要了解范数是什么?其实在回归问题中可以把范数简单理解为距离。那么范数的类型有哪几种呢?

  1. Lp范数:\left \| V \right \|_{p} = \left ( \sum_{i=1}^{n}\left | V_{i} \right |^{p} \right )^{\frac{1}{p}},p\geq 1
  2. L1(曼哈顿范数)范数:当p=1时,\left \| V_{1} \right \|_{1} = \sum_{i=1}^{n}\left | V_{i} \right |,向量元素的绝对值之和
  3. L2(欧几里得范数)范数:当p=2时,\left \| V_{2} \right \| = \sqrt{\sum_{i=1}^{n}V_{i}^{2}},向量平方和的平方根
  4. 无穷范数:当p=无穷时,\left \| V \right \|_{\propto } = max_{i}\left | V_{i} \right |,向量绝对值的最大值

2. 一元线性回归

首先我们来了解什么是线性回归,线性回归说白了就是已知x(特征值)和y(目标值)来求解y关于x的线性方程:y = ax+b.一元线性回归也就是说影响y值的因素只有一个,参数a是一个数字,多元线性回归也就是影响y值的因素很多,参数a不再是一个数字,而是一个矩阵参数。例如:假设幼儿园的收入(y)的多少只取决于幼儿的数量,那么这就是一元线性回归;如果假设幼儿园的收入(y)的多少不仅取决于幼儿的数量,还取决于教职工的数量和水电费,那么这就是多元线性回归。

现在我们来看一元线性回归:当数据很多时,所有的值不可能都在所求的这条直线上:

所以我们需要寻找最合适的参数a和b使所有已知数据点和这条线性方程的点的差值最小,即_{a,b}^{argmin}\textrm{}\left ( \hat{y}-y \right )^{2},其中_{a,b}^{argmin}\textrm{}代表求解使得\left ( \hat{y}-y \right )^{2}值最小的参数a,b,\hat{y}为根据x通过线性方程预测的y值,y为真实值。

这里使用差值的平方的原因是因为二次函数可以求得最值并且省去了使用绝对值(因为预测值可能比真实值大或者小)。

由于\left ( \hat{y}-y \right )^{2}是单个值,所以为了更具有普遍性,我们将所有的差值先进行平方求和再求平均:

L(\hat{y},y)=\frac{1}{n}\sum_{i=1}^{n}\left ( \hat{y}-y \right )^{2}

接下来我们便可以通过计算来寻找最合适的a,b值,即a^{^{*}},b^{*}

a^{*},b^{*}=_{a,b}^{argmin}\textrm{}L(a,b)=_{a,b}^{argmin}\textrm{}\frac{1}{n}\sum_{i=1}^{n}\left [ (ax_{i}+b)-y_{i} \right ]^{2}

为了寻找a^{^{*}},b^{*},我们分别对a和b求导:

\frac{\partial L(a,b)}{\partial a} = \frac{1}{n}\sum_{i=1}^{n}\frac{\partial }{\partial a}\left [ (ax_{i}+b)-y_{i} \right ]^{2} = \frac{1}{n}\sum_{i=1}^{n}\cdot 2[(ax_{i}+b)-y_{i}]\cdot x_{i} = \frac{2}{n}\sum_{i=1}^{n}(ax_{i}^{2}+bx_{i}-x_{i}y_{i}) = 2a(\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2})+2b(\frac{1}{n}\sum_{i=1}^{n}x_{i})-2(\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i})

\frac{\partial L(a,b)}{\partial b} = \frac{1}{n}\sum_{i=1}^{n}\frac{\partial }{\partial b}\left [ (ax_{i}+b)-y_{i} \right ]^{2} = \frac{1}{n}\sum_{i=1}^{n}\cdot 2[(ax_{i}+b)-y_{i}] = \frac{2}{n}\sum_{i=1}^{n}(ax_{i}+b-y_{i}) = 2a(\frac{1}{n}\sum_{i=1}^{n}x_{i})+2b-2(\frac{1}{n}\sum_{i=1}^{n}y_{i})

由于算是太复杂,我们令\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}=S^{2}\frac{1}{n}\sum_{i=1}^{n}x_{i} = X\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i} = P\frac{1}{n}\sum_{i=1}^{n}y_{i} = Y

那么便可以得到:

\frac{\partial L(a,b)}{\partial a} = 2mS^{2}+2bX-2P

\frac{\partial L(a,b)}{\partial b} = 2mX+2b-2Y

因为x_{i},y_{i},n都是已知的,所以S^{2},Y,X,P都是已知的,因此求解方程组\frac{\partial L(a,b)}{\partial a} = 0 ; \frac{\partial L(a,b)}{\partial b} = 0便可得到参数a^{^{*}},b^{*}

解的a^{^{*}} = \frac{P-XY}{S^{2}-X^{2}} ; b^{*} = Y-a^{^{*}}X

接下来我们便看什么是多元线性回归。

3. 多元线性回归

我们知道多元线性回归影响因素是由多个组成,那么参数不再是一个数字,而是多维矩阵。同一元线性回归一样,对均方误差方程求导找最小值,那么方程便可以写为:f(x) = k^{T}x+b,k=[k_{1},k_{2},k_{3},......,k_{n}],为了更好地计算,我们可以将f(x)化简一下:

我们令X = (x,1) = [x_{1},x_{2},......,x_{n},1]K = (k,b) = [k_{1},k_{2},k_{3},......,,k_{n},b]

这样我们便可以得到y = K^{T}X = k^{T}x+b

接着便可以得到均方误差J(K) = (y-K^{T}X)^{T}(y-K^{T}X)

E(K) = _{K}^{argmin}\textrm{}J(K)

对K进行求导得到:\frac{\partial }{\partial K}E(K) = 2*(y-K^{T}X)*(-X) = 2KX^{T}X-2X^{T}y = 0

求得K^{*} = \left ( X^{T}X \right )^{-1}X^{T}y

但是我们可以发现如果想使(X^{T}X)^{-1}存在,那么X^{T}X必须是满秩矩阵或正定矩阵,那如果不是呢?接下来我们便对这种情况讨论一下正则化方法: 使用岭回归(Ridge Regression)或拉索回归(Lasso Regression)等正则化方法。

4. 正则化方法

4.1 岭回归(Ridge Regression)

岭回归通过在普通最小二乘法(OLS)的损失函数中添加一个L2正则化项来减小回归系数的大小。岭回归的损失函数如下:

L(\beta ) = J(K) + \beta \left \| K \right \|_{2}^{2}\beta 是正则化参数(超参数),控制正则化项的强度。

那么岭回归的解便是:K^{*} = \left ( X^{T}X + \beta I\right )^{-1}X^{T}y

4.2 拉索回归(Lasso Regression)

拉索回归通过在OLS的损失函数中添加一个L1正则化项来促使某些回归系数为零,从而实现变量选择和稀疏化。拉索回归的损失函数如下:

L(\beta ) = J(K) + \beta \left \| K \right \|_{1}

拉索回归通过引入L1正则化,使得某些系数被完全压缩为零,从而自动执行特征选择。这也有助于减少多重共线性,因为它可以去除冗余变量。

拉索回归的解并不像普通最小二乘法和岭回归那样有一个显式的解析解,而是通过优化算法求解。通常使用坐标轴下降法(Coordinate Descent)或拉格朗日乘数法来求解拉索回归问题。

除此之外,还有一个弹性网络回归(Elastic Net)

4.3 弹性网络回归(Elastic Net)

弹性网络回归结合了岭回归和拉索回归的优点,通过同时使用L1和L2正则化来进行回归分析。弹性网络回归的目标函数如下:

L(\beta ) = J(K) + \beta_{2} \left \| K \right \|_{2}^{2} + \beta_{1} \left \| K \right \|_{1}

弹性网络回归结合了岭回归和拉索回归的优点:

  • 变量选择和稀疏性:通过L1正则化实现。
  • 稳定性和减小多重共线性:通过L2正则化实现。

虽然弹性网络回归在理论上具有这些优点,但实际选择哪种回归方法需要考虑具体的应用场景和数据特性。以下是一些考虑因素:

  1. 模型复杂性:弹性网络回归的模型引入了两个超参数 \beta _{1}\beta _{2} 需要调整。这增加了模型复杂性和计算开销。
  2. 数据特性:对于某些数据集,L1或L2正则化可能已经足够。如果模型可以通过简单的正则化方法获得良好结果,那么引入弹性网络的额外复杂性可能是不必要的。
  3. 解释性:在某些情况下,简单的模型更容易解释。如果数据中的多重共线性问题不严重,可能会选择简单的岭回归或拉索回归。
  4. 计算资源:在计算资源有限的情况下,调整两个超参数的弹性网络可能会增加计算负担。

总结

  • 拉索回归通过L1正则化促使某些系数为零,自动进行变量选择,适用于需要简化模型和进行特征选择的情况。
  • 岭回归通过L2正则化稳定模型,减少多重共线性,适用于需要保留所有变量并关注模型稳定性的情况。
  • 弹性网络回归结合了L1和L2正则化的优点,适用于需要同时进行变量选择和模型稳定的情况。

5. 疑问解答

5.1 为什么求导,找到的最值是最小值?

因为最小二乘法的损失函数是凸函数,求导得到的最值是最小值。

5.2 为什么岭回归通过L2正则化稳定模型可以得到可逆矩阵?

因为添加正则项之后得到的解为K^{*} = \left ( X^{T}X + \beta I\right )^{-1}X^{T}y,这相当于在原来矩阵对角线增加了元素\beta I,这样保证了矩阵是满秩的,也就是可逆的。

5.3 为什么拉索回归添加一个L1正则化项可以实现变量选择和稀疏化?

举例说明:假设我们有以下简化的目标函数:

L(\beta ) = (\alpha _{1}-3)^{2}+\left ( \alpha _{2}-2 \right )^{2}+\beta (\left | \alpha _{1} \right |+\left | \alpha _{2} \right |)

如果\beta = 0,那么系数的值为\alpha _{1} = 3 ;\alpha _{2} = 2

如果\beta = 4,那么系数的值将为:\alpha _{1} = 0 ;\alpha _{2} = 1

\alpha _{1}被完全压缩为零,这就是L1正则化的稀疏性效果。


本文转载自: https://blog.csdn.net/weixin_45839845/article/details/140752828
版权归原作者 看着像26岁的大叔 所有, 如有侵权,请联系我们删除。

“机器学习之回归算法——只需要看这一篇”的评论:

还没有评论