跳转至

统计机器学习03:线性模型

本页统计信息
  • 本页约 1982 个字, 预计阅读时间 7 分钟。

  • 本页总阅读量

前面说到机器学习中的任务主要是分类和回归,分类如前面的贝叶斯定理所展现的那样是输出一个类别(有限的离散数值),而回归的任务则是输出一个real value

线性回归的基本思路

对于n维的样本\(\boldsymbol x=[x_1,x_2,…,x_n]\)找到一系列线性函数\(\omega=[\omega_1,\omega_2,…,\omega_n]\)使得\(f(x)=\omega^T\boldsymbol x+b\),这个问题可以变形为n+1维使得\(f(x)=\omega^T\boldsymbol x\)其中\(\boldsymbol x=[1,x_1,x_2,…,x_n]\)\(\omega=[b,\omega_1,\omega_2,…,\omega_n]\),这样一来表达式的形式更加统一了,而我们的目标就是训练出这个函数f,使得对于训练数据\((x_i,y_i)\),有\(f(x_i)=y_i\),我们要求解的对象就是这个n+1维的向量\(\omega\)

线性回归的loss函数和解

线性回归常见的loss函数定义是最小平方误差(MSE)

\[ MSE=\frac{1}{n}\sum\limits_{i=1}\limits^{n}(y_i-f(x_i,\omega))^2 \]

也会使用残差平方和(RSS),其形式如下:

\[ J_n(\alpha)=\sum\limits_{i=1}\limits^{n}(y_i-f(x_i,\omega))^2=(\boldsymbol y-X^T\omega)^T(\boldsymbol y-X^T\omega) \]

我们对RSS的表达式求梯度有:

\[ \nabla J_n(\alpha)=-2X(\boldsymbol y-X^T\alpha)=0 \]

因此可以得到使得RSS最小的线性回归的解是:

\[ \omega=(XX^T)^{-1}Xy \]

我们需要注意到,每一个样本x是\(d\times 1\)维的向量,因此X是\(d\times n\)维的矩阵,而y也是\(n\times 1\)维的向量,所以当样本数n小于特征数d的时候,\(XX^T\)是不满秩的,求不出逆矩阵,此时的线性回归有多个解

其实这也很好理解,因为要求解的是n+1维的向量\(\omega\),有n+1个变量,因此至少需要n+1个样本才能确定n+1个参数,出现上述情况的时候所有可能的解都可以使得均方误差最小化,此时可以考虑引入正则化项来筛选出需要的结果。

线性回归的统计模型

真实情况下的数据样本往往会有噪声,比如

\[ y=f(\boldsymbol x,\omega)+\epsilon \]

其中\(\epsilon\)是一个随机噪声,服从\(N(0,\sigma^2)\)的正态分布,此时可以通过极大似然法来估计\(\omega\),定义

\[ P(y|\boldsymbol x,\omega,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}\exp[-\frac{1}{2\sigma^2}(y-f(\boldsymbol x,\omega))^2] \]

根据极大似然法有

\[ L(D,\omega,\sigma)=\prod_{i=1}\limits^nP(y_i|\boldsymbol x_i,\omega,\sigma) \]

我们的求解目标变成了:

\[ \omega=\arg\max L(D,\omega,\sigma)= \arg \max\prod_{i=1}\limits^nP(y_i|\boldsymbol x_i,\omega,\sigma) \]

取对数似然之后有

\[ l(D,\omega,\sigma)=-\frac{1}{2\sigma^2}\sum_{i=1}\limits^{n}(y_i-f(x_i,\omega)^2)+c(\sigma) \]

到这一步为止我们又回到了RSS,因此解的表达式依然和上面推出的是一样的。

岭回归 Ridge Regression

我们发现普通的线性回归很容易出现overfitting的情况,比如一些系数\(w_i\)的值非常极端,仿佛就是为了拟合数据集中的点而生的,对测试集中的数据表现就非常差。为了控制系数的size,让表达式看起来更像是阳间的求解结果,我们可以引入正则化的方法。

\[ \omega^{*}=\arg\min \sum_{i=1}\limits^{n}(y_i-w^Tx_i)^2+\lambda\sum_{j=1}\limits^{d}w_j^2 \]

这实际上就是拉格朗日算子,则我们跟之前一样可以将其写成矩阵形式:

\[ (\boldsymbol y-X^T\omega)^T(\boldsymbol y-X^T\omega)+\lambda\omega^T\omega \]

对其求梯度可以得到

\[ \nabla J_n(\alpha)=-2X(\boldsymbol y-X^T\alpha)+2\lambda\omega=0 \]

则其最终的解就是:

\[ \omega^{*}=(XX^T+\lambda I)^{-1}Xy \]

这就是岭回归(Ridge Regression)的方法,其中参数\(\lambda\)是可以自己确定的,我们可以保证矩阵\(XX^T+\lambda I\)是满秩的矩阵。

贝叶斯线性回归

现在我们重新考虑实际样本中可能会出现的噪声,即\(y=f(\boldsymbol x,\omega)+\epsilon\),其中\(\epsilon\)服从\(N(0,\sigma^2)\)的正态分布。 根据贝叶斯定理可以得到:

\[P(\omega|y,x,\sigma)=\frac{P(y|\omega,x,\sigma)P(\omega|x,\sigma)}{P(y|x,\sigma)} \]

即posterior正比于prior和likelihood的乘积,即\(\ln(posterior)\propto \ln(likelihood)\times\ln(prior)\),而在线性回归问题中,我们已经 知道了likelihood就是

\[l(D,\omega,\sigma)=-\frac{1}{2\sigma^2}\sum_{i=1}\limits^{n}(y_i-f(x_i, \omega)^2)+c(\sigma) \]

我们可以用如下方法选择:

\[ \begin{aligned} p(\omega) =N(w|0,\lambda^{-1}I)&=\frac{1}{(2\pi)^{\frac{d}{2}}|\lambda^{-1}I|^{\frac{1}{2}}}\exp^{-\frac{1}{2}\omega^T(\lambda^{-1}I)\omega}\\ \ln(p(\omega)) &=-\frac{\lambda}{2}\omega^T\omega+c\end{aligned} \]

因此在贝叶斯理论下的岭回归模型需要优化的目标可以等价于:

\[ -\frac{1}{2\sigma^2}\sum_{i=1}\limits^{n}(y_i-f(x_i,\omega)^2)+c(\sigma)-\frac{\lambda}{2}\omega^T\omega+c \]

逻辑回归 Logistic Regression

基本概念

逻辑回归往往选择通过一个sigmod函数将样本映射到某个区间上,以此来估计样本属于某种类别的概率从而达到分类的目的。我们经常选用的sigmod函数是:

\[ y=\sigma(z)=\frac{1}{1+e^{-z}} \]

比如对于二分类问题,可以将样本映射到区间(-1,1)上,此时如果计算结果为正数则说明样本属于正例,反之就是反例,可以表示为:

\[ \begin{aligned} P(y_i=1|x_i,\omega)=\sigma(\omega^Tx_i)=\frac{1}{1+e^{-\omega^Tx_i}}\\ P(y_i=-1|x_i,\omega)=1-\sigma(\omega^Tx_i)=\frac{1}{1+e^{\omega^Tx_i}}\end{aligned} \]

上面的两个式子也可以统一写为:

\[ \begin{aligned} P(y_i=1|x_i,\omega)=\sigma(y_i\omega^Tx_i)=\frac{1}{1+e^{-y_i\omega^Tx_i}}\end{aligned} \]

参数估计

我们可以用极大似然法来估计参数\(\omega\),依然用D表示数据集,具体的过程如下所示:

\[ \begin{aligned} P(D) & =\prod_{i\in I}\sigma(y_i\omega^Tx_i)\\ l(P(D)) & =\sum_{i\in I}\ln(\sigma(y_i\omega^Tx_i))=-\sum_{i\in I}\ln(1+e^{y_i\omega^Tx_i}) \end{aligned} \]

因此我们可以将逻辑回归的极大似然法参数估计的loss函数定义成:

\[ E(\omega)=\sum_{i\in I} \ln(1+e^{-y_i\omega^Tx_i}) \]

对于一个二分类问题,我们如果用0和1而不是+1和-1来代表两种分类,那么上面的表达式又可以写为:

\[ \begin{aligned} E(\omega)&=\sum_{i\in I\cap y_i=1}\ln(1+e^{-\omega^Tx_i}) + \sum_{i\in I\cap y_i=0}\ln(1+e^{\omega^Tx_i})\\ &=\sum_{i\in I\cap y_i=1}\ln (e^{\omega^Tx_i})(1+e^{\omega^Tx_i}) + \sum_{i\in I\cap y_i=0}\ln (1+e^{-\omega^Tx_i})\\ &=\sum_{i\in I} \ln(1+e^{\omega^Tx_i})-\sum_{i\in I \cap y_i=1}e^{\omega^Tx_i} \\ &=\sum_{i\in I} (-y_i\omega^Tx_i+\ln(1+e^{\omega^Tx_i})) \end{aligned} \]

我们可以证明\(E(\omega)\)是一个关于\(w\)的凸函数,根据凸函数的可加性,我们只需要证明\(-y_i\omega^Tx_i+\ln(1+e^{\omega^Tx_i})\)是关于\(w\)的凸函数,我们令\(g(\omega)=-y_i\omega^Tx_i+\ln(1+e^{\omega^Tx_i})\)则对其求一阶梯度可以得到:

\[ \frac{\partial g(\omega)}{\partial\omega} = -y_ix_i+\frac{x_ie^{\omega^Tx_i}}{1+e^{\omega^Tx_i}} \]

能得到这个结果是因为我们有这样一个结论:对于一个n维的向量\(\omega\),我们有\(\frac{\partial\omega^T}{\partial\omega}=I_{n}\)

进一步地,我们对上面求的一阶梯度再求二阶梯度,可以得到:

\[ \frac{\partial^2g(\omega)}{\partial\omega^2}=\frac{x_i^2e^{w^Tx_i}}{(1+e^{w^Tx_i})^2}\geq 0 \]

因此我们证明了损失函数是一个凸函数,因此可以用梯度下降的方法求得其最优解,即:

\[ \omega^{*}=\arg\min_{\omega} E(\omega) \]

根据上面求得的一阶梯度,可以得到基于梯度下降法的逻辑回归参数求解迭代方程:

\[ \begin{aligned} \omega_{i+1}&=\omega_{i}-\eta(i)\sum_{i\in I}(-y_ix_i+\frac{x_ie^{\omega_i^Tx_i}}{1+e^{\omega_i^Tx_i}})\\ &=\omega_i+\eta(i)\sum x_i(\frac{1}{1+e^{-\omega_i^Tx_i}}-y_i)\\ &=\omega_i+\eta(i)X(\sigma(\omega_i, X)-y) \end{aligned} \]

其中\(\sigma(x)\)是sigmod函数,而\(\eta(i)\)是自己选择的学习率,一半是一个比较小的数字,并且应该不断减小。

颜色主题调整

评论区~

有用的话请给我个star或者follow我的账号!! 非常感谢!!
快来跟我聊天~