机器学习中的回归

本科的时候虽然都学过这些东西,但是自己从来没有总结过这些东西,大多数时候都是抱着应付考试的态度学习的(逃~)。而且之前思考问题从来都不是以数学公式为主,不会找知识之间的关系,没有在较高维度上对这些问题进行联系与思考。最近学习老是陷入递归复习法无法自拔。算了,先简单的总结一下吧,之后面试之前可以详细的总结一波。

机器学习中的任务大多数可以分为分类问题或者回归问题。

  • 输入变量与输出变量均为连续变量的预测问题是回归问题
  • 输出变量为有限个离散变量的预测问题为分类问题
  • 输入变量与输出变量均为变量序列的预测问题为标注问题

举个例子:

  • 预测明天的气温是多少度,这是一个回归任务;
  • 预测明天是阴、晴还是雨,就是一个分类任务。

在机器学习中,回归问题有很多种。例如:线性回归、多项式回归、逻辑回归(Logistic Regression)、softmax回归。下面对这些问题大概进行总结。

在讨论这些问题之前,我们首先介绍下下面要用的符号,我们一共有$m$组已知样本,$(x^{(i)},y^{(i)})$表示第$i$组数据及其对应的类别标记。其中$x^{(i)}=(1,x^{(i)}_1,x^{(i)}_2,…,x^{(i)}_p)^T$为p+1维向量(考虑参数中的偏置项),$y^{(i)}$则为表示类别。模型参数为$\theta=(\theta_0,\theta_1,\theta_2,…,\theta_p)^T$。

线性回归

所谓线性回归就是对样本各个维度进行线性组合,这些的线性指的值对样本维度而言的,而不是对参数而言的。

线性回归模型可以用下面式子概括:

Logistic Regression

简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。 注意,这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘。

那么逻辑回归与线性回归是什么关系呢?

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量$y$服从伯努利分布,而线性回归假设因变量$y$服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

Logistic Regression与softmax回归的区别如下:

  • logistic回归(是非问题)中,$y^i$取0或者1;
  • softmax回归(多分类问题)中,$y^i$取$1,2…k$中的一个表示类别标号的一个数(假设共有$k$类)。

逻辑回归模型可以用下面式子概括

其中$\theta^{T} x^{(i)}$为线性回归方法中的模型;$g(z)$为Logistic函数,取值范围为$[0,1]$。从该式子中也可以看出线性回归于逻辑回归的关系。

所以

一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是:

这个函数的意思就是在给定$x^{(i)}$和$\theta$的条件下$y=1$的概率。

这里$g(h)$就是我们上面提到的sigmoid函数,与之相对应的决策函数为:

选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。

MSE损失函数

其中,$y^{(i)}$和$\hat{y}^{(i)}$分别为样本$x^{(i)}$的真实类标和预测类标。

主要原因是逻辑回归配合MSE损失函数时,采用梯度下降法进行学习时,会出现模型一开始训练时,学习速率非常慢的情况(MSE损失函数

交叉熵损失函数

之前我们已经讨论过交叉熵损失函数的具体含义、来源,他的表达式如下:

其中,

  • $n$为类别的数量
  • $y_j$为指示变量(0或1),如果该类别$j$和观测样本的类别相同就是1,否则是0;
  • $a_j$对于观测样本属于类别$j$的预测概率。

对于批量样本的交叉熵计算公式是:

$m$是样本数,$n$是分类个数。其中,$y_{ij}$为指示变量(0或1),如果样本$i$的类别为$j$就是1,否则是0;$a_{ij}$表示样本$i$属于类别$j$的预测概率。

因为Logistic回归问题就是0/1的二分类问题,可以有

为了方便理解交叉熵损失函数的含义,我们只${(9)}$式进行推导,概率取对数,其单调性不变,有(其实从${(10)}$式推导也可以推导出来相同结果,也就是从最大似然概率的角度)

在上式中,$\log P\left(\hat{y}^{(i)}=1 | x^{(i)} ; \theta\right)$即为我们交叉熵公式中$log a_{i1}$,而$\log P\left(\hat{y}^{(i)}=0 | x^{(i)} ; \theta\right)$为我们交叉熵公式中$log_{i0}$。

那么对于第$i$组样本,假设函数表征正确的组合对数概率为:

其中,$I\{y^{(i)}=1\}$和$I\{y^{(i)}=0\}$为指示函数(indicative function),简单理解为$\{\}$内条件成立时,取1,否则取0,这里不赘言。也就是说,$I\{y^{(i)}=1\}$和$I\{y^{(i)}=0\}$分别为我们交叉熵损失公式中的指示函数$y_{i1}$和$y_{i0}$。这里简单的解释下为何$I\{y^{(i)}=0\}$等于$(1-y^{(i)})$。因为这是二分类问题,所以$y^{(i)}$只有两种0和1两种取值,当$y^{(i)}=0$的时候$I\{y^{(i)}=0\}$为1,当$y^{(i)}=1$的时候$I\{y^{(i)}=0\}$为0,综合这两种情况可得证。同理$I\{y^{(i)}=1\}$等于$y^{(i)}$。

那么对于一共$m$组样本,我们就可以得到模型对于整体训练样本的表现能力:

由以上表征正确的概率含义可知,我们希望其值越大,模型对数据的表达能力越好。而我们在参数更新或衡量模型优劣时是需要一个能充分反映模型表现误差的损失函数(Loss function)或者代价函数(Cost function)的,而且我们希望损失函数越小越好。由这两个矛盾,那么我们不妨领代价函数为上述组合对数概率的相反数:

这就是大名鼎鼎的交叉熵损失函数。其实如果从${(10)}$式取负对数函数,也能够推导出来相同的结果。我们可以看出在分类问题中,若给定了真实类标的分布,最小化离散度等价于最小化交叉熵损失函数,等价于最大似然函数。

softmax回归

Softmax回归处理多分类问题,不同于逻辑回归中$y^{(i)}$表示一个数$\{0,1\}$,这里的$y^{(i)} \in\{1,2, \ldots, k\}$。要搭配one-hot编码使用

softmax回归主要是估算对于输入样本$x^{(i)}$属于每一类别的概率,所以softmax回归的假设函数如下:

这里的$\theta_{1}, \theta_{2}, \ldots, \theta_{k}$均属于$R^{p+1}$。乘以$\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}}$的目的是的目的是为了使概率在$[0,1]$之间且概率之和为1。之所以这样操作,可以简单的解释为为了对应真实label的one-hot编码。因此,softmax回归将样本$x^{(i)}$标记为类别$j$的概率为:

下面来看个例子(图片来自台大李宏毅《一天搞懂深度学习》)

也就是说,softmax中的每一个类别都有自己的参数,所有这些向量通常都作为行存储在参数矩阵$\theta$中:

下面直接来看softmax回归的交叉熵损失函数:

其中,$1\{\cdot\}$为示范函数,即$1\{值为真的表达式\}=1,1\{值为假的表达式\}=0$,例如$1\{1+1=2\}=1,1\{1+1=3\}=0$。

logistic、softmax回归和神经网络关系

神经网络是一个多层次的分类模型,其实logistic回归和softmax回归可以看出最简单的神经网络,结构如下图所示:

一般的神经网络有输入层,隐含层以及输出层构成,而上图中只有输入层和输出层,而没有隐含层。神经网络处理二分类时,输出层为一个节点,但处理$K(K>2)$分类问题时,数据节点为$K$个,这个logistic回归和softmax回归保持一致。值得注意的,在神经网络中的最后一层隐含层和输出层就可以看成是logistic回归或softmax回归模型,之前的层只是从原始输入数据从学习特征,然后把学习得到的特征交给logistic回归或softmax回归处理。

因此,可以把处理分类问题的神经网络分成两部分,特征学习和logistic回归或softmax回归。

参数冗余

Softmax 回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量$\theta_j$减去向量$\psi$这时,每一个$\theta_j$都变成了$\theta_{j}-\psi(j=1,2, \ldots k)$,此时假设函数变成了以下的式子:

换句话说,从参数向量$\theta_j$减去向量$\psi$完全不影响假设函数的预测结果!这表明前面的 softmax 回归模型中存在冗余的参数。更正式一点来说, Softmax 模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数$h_{\theta}(x)$。

进一步而言,如果参数$\left(\theta_{1}, \theta_{2}, \ldots, \theta_{k}\right)$是代价函数$J(\theta)$的极小值点,那么$\left(\theta_{1}-\psi, \theta_{2}-\psi, \ldots, \theta_{k}-\psi\right)$同样也是它的极小值点,其中$\psi$可以为任意向量。因此使$J(\theta)$ 最小化的解不是唯一的。(有趣的是,由于$J(\theta)$仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是 Hessian 矩阵是奇异的/不可逆的,这会直接导致采用牛顿法优化就遇到数值计算的问题)

注意,当$\psi=\theta_{1}$的时候,我们总是可以将$\theta_{1}$替换为$\theta_{1}-\psi=0$(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量$\theta_{1}$(或其他$\theta_{j}$中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的$k\times(p+1)$个参数$\left(\theta_{1}, \theta_{2}, \dots, \theta_{k}\right)$其中,$\theta_{j} \in R^{p+1}$。我们可以令$\theta_{1}=\overrightarrow{0}$,只优化剩余的$(k-1)\times(p+1)$个参数,这样算法依然能够正常工作。

在实际应用中,为了使算法实现更简单清楚,往往保留所有参数$\left(\theta_{1}, \theta_{2}, \dots, \theta_{k}\right)$,而不任意地将某一参数设置为 0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。

Softmax回归与Logistic 回归的关系

其实softmax回归是logistic回归的一般形式,logistic回归是softmax回归在$k=2$时的特殊形式,下面通过公式推导来看下当$k=2$时softmax回归是如何退化成logistic回归的:

当k=2时,softmax回归的假设函数为:

前面说过softmax回归的参数具有冗余性,从参数向量$\theta_{1}, \theta_{2}$中减去向量$\theta_{1}$,完全不影响结果。现在我们令$\theta^{\prime}=\theta_{2}-\theta_{1}$,并且两个参数向量都减去$\theta_{1}$,则有:

Softmax 回归 vs. k 个二元分类器

知道“one vs all”的都知道对于K元分类而言,可以训练K个二元分类器来实现K元分类,那么究竟何时该使用softmax回归,何时使用K个二元分类器呢,ng给出的标准是这样的:

如果你的数据集的K个类别是相互独立互斥的,比如手写体识别1-10,样本只能有一个类别,某一样本不可能既属于1又属于2。那么就用softmax回归

如果你的数据集的K个类别不是互斥的,比如音乐类型分类(考虑四个类别:人声音乐、舞曲、影视原声、流行歌曲),这些某类别不是互斥的,例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。

多项式回归

线性回归的局限性是只能应用于存在线性关系的数据中,但是在实际生活中,很多数据之间是非线性关系,虽然也可以用线性回归拟合非线性回归,但是效果将会很差,这时候就需要对线性回归模型进行改进,使之能够拟合非线性数据。

从下面两个图中可以看到两者之间的区别

线性回归多项式回归

如图所示,左图为数据呈现出线性关系,用线性回归可以得到较好的拟合效果。右图数据呈现非线性关系,需要多多项式回归模型。多项式回归是在线性回归基础上进行改进,相当于为样本再添加特征项。如右图所示,为样本添加一个$x^2$的特征项,可以较好地拟合非线性的数据。

注意,这里所说的多项式回归指的是添加输入数据的多项式,而不是参数。也就是说,不管是线性回归还是多项式回归,其中的线性和多项式都是针对输入数据而言的,而不是参数。从另外一方面考虑,参数是训练出来的,所以对参数平方之类的操作并没有什么意义。

多特征下多项式回归的模型表达式?我个人猜测最简单的情况应该是这样的,线性回归中的模型表达式写成向量形式为$\theta^T x^{(i)}$,由此启发,则$$次多项式回归模型表达式为:

在这个式子中,每一个$\theta$和$x$均为向量。

岭回归

所谓岭回归就是为了解决过拟合问题,而在损失函数后面L2正则化。

参考

分类与回归的区别
交叉熵代价函数(损失函数)及其求导推导
逻辑回归(Logistic Regression)(一)
机器学习基础-6.多项式回归
多项式回归 Polynomial Regression
Logistic and Softmax Regression (逻辑回归和Softmax回归
softmax回归(Softmax Regression)
03.2-交叉熵损失函数.md

------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道