线性模型

“种一棵树最好的时间是十年前,其次是现在”

1 线性回归

线性回归是最简单的机器学习模型。尝试通过样本属性的线性组合完成对样本的预测。

假设样本x={x1,x2, ,xd}x = \{x_1,x_2,\cdots,x_d\},线性回归尝试通过下述式子完成对样本的预测:
f(x)=w1x1+w2x2++wdxd+bf(x) = w_1x_1 + w_2x_2 + \cdots + w_dx_d + b
向量化表示为f(x)=wTx+bf(x) = w^Tx + b,w是权重向量,b是偏置项。

线性回归中的权重w很直接的表示了样本各属性在预测中的重要性,模型具有很强的可解释性。权重越大,表示该属性对预测结果的影响越大。
线性模型虽然简单,但可在其基础上引入层级结构或者高维映射可以得到非线性模型。

定义了线性回归的形式,我们也需要定义一个损失函数对模型的拟合能力进行评价,即评估f(x)f(x)与y之间的接近程度。

线性回归的损失函数定义为:
J(w,b)=12i=1m((wTx(i)+b)y(i))2J(w,b) = \frac{1}{2}\sum_{i=1}^{m}((w^Tx^{(i)}+b) - y^{(i)})^2

那么,线性回归模型训练的目的是基于当前的训练集,最小化损失函数值,从而找到最优的w和b。即线性回归学得的模型为:
(w,b)=argmin(w,b)J(w,b)(w^*,b^*) = argmin_{(w,b)}J(w,b)
上面定义的损失函数为训练集样本的均方误差,均方误差也叫作欧式距离。

基于均方误差最小化进行模型求解的方法叫作最小二乘法。在线性回归中,最小二乘法的目的是找到一条直线,使得所有样本到直线上的欧氏距离之和最小。

2 最小二乘法

最小二乘法中估计参数w和b的过程叫作参数估计,梯度下降法是最常用的参数估计方法。

2.1 梯度下降法

梯度下降法的基本思想是:对于待估计的参数,首先选定初始值,然后按照某种设定的规则持续改变参数以减小损失函数的值,直至最后收敛得到损失函数最小时的参数值。

梯度下降法中参数更新的方向是沿着梯度的反方向进行更新。因为已知梯度总是指向函数上升最快的方向,因此梯度的反方向总是指向函数最快下降的方向,沿着函数在当前位置梯度的反方向移动,可以保证函数总是以最快的速度接近最小值。

将w和b连接成单一向量,表示为θ\theta。将分类模型h(w,b)h(w,b)表示成hθ(x)h_{\theta}(x)。那么梯度下降法的更新规则为:
θj:=θjαθjJ(θ)\theta_j := \theta_j - \alpha \frac{\partial}{\theta_j}J(\theta)
α\alpha称之为学习率,表示沿当前梯度反方向移动步长的大小。
θjJ(θ)=θj12i=1m(θTx(i)y(i))2=i=1m(θTx(i)y(i))θji=1m(θTx(i)y(i))=i=1m(θTx(i)y(i))i=1mxj(i)=(hθ(x)y)xj\frac{\partial}{\theta_j}J(\theta) = \frac{\partial}{\theta_j}\frac{1}{2}\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})^2 \\ =\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})* \frac{\partial}{\theta_j}\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)}) \\ =\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})*\sum_{i=1}^{m}x_j^{(i)} \\ =(h_{\theta}(x) - y) * x_j

那么,梯度下降法的更新规则为:
线性模型

梯度下降法的更新规则也有一个直观的解释,即更新量的幅值与误差的大小成正比。如果基于当前的参数w和b对当前这一个训练样本的预测结果与真实值较接近,也就是误差项(y(i)hθ(x(i)))(y^{(i)}-h_{\theta}(x^{(i)}))很小,那么当前参数需要改变的幅度就比较小;反之,则需要对参数进行较大幅度的改变。

梯度下降法根据每次更新时基于的样本数量的不同,又分为批梯度下降法和随机梯度下降法。

2.1.1 批梯度下降法

线性模型
批梯度下降法,每次都基于全体的训练样本完成一次参数的更新。批梯度下降法计算量大,更新速度慢,但在更新过程中不易产生震荡。

2.1.2 随机梯度下降法

线性模型
每次参数的更新都是基于单个样本进行的。随机梯度下降法,更新速度快,但容易在最优解附近产生震荡。

2.1.3 总结

梯度下降法是最常用的迭代优化算法,由于损失函数的最优解往往不止一个,因此梯度下降法往往很难真正的收敛到最小值,但一般认为,经过梯度下降法的迭代之后往往可以收敛到近似最小值的位置,此时得到的模型也具有非常良好的分类性能。

##2.2 从矩阵的角度再来看下最小二乘法
线性模型
线性模型
线性模型
线性模型
线性模型

第三步是基于实数的迹仍然为该实数;第四步是基于trA=trATtr A = tr A^T及实数关于参数的导数为0;第五步是基于下式:
线性模型
A=θT,B=XTX,C=IA = \theta^T,B=X^TX,C=I可得第五个式子的前两项。
基于式子AtrAB=BT\nabla _{A} trAB = B^T可得第五个式子的第三项。
令导数为0,可得θ\theta的闭合解为:
θ=(XTX)(1)XTy\theta = (X^TX)^{(-1)}X^Ty

上面的闭合解是基于XTXX^TX是一个满秩矩阵,即XTXX^TX可逆,但是在样本的特征数n大于样本数m时,rank(X),rank(XT)min(m,n)mrank(X),rank(X^T) \leq min(m,n) \leq mrank(XTX)min(rank(X),rank(XT))mrank(X^TX) \leq min(rank(X),rank(X^T)) \leq m,但XTXRn×nX^TX \in R^{n\times n},因此此时XTXX^TX一定不可逆,此时可以解出多个参数使得均方误差最小化,选择哪一个解作为输出将由学习算法的归纳偏好决定,常见的做法是使用正则化。
##2.3 选用平方和为损失函数的概率解释
假设对于线性回归,输入与输出之间的关系为:
y(i)=θTx(i)+ϵ(i)y^{(i)} = \theta^Tx^{(i)} + \epsilon^{(i)}
ϵ(i)\epsilon^{(i)}表示未考虑到的特征或随机噪声。假设ϵ(i)\epsilon^{(i)}是独立同分布的,符合均值为0,方差为σ2\sigma^2的高斯分布,即ϵ(i)\epsilon^{(i)} ~ N(0,σ2)N(0,\sigma^2)。那么,误差项的概率密度函数为:
线性模型

线性模型

θ\theta不是随机变量。
定义θ\theta的似然函数为L(θ)=L(θ;X,y)=p(yX;θ)L(\theta) = L(\theta;X,y) = p(y|X;\theta)
线性模型

最大化该似然函数,由于对数函数为严格增函数,不改变函数取极值点的位置,且取对数之后,连乘变连加,避免了参数下溢也易于计算,因此定义似然函数为:
线性模型

最大化似然函数即最小化误差的平方和,即
线性模型

总结:基于误差项符合高斯分布的假设,最小化样本集误差的平方和即最大化参数的似然概率。也就是说最小化训练集的误差平方和即得到了出现可能性最大的线性回归模型,也就证明了将误差项的平方和作为损失函数的合理性。

3 局部加权线性回归

普通线性回归:
线性模型

局部加权线性回归:
线性模型

局部加权线性回归相比于普通的线性回归,就是在拟合每一个样本的过程中添加了一个权重系数,如果对某一个样本,权重系数很大,则很难最小化误差的平方,反之,则较易实现。

对于权重项的一个合理的假设是:
线性模型

式子中的x(i)x^{(i)}表示训练集中的各训练样本,x表示当前的测试样本。因此,若训练集中的样本与当前的测试样本很类似,则权重值为1,影响越大;否则,两者误差越大,权重值越接近于0,影响越小。w并不是一个随机变量,因此上式只是类似于高斯分布的形式,但不能说w符合高斯分布。

τ\tau值是局部加权线性回归中可以调整的一个超参数,其决定对当前测试样本进行预测时有多少训练样本会对其预测过程产生影响。τ\tau值越大,会对其产生影响的训练样本越多;τ\tau值越小,会对其产生影响的训练样本越少。因此,tautau值越小,越易于使得学习到训练样本集的分布,即更易于过拟合。

局部加权线性回归是一个非参数化的学习算法,因为在对新样本做预测时,必须保留所有的训练样本以计算w,从而拟合得到最优模型参数进行预测。而普通的线性回归是一个参数化的算法,因为只要在训练集上拟合得到最优的参数w和b,在对新样本进行预测时,仅需计算wTx+bw^Tx+b即可,即模型训练完成之后只需保留训练出的参数即可,因此为参数化的机器学习算法。

4 logistic回归 and 感知机算法

4.1 logistic回归

线性回归虽然叫做回归,但其也可用于分类任务。以二分类任务为例,对于数据集D={(x1,y1),(x2,y2), ,(xm,ym)}D = \{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\},一般通过学习得到线性回归模型,即w和b。对新样本预测时,计算f(x)=wTx+bf(x) = w^Tx+b,若结果大于设定的阈值则判断为正例,否则为反例。

对二分类任务,假设正类为1,负类为0.

在上面的线性回归部分中,我们定义hθ(x)=θTxh_{\theta}(x) = \theta^Tx,而在logistic回归中,定义hθ(x)=g(θTx)=11+eθTxh_{\theta}(x) = g(\theta^Tx) = \frac{1}{1 + e^{-\theta^Tx}}

定义g(z)=11+ezg(z) = \frac{1}{1 + e^{-z}}为logistic function或sigmoid function,函数的曲线为:
线性模型
函数有两个性质:
函数值域[0,1];
g,(z)=g(z)(1g(z))g^,(z) = g(z)(1 - g(z))

给定了logistic regression的函数形式,剩下的问题就是如何去求解最优化参数?

前面在线性回归中我们看到了假设误差项符合高斯分布的情况下,可以通过最大化参数的对数似然函数求得参数的最优解。那么对于logistic regression,我们认为:
p(y=1x;θ)=hθ(x)p(y=0x;θ)=1hθ(x)p(y=1|x;\theta) = h_{\theta}(x) \\ p(y=0|x;\theta) = 1 - h_{\theta}(x)
那么两式联立,有p(yx;θ)=(hθ(x))y(1hθ(x))(1y)p(y|x;\theta) = (h_{\theta}(x))^y(1 - h_{\theta}(x))^{(1 - y)}
由于各训练样本独立同分布,参数θ\theta的似然函数为:
L(θ)=p(yX;θ)=Πi=1mp(y(i)x(i);θ)=Πi=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i))L(\theta)=p(y|X;\theta) = \Pi_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) \\ =\Pi_{i=1}^{m}(h_{\theta}(x^{(i)}))^{y^{(i)}}(1 - h_{\theta}(x^{(i)}))^{(1 - y^{{(i)}})}

变似然函数为对数似然,可得:
l(θ)=logL(θ)=i=1my(i)(hθ(x(i)))+(1y(i))(1hθ(x(i)))l(\theta) = \log L(\theta) = \sum_{i=1}^{m}{y^{(i)}(h_{\theta}(x^{(i)}))}+{(1 - y^{{(i)}})(1 - h_{\theta}(x^{(i)}))}

如果想最大化对数似然,可以使用梯度上升算法,即设定参数θ\theta的初始值,在每一步都沿着当前位置的梯度方向移动,迭代过后可以到达对数似然函数的最大值处。因此核心问题依然是计算l(θ)l(\theta)θ\theta的导数。

对单个训练样本(x,y),有:
线性模型

因此,最终的参数更新规则为:
线性模型

相比于普通最小二乘,最后我们得到了同样的更新规则,原因就是最小二乘和logistic regression都属于GLM。

##4.2 感知机算法
线性模型

感知机算法和logistic reression的区别在于g(z)的函数形式不同,但是最终得到了同样的参数更新规则:
线性模型

感知机算法虽然和logistic regression有同样的参数更新规则,但很难通过最大化似然概率的规则进行推导。

5 牛顿法

上面介绍的梯度下降法是一阶的迭代优化算法,而这里说的牛顿法是二阶的迭代优化算法。

考虑对函数f(x)=0进行求解,将f(x)=0在x0x_0处进行泰勒展开,可得:
f(x)=f(x0)+f(x0)(xx0)+12!f(x0)(xx0)2++1n!f(n)(x0)(xx0)n+f(x) = f(x_0) + f^{'} (x_0)(x-x_0) + \frac{1}{2!}f^{''}(x_0)(x-x_0)^2+\cdots+\frac{1}{n!}f^{(n)}(x_0)(x - x_0)^n+\cdots
忽略二阶及以上的项,只保留线性部分。可得f(x0)+f(x0)(xx0)=0f(x_0)+f^{'}(x_0)(x-x_0) = 0,求解可得x=x1=x0f(x0)f(x0)x=x_1=x_0 - \frac{f(x_0)}{f^{'}(x_0)}
因为在求解x1x_1的过程中忽略了二阶及更高阶的项,因此上面求得的x1x_1并不能真正意义上实现f(x)=0f(x)=0,而只是相比于x0x_0而言,使得f(x)f(x)更加接近于0。因此,就有了迭代的思想,xn+1:=xnf(xn)f(xn)x_{n+1} := x_n - \frac{f(x_n)}{f^{'}(x_n)},迭代优化使得f(x)f(x)越来越接近于0。

牛顿法的直观解释为:
线性模型
在每一点处求得函数的切线,迭代得到的下一解为该切线与f(x)=0f(x) = 0的交点,如此迭代,越来越接近真实的解。上图中,x0=4.5x_0 = 4.5,引出切线,得到其与f(x)=0f(x) = 0交点处为x1=2.8x_1 = 2.8,在x1x_1处再引出新的切线,得到x2=1.8x_2 = 1.8,如此迭代,直到接近函数的真实解。

而在使用牛顿法对最大似然函数进行求解的过程中,由于目的是最大化l(θ)l(\theta),也就是要求得l(θ)=0l^{'}(\theta)=0的解,那么牛顿法的迭代公式就变化为了θ:=θf(θ)f(θ)\theta := \theta - \frac{f^{'}(\theta)}{f^{''}(\theta)}

在logistic regression中,参数θ\theta为向量,此时牛顿法要变换迭代形式为θ:=θH1θl(θ)\theta := \theta - H^{-1}\nabla_{\theta}l(\theta)
H称之为Hessian矩阵,Hij=2l(θ)θiθjH_{ij}=\frac{\partial^2l(\theta)}{\partial\theta_i\partial\theta_j}.

牛顿法相比于梯度下降法,收敛速度快,但是每一轮迭代都需要计算Hessian矩阵,计算量较大。

为了解决牛顿法计算量大的缺点,又有了拟牛顿法(BFGS、L-BFGS)。

6 GLM

前面介绍的线性回归、logistic regression都得到了相同的参数迭代形式,是巧合还是必然?答案是必然的,因为其都属于泛化线性模型(Generalized Linear Model,GLM)。

6.1 指数族

如果一个分布可以写成以下形式,则认为该分布属于指数族分布:
线性模型

伯努利分布属于指数族:
伯努利分布:
y{0,1};P(y=1)=ϕ,P(y=0)=1ϕy \in \{0,1\};P(y=1)=\phi,P(y=0)=1-\phi.
线性模型
η=logϕ1ϕ\eta = \log \frac{\phi}{1-\phi},得到ϕ=11+eη\phi = \frac{1}{1+e^{-\eta}},同时有:
线性模型
因此,伯努利分布属于指数族分布。

高斯分布:
根据2.3节看到,假设误差的分布为高斯分布时,最后得到的参数更新规则和方差无关,只和均值有关。因此,下面设定高斯分布的方差为1.
线性模型

当设置参数为如下值时,可以发现高斯分布同样隶属于指数族分布。
线性模型

多项式分布、泊松分布、gamma分布、beta分布都属于指数族。

6.2 构建GLM

考虑分类或回归的问题,希望预测y的值,其中y是x的函数。
为了构建出GLM,我们需要遵守三个假设:
线性模型
线性模型

###6.2.1 普通最小二乘属于GLM
假设yx;θy|x;\theta ~ N(u,σ2)N(u,\sigma^2),那么有:
hθ(x)=E[yx;θ]=u=η=θTxh_{\theta}(x) = E[y|x;\theta] \\ =u = \eta = \theta^Tx
第一个等号来自于上述第二个假设,第二个等号来自于高斯分布的期望为u,第三个等号来自于论证高斯分布属于指数族时得到的u=ηu = \eta,最后一个等号来自于上述第三个假设。
###6.2.2 logistic regression属于GLM
假设yx;θy|x;\theta~Bernoulli(ϕ)Bernoulli(\phi),有:
hθ(x)=E[yx;θ]=ϕ=11+eη=11+eθTxh_{\theta}(x) = E[y|x;\theta] \\ =\phi = \frac{1}{1+e^{-\eta}} = \frac{1}{1+e^{-\theta^Tx}}
第一个等号来自于上述第二个假设,第二个等号来自于伯努利分布的期望为ϕ\phi,第三个等号来自于论证伯努利分布属于指数族时得到的u=11+eηu = \frac{1}{1+e^{-\eta}},最后一个等号来自于上述第三个假设。

我们考虑单独可微的函数g(.),令g(η)=E[T(y);η]g(\eta) = E[T(y);\eta],则这样的模型称之为GLM,g称之为响应函数(response function),g1g^{-1}称之为联系函数(link function)。因此,高斯族的响应函数为恒等函数,伯努利分布的响应函数为sigmoid函数。

6.3 softmax

6.3.1 多项式分布属于指数族

softmax函数对应的是多项式分布,考虑多分类问题y{1,2,, ,k}y \in \{1,2,,\cdots,k\},定义概率分布为:p(y=j)=ϕj,j1,2, ,k1;p(y=k)=1j=1k1ϕjp(y = j) = \phi_j,j \in 1,2,\cdots,k-1;p(y = k) = 1- \sum_{j=1}^{k-1}\phi_j

首先论证多项式分布同样属于指数族分布。
定义T(y)Rk1T(y) \in R^{k-1}为:
线性模型
再定义一个示性函数1{True}=1,1{False}=01\{True\}=1,1\{False\}=0
结合上述两种定义,可以有T(y)i=1{y=i}T(y)_i = 1\{y=i\}E(T(y)i)=p(y=i)=ϕiE(T(y)_i) = p(y=i) = \phi_i

线性模型
因此有:
线性模型
因此,说明多项式分布同样属于指数族分布。

6.3.2 softmax函数和softmax回归

由于有ηi=logϕiϕk\eta_i = \log\frac{\phi_i}{\phi_k},那么有eηi=ϕiϕke^{\eta_i} = \frac{\phi_i}{\phi_k}eηiϕk=ϕie^{\eta_i}\phi_k=\phi_iϕki=1keηi=i=1kϕi=1\phi_k\sum_{i=1}^{k}e^{\eta_i} = \sum_{i=1}^{k}\phi_i = 1 => ϕk=1i=1keηi\phi_k=\frac{1}{\sum_{i=1}^{k}e^{\eta_i}},代回可得:
ϕi=eηij=1keηj\phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^{k}e^{\eta_j}}
上式就叫做softmax函数。

基于GLM中的第三个假设,有ηj=θjTx,j{1,2, ,k1}.θjRn+1,j\eta_j = \theta_j^Tx,j\in\{1,2,\cdots,k-1\}.\theta_j \in R^{n+1},为学得的第j个分类器的权值系数,因此,p(y|x)为:
p(y=ix;θ)=ϕi=eηij=1keηj=eθiTxj=1keθjTxp(y=i|x;\theta) = \phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^{k}e^{\eta_j}} = \frac{e^{\theta_i^Tx}}{\sum_{j=1}^{k}e^{\theta_j^Tx}}
上式叫做softmax回归,可用于对多类别目标的分类,是softmax函数的泛化。
那么,使用softmax回归得到的模型的输出为:
线性模型
即softmax回归得到了各样本属于类别y{1,2, ,k1}y \in \{1,2,\cdots,k-1\}的概率,那么样本属于第k类的概率为ϕk=1i=1k1ϕi\phi_k = 1 - \sum_{i=1}^{k-1}\phi_i

6.3.3 softmax回归的交叉熵损失和梯度

对单个样本(x,y),y{1,2, ,k}(x,y),y \in \{1,2,\cdots,k\},softmax回归的损失函数为:
loss(y,x)=log(eθyTxi=1keθiTx)=log(i=1keθiTx)θyTx=log(i=1kfi)fyloss(y,x) = -\log(\frac{e^{\theta_y^Tx}}{\sum_{i=1}^{k}e^{\theta_i^Tx}}) = \log(\sum_{i=1}^{k}e^{\theta_i^Tx}) - \theta_y^Tx = \log(\sum_{i=1}^{k}f_i) - f_y
最后一个式子中的fi=θiTxf_i = \theta_i^Tx,表示样本xx属于类别ii的score值。

由于log-log为单调减函数,样本x被分类之后,得到了其属于各类别的概率,由于概率取值小于等于1,因此损失值一定大于等于0,同时其属于正确类别y的概率越大,损失值越小。因此在神经网络的训练中,随着训练程度的加深,样本被正确分类的概率越来越大,loss值也就逐步递减接近于0。

线性模型

单个样本(xi,yi)(x_i,y_i)的loss值对softmax函数输入的梯度为:
lossfyi=efyil=1kefl1lossfj=efjl=1kefl   (jyi)\frac{\partial loss}{\partial f_{y_i}} = \frac{e^{f_{y_i}}}{\sum_{l=1}^{k}e^{f_l}} - 1 \\ \frac{\partial loss}{\partial f_j} = \frac{e^{f_j}}{\sum_{l=1}^{k}e^{f_l}} ~~~(j \neq y_i)

包含m个样本的训练集的损失值为:
Loss=1mi=1mefyil=1keflLoss = -\frac{1}{m}\sum_{i=1}^{m}\frac{e^{f_{y_i}}}{\sum_{l=1}^{k}e^{f_l}}

7 LDA

线性判别分析(Linear Discriminant Analysis,LDA)的思想十分朴素:给定训练样本集,设法将样本投影到一条直线上,使得同类样本的投影点尽可能接近,异类样本的投影点尽可能远离。在对新样本进行类别判断时,同样将其投影到这条直线上,根据投影点的位置决定样本的类别。

7.1 样本到直线的投影

点x到直线w的投影为:
线性模型

点x在单位向量W\vec{W}上的投影点M到原点的距离为:OM=oxcosθ=oxox woxw=oxw|\vec{OM}| = |\vec{ox}|\cos\theta = |\vec{ox}|*\frac{\vec{ox}~\vec{w}}{|\vec{ox}||\vec{w}|} = \vec{ox}*\vec{w}。因此,点x在单位向量w\vec{w}上的投影点M到原点的距离为wTx\vec{w}^T\vec{x}

M点的坐标为:
M点满足两个式子:OM=OMw,OM=wTx\vec{OM} = |\vec{OM}|*\vec{w},|\vec{OM}| = \vec{w}^T\vec{x},因此有OM=OxwTw\vec{OM} = \vec{Ox}\vec{w}^T\vec{w}

假设w=[15   25],x=[3   4]\vec{w} = [\frac{1}{\sqrt{5}} ~~~ \frac{2}{\sqrt{5}}] , \vec{x} = [3 ~~~ 4],那么M点的坐标为:[3   4][1525][15   25]=[2.2   4.4][3 ~~~ 4] \left [ \begin{matrix} \frac{1}{\sqrt{5}} \\ \frac{2}{\sqrt{5}} \end{matrix} \right ] [\frac{1}{\sqrt{5}} ~~~ \frac{2}{\sqrt{5}}] = [2.2 ~~~ 4.4]

方向向量:
1.已知直线ax+by+c = 0,则直线的方向向量s=(b,a)(b,a)\vec{s}=(-b,a)或者(b,-a)
2.若直线的斜率为k,则该直线的一个方向向量为s=(1,k)\vec{s}=(1,k)
3.若A(x1,y1)A(x_1,y_1)B(x2,y2)B(x_2,y_2)均位于同一直线上,则该直线的一个方向向量为s=(x2x1,y2y1)\vec{s}=(x_2-x_1,y_2-y_1)

7.2 二分类LDA

训练样本集D={(xi,yi)},i(1, ,m),yi{0,1}D=\{(x_i,y_i)\},i\in(1,\cdots,m),y_i\in\{0,1\},各样本点投影到直线w之后的投影点距离原点的距离为wTx(i),i=1, ,mw^Tx^{(i)},i=1,\cdots,m

LDA的目标是投影之后的样本点同类别的尽可能内聚,不同类别的尽可能远离,因此就有两个要求,一是不同类别的样本投影点团簇的中心位置尽可能远离,二是同类别的样本投影点方差尽可能小。

假设原始数据集中两类样本点的中心点分别为u0u_0u1u_1,方差分别为Σ1\Sigma_1Σ2\Sigma_2,则样本集投影到直线w之后的投影点的中心位置距离原点的距离分别为wTu0w^Tu_0wTu1w^Tu_1,而各类样本投影团簇的方差分别为wTΣ0ww^T\Sigma_0wwTΣ1ww^T\Sigma_1w

联系我们上面提到的高内聚低耦合目标,希望wTΣ0w+wTΣ1ww^T\Sigma_0w+w^T\Sigma_1w尽可能小,而wTu0wTu122||w^Tu_0 - w^Tu_1||_2^2尽可能大,因此最终拟最大化的目标是:
J=wTu0wTu122wTΣ0w+wTΣ1w=wT(u0u1)(u0u1)TwwT(Σ0+Σ1)wJ = \frac{||w^Tu_0 - w^Tu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(u_0 - u_1)(u_0 - u_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}

定义Sw=Σ0+Σ1=xx0(xu0)(xu0)T+xx1(xu1)(xu1)TS_w = \Sigma_0 + \Sigma_1 = \sum_{x \in x_0}(x - u_0)(x - u_0)^T + \sum_{x \in x_1}(x - u_1)(x - u_1)^T为类内散度矩阵;
定义Sb=(u0u1)(u0u1)TS_b = (u_0 - u_1)(u_0 - u_1)^T为类间散度矩阵。

那么LDA预最大化的目标为:J(w)=wTSbwwTSwwJ(w) = \frac{w^TS_bw}{w^TS_ww}
下面的任务就是求解w。注意到预最大化的目标分子分母都和w有关,因此对w扩充任意倍后,上式依然成立。故添加限制条件为wTSww=1w^TS_ww = 1,因此最优化的目标变为:
maxw   wTSbws.t.   wTSww=1max_w~~~ w^TS_bw \\s.t.~~~w^TS_ww = 1

引入拉格朗日乘子后,得:J(w)=wTSbwλ(wTSww1),J(w)w=2Sbw2λSwwJ(w) = w^TS_bw - \lambda(w^TS_ww - 1),\frac{\partial J(w)}{\partial w} = 2S_bw - 2\lambda S_ww,令导数为0,可得Sbw=λSwwS_bw = \lambda S_ww。由于Sbw=(u0u1)(u0u1)Tw=(u0u1)λwS_bw = (u_0 - u_1)(u_0 - u_1)^Tw=(u_0 - u_1)\lambda_wλw\lambda_w为实数,因为对w扩充任意倍数仍为同一直线,因此同时约去等式两边的系数,得w=Sw1(u0u1)w = S_w^{-1}(u_0-u_1)

因此,只需在原始数据集上计算出两类样本的均值和协方差,就可以得到最佳的投影直线w。而求SwS_w的逆往往通过奇异值分解实现。

对一个数据集进行LDA得到具有最佳分类性能的投影直线后,对新样本x进行分类时,计算wTx+bw^Tx+b,根据该值是否大于0即可完成该样本的分类。

7.3 多分类LDA

假设现在样本有C类,原始每个样本为d维,投影之后变成了k维,即直线为W=[W1W2 ,Wk]W = [W_1|W_2|\cdots,W_k]。因此,假设将样本点在k维投影后的结果为[y1,y2, ,yk][y_1,y_2,\cdots,y_k],则有yi=WiTxy_i = W_i^Tx,即y=WTxy = W^Tx

现在仍然从类内散列度和类间散列度的角度来衡量投影直线。

在多分类的情况下,Sw=i=1CSwiS_w = \sum_{i=1}^{C}S_{w_i}SwiS_{w_i}仍衡量的是各类别内部的协方差矩阵,即Swi=xXi(xui)(xui)TS_{w_i} = \sum_{x \in X_i}(x - u_i)(x - u_i)^T

但类间散度SbS_b却需要作出一定的改变,现在要度量的是每类样本中心点相对于全体样本中心点的散列情况。类似地,可以将uiu_i看做样本点,uu是所有样本点的中心点,此时SbS_b变成各uiu_iuu之间的协方差矩阵,添加一个系数NiN_i表示第ii类的样本个数,这样某一类的样本点个数越多该类所占的权重越大。因此,Sb=i=1CNi(uiu)(uiu)T,u=1NxXx=1NxCiNiuiS_b = \sum_{i=1}^{C}N_i(u_i - u)(u_i -u)^T,u = \frac{1}{N}\sum_{x \in X}x = \frac{1}{N}\sum_{x \in C_i}N_iu_i,u表示所有样本的均值。

此时最优化的目标依然是最大化J(w)=wTSbwwTSwwJ(w) = \frac{w^TS_bw}{w^TS_ww},即各类中心距全体中心的距离越大越好,而各类样本自身的散列度越小越好。

求解w时,依然是固定分母为1,求导,令导数为0,可得Sbw=λSwwS_bw = \lambda S_ww,即w的闭式解是Sw1SbS_w^{-1}S_b的前k个特征向量组成的矩阵。

由于Sw1SbS_w^{-1}S_b不一定是对称矩阵,因此得到的前k个特征向量不一定正交,这也是LDA与PCA不同的地方。

LDA是选择具有最好分类性能的方向进行投影,而PCA是选择样本点投影后具有最大方差的方向。

7.4 LDA的一些限制

1.LDA至多可以生成C-1维的子空间
由于SbS_b(uiu)(u_i - u)的秩为1,因此SbS_b的秩至多为C(矩阵的秩小于等于各相加矩阵的秩的和),由于知道了前k-1个uiu_i后,最后一个可以用前面的k-1个进行表示,因此SbS_b的秩最多为C-1,即特征向量最多为C-1。因此,LDA降维后的维度区间为[1,C-1],与原始特征的维度无关。对于二值分类,最多投影到1维。
2.LDA不适合对非高斯样本进行降维。
3.LDA在样本分类信息依赖方差而不是均值时,效果不好。
4.LDA可能会过度拟合数据。
5.LDA为变形后的线性回归,变形指的是对类标签重新定义,线性回归得到的直线即为二值LDA求得的直线方向w。

7.5 总结

LDA是基于如何让投影后的样本点的不同类之间尽可能的“高内聚、低耦合”,也就是同类样本的方差尽可能小,而不同类样本的中心点位置尽可能远离,从而获得最佳的投影直线。LDA原则上可以取得最佳的线性分类性能。

8 多分类学习

多分类学习是利用二分类的思想来解决多分类的问题。一般是将多分类任务拆解成多个二分类任务进行实现。具体来说,是将多分类任务按照某种原则拆解,训练多个二分类器,在测试时,对多个分类器的预测结果进行集成以获取最终的分类结果。

最常用的拆分原则有:一对一(One vs. One,OvO),一对其余(One vs. Rest,OvR)和多对多(Many vs. Many,MvM)。

给定数据集D={(x1,y1),(x2,y2), ,(xm,ym)},yi{C1,C2, ,CN}D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\},y_i \in \{C_1,C_2,\cdots,C_N\}

OvO是取N个类别中的任意两个训练分类器,共训练N*(N-1)/2个分类器。在对新样本进行预测时,把被预测的最多的类别作为新样本的预测结果。
OvR是取N个类别中的任意一个类别作为正类,其余所有的类别作为负类,因此共需要训练N个分类器。在测试时,若该样本仅有一次被预测为正类,则该样本的类别为被预测为正类的类别;若样本被多次预测为正类,则样本的类别选择置信度最大的类别。OvO与OvR示意图如下图所示:
线性模型
OvO需要训练的分类器数目多于OvR,存储和测试时间开销更大。但训练时,OvR使用全部的训练样本进行训练,而OvO每次仅需使用两个类别的样本进行训练。因此,在类别很多时,OvO的训练时间开销往往小于OvR,测试时则一般两者性能相差不大。

OvO与OvR都是MvM的特例,MvM的正反例必须有特殊的设计,一般采用"纠错输出码"(Error Correcting Output Code,ECOC)。
ECOC将编码的思想引入到类别划分过程中,并尽可能在解码过程中具有一定的容错设计。主要分为两步进行实现:
编码:将N个类别进行M次划分,每次选取一部分类别作为正类,其余类别作为负类,这样共训练得到M个分类器;
解码:使用M个分类器分别对测试样本进行预测,这样共得到了M个预测结果,将M次的预测结果组成一个编码,然后分别与每个类别各自的编码进行比对,返回其中距离最小的类别作为最终的预测结果。
类别划分通过“编码矩阵”进行实现,常见的形式有“二元码”和“三元码”两种。前者类别包括“正类”和“反类”,后者在此基础上添加了“停用类”。
线性模型
如上图左所示,分类器f1f_1将类别2作为正类,其余所有的都作为负类,这样每个类别就有了一个编码,如类别C1C_1的编码为(-1,+1,-1,+1,+1)。对新样本预测时,各分类器都对样本进行预测,也可以得到一个预测编码,如图中(-1,-1,+1,-1,+1),若按照海明距离则选择类别3为测试样本的类别;若按照欧式距离还是选择类别3作为测试样本的类别。上图右中还包含了一个停用类,在计算距离时停用类位置是按照0进行计算的。

ECOC具有一定的容错和修正能力,假设上图左样本的正确编码应该为(-1,+1,+1,-1,+1),因为f2f_2预测错误得到了(-1,-1,+1,-1,+1),但基于这个错误的编码仍然可以正确分类。因此ECOC就具有的容错能力。

一般而言,ECOC的编码长度越长,纠错能力越长,但也意味着分类器的数目也在增多,计算和存储的开销都在增加。同时对于有限的类别数,可能的组合数目是一定的,超过一定长度的码字也是没有意义的。

9 类别不平衡问题

如果训练集中包含2个正例,998个反例,则若直接将分类器设置为将任何样本都分类为反例,同样会有99.8%的分类准确率,但是这样的分类器不具有任何的使用价值。因此,我们需要对类别不平衡情况做特殊的处理。

以线性分类器为例,一般将wTx+b>0.5w^Tx+b > 0.5判别为正例,而将使其小于0.5的样本判别为反例。y其实是在表达样本为正例的可能性,几率y1y\frac{y}{1-y}是在表达正例可能性与反例可能性的比值,阈值设置为0.5则表示分类器认为正例和反例的可能性相等,即分类决策规则为y1y>1\frac{y}{1-y} > 1则预测为正例。

而当样本的正例和反例数量相差较大时,则应该调整决策规则。假设样本中正例数目为m+m^+,反例数目为mm^-,则观测几率为m+m\frac{m^+}{m^-},由于假设训练集来自于真实样本的独立采样,所以真实几率也为m+m\frac{m^+}{m^-},所以应该调整判别规则为y1y>m+m\frac{y}{1-y} > \frac{m^+}{m^-}则判定为正例。

但是对于类别不均衡的分类问题,我们往往还是要按照y1y>1\frac{y}{1-y} > 1则预测为正例,因此就需要对分类器输出的计算值进行再缩放处理,即将分类器的输出映射为y1y=y1ymm+\frac{y^{'}}{1-y^{'}} = \frac{y}{1-y} * \frac{m^{-}}{m^{+}}

但是由于IID假设实际上并不成立,因此我们未必能够得到样本的真实几率。对类别不均衡问题的常见处理策略有三种方法,分别是欠采样法、过采样法和重映射法。欠采样法是从样本数较多的类别中移除一些样本,但也不是简单的移除,简单的移除会造成样本的浪费,代表方法有EasyEnsemble,采用集成学习的思想,将较多类的样本划分到不同的子分类器的训练中去,综合来看并没有样本的浪费,每一个分类器学习过程中也没有存在样本不均衡的问题。第二种处理办法是采样过采样法,即对样本数少的类别补充样本,但补充也不是简单的复制,因为这样做会造成过拟合,而是对训练集中已有的数量少的类别的样本进行插值模拟新的样本。第三种方法则是采样上面所说的重映射方法进行近似的处理。

10 进一步思考

在多项式模型最高次项比较大或者线性回归中某些特征对分类的贡献较小时,可以使用正则化的方式提升线性模型的泛化能力。具体可以参考下一篇转载的《正则化的线性回归 - 岭回归和Lasso回归》,岭回归是在损失函数的基础上添加L2L_2约束,Lasso是在损失函数的基础上添加L1L_1约束。

参考

周志华 《机器学习》
CS229
《机器学习实战》