概述
在介绍线性回归前,首先要搞清楚线性模型这个概念
线性模型(linear model)试图学得一个通过属性的线性组合进行预测的函数,即
f(x)=w1x1+w2x2+w3x3+...+wdxd+b
一般用向量形式写成
f(x)=wTx+b
线性回归(linear regression)是试图学得一个线性模型以尽可能准确地预测实值的输出标记。线性回归一般被用在回归问题上,但是对线性回归做出简单的变换,即可用于进行二分类问题。此时的线性回归模型也就变成了我们熟悉的逻辑斯蒂回归(logistic regression)。而一个多分类问题又可以分解成多个二分类问题,于是我们同样可以将逻辑斯蒂回归模型用于解决多分类问题上。以下将顺序介绍线性回归,逻辑斯蒂回归,以及多分类问题如何分解成多个二分类问题。
线性回归(linear regression)
首先我们定义一下字符。一个样本我们用 x 来表示,数据集中第k个样本则为 xk 。一个样本中存在d个特征值,我们用一个列向量来表示一个样本,即 xk=(x1k;x2k;x3k;...;xdk) 。 w 是待学习的权重,因为每个样本中有d个特征,因此w是一个d维的列向量,记为 w=(w1;w2;w3,...,wd) 。在w和b确定的的情况下,模型就确定了下来 y^=wTx+b 。我们用均方误差来衡量模型的性能,则 L(w,b)=∑mi=0(yi−y^2i)=∑mi=0(yi−wTxi−b)2 。其中m为样本总数。
简单梳理一下,在训练过程(在这里我们把确定w和b的过程称为训练过程)中我们的目标是找出令 L(w,b)=∑mi=0(yi−wTxi−b)2 最小的w和b。而在测试过程(在这里我们把根据求得的w和b计算y的过程称为测试过程)中,我们输入 x 的输出为 y^=wTx+b 。
目标明确后,我们如何计算得到w和b使得L(w,b)最小呢?因为这是一个线性模型,而且求解的目标是均方误差最小化,因此我们可以用最小二乘法来求解w和b。
p.s. 为了方便讨论,我们在下面的推导中将x的维度设为1,即d=1
首先将损失函数L分别对w和b求偏导,得:
∂L(w,b)∂b=−2∑i=1m(yi−wxi−b)
∂L(w,b)∂w=−2∑i=1m(xiyi−wx2i−bxi)
令
∂L(w,b)∂b=0 得
b=1m∑mi=1(yi−wxi) 又因为
my¯=∑mi=1yi,mx¯=∑mi=1xi 所以
b=y¯−wx¯
接下来将b代入
∂L(w,b)∂w 中得
∂L(w,b)∂w=−2(∑mi=1xiyi−w∑mi=1x2i−y¯∑mi=1xi+wx¯∑mi=1xi) 。令上式等于0,得
w=∑mi=1xiyi−y¯∑mi=1xi∑mi=1x2i−x¯∑mi=1xi=∑mi=1(xi−x¯)(yi−y¯)∑mi=1(xi−x¯)2
上式第二个等号右边可由求和性质求得,如果不理解没有关系,因为第二个等号左边已经完全有x和y构成,因此不理解第二个等号右边也能够求得w,如果有兴趣,可以参考 这个链接,里面有详细的解释。通过上面的推导,我们求出了w和b,模型就确定了下来。
但是上面的公式推导是基于x的维度d=1的情况,在更一般的情况下d并不等于1,也就是我们一开始讨论的
y^=wTx+b ,此时线性回归有个特殊的名字,叫做多元线性回归。为了方便讨论,我们记
w^=(w;b),X=(xT1,1;xT2,1;...;xTm,1 。那么
y^=Xw^ ,而损失函数
L(w,b)=L(w^)=(y−Xw^)T(y−Xw^)
L(w^) 对
w^ 求偏得
∂L(w^)w^=2XT(Xw^−y)
令偏导等于0,得
w^∗=(XTX)−1XTy
确定了
w^ 后,这个多元线性回归模型就确定了。
逻辑斯蒂回归(logistic regression)
在介绍完线性回归后,我们分析一下如何将线性回归运用到分类问题上,为了方便讨论,我们先从二分类问题开始。线性回归的预测结构 y^ 是一个实值,而如果要处理二分类问题,我们希望 y^∈{0,1} 。那么我们就需要找出一个函数f使得 f(y^)∈{0,1} 。最理想的就是单位阶跃函数:
f(y^)=⎧⎩⎨1,0.5,0,if y^ > 0if y^ = 0if y^ < 0
然而单位阶跃函数却不连续,我们希望找到一个单调可微的函数,因此我们选择了对数几率函数:
y=11+e−y^=11+e−(wTx+b)
将上述函数进行简单变换,可以得到以下表达式:
lny^1−y^=wTx+b
我们将
y^ 认为是样本x为正类的可能性,则
1−y^ 则为样本x为负类的可能性,
y^1−y^ 则是样本x为正样本的相对可能性。如果
y^1−y^>1 说明样本为正类的可能性大于负类的可能性,反之。
lny^1−y^ 则为样本为正类的对数几率,当
lny^1−y^>0 时样本为正类的可能性大于样本为负类 可能性,反之。
简单介绍了如果借助线性回归解决二分类问题并引出逻辑斯蒂回归后,下一步就是推导如何求解逻辑斯蒂回归中的w和b。
首先我们用后验概率估计来表示
y^ ,得到:
⎧⎩⎨y^1−y^=p(y=1|x)=ewTx+b1+ewT+b=p(y=0|x)=11+ewT+b
然后我们就可以用最大似然估计法来估算w和b,损失函数
L(w,b) 记为
L(w,b)=∑i=1mlnp(yi|xi;w,b)
为了方便讨论,我们记
W=(w;b),x^=(x;1),p1(x^;W)=p(y=1|x^;W),p0(x^;W)=p(y=0|x^;W) 。那么
p(yi|xi;w,b)=p1(xi^;W)yip0(xi^;W)1−yi
将上式代入L(w,b)中,可得
L(w,b)=L(W)=∑i=1myiWTxi^−ln(1+eWTxi^)
我们的目标是最大化每个样本被正确分类的可能性,即最大化
L(W) 。估对
L(W) 取反,并用传统的梯度下降法或牛顿法求
argminW −L(W) 的最优解W。这里以梯度下降法为例,梯度下降法的更新公式即推导为:
∂−L(W)∂W=∑i=1mxi^eWTxi^1+eWTxi^−xiyi=∑i=1m(yi^−yi)xi^
Wt+1j=Wtj−α∑i=1m(yi^−yi)xi,j
多分类问题
现实中相对于二分类问题而言,我们更常遇到的是多分类问题。而多分类问题如何拆解成多个二分类问题并用多个二分类器来进行求解呢,一般情况下,我们会将问题进行拆分,然后为每个拆出的二分类任务训练一个分类器。在测试的时候,对这些分类器的预测结果进行集成以获得最终的多分类结果。这里面的关键是如何对问题进行拆分,拆分的策略。以下详细介绍一下常见的三种拆分策略。
OvO,一对一
该策略将N个类别两两配对,从而产生N(N-1)/2个二分类任务,在每个任务中将其中一个类别视为正类,另一类别视为反类。测试阶段中,将所有二分类器得到的结果进行投票产生最终的结果
OvR,一堆其余
将N个类别中的一个类别作为正类,其余类别都作为反类,训练N个分类器。测试阶段中如果只有一个二分类器预测结果为正类,则该二分类器对应的类别就是预测类别。若有多个分类器预测为正,则根据预测置信度决定分类结果。
MvM,多对多
多对多策略是每次将若干个类作为正类,若干个类作为反类。OvO和OvR是MvM的特例。MvM的一种常用技术称为“纠错输出码”。该技术分成两个阶段:
- 编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练出M个分类器
- 解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类别格子的编码进行比较(每个类别在M个分类器中都可能属于正类或者反类,所以每个类别有一个M位的编码),返回其距离最小的类别作为最终预测结果
逻辑斯蒂回归在多分类问题上的推导可参考这篇博客。