一、从线性回归到线性分类
- 线性回归的特性
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧线性⎩⎨⎧属性线性→打破属性非线性:特征转换(多项式回归)全局线性→打破全局非线性:线性分类(激活函数是非线性)系数线性→打破系数非线性:神经网络全局性→打破线性样条回归、决策树数据未加工→打破PCA、流形
线性回归f(w,b)=wTx+b具备线性、全局性和数据未加工的特性。
线性包括三个方面,其中属性线性指的是f(w,b)关于x是线性的;全局线性指的是wTx+b只是一个线性组合,然后直接就输出得到f(w,b);系数线性指的是f(w,b)关于wT是线性的。
全局性指的是线性回归是在整个特征空间上学习,并没有将特征空间进行划分然后在每个划分上学习。
数据未加工指的是线性回归直接在给定数据上进行学习没有对数据进行其他的加工。
其他的学习算法跟线性回归比较起来打破了其某些特性,在上面的树状图中也举出了一些例子。
- 从线性回归到线性分类
线性回归降维⇒激活函数线性分类
线性回归经过一个**函数然后根据一个阈值来获得分类的结果,如此就成为线性分类,也可以理解为将wTx+b降维到一维而获得分类结果。
激活函数y=f(wTx+b),y∈{{0,1},硬分类[0,1],软分类函数f叫做激活函数(activationfunction)函数f−1叫做链接函数(linkfunction)f:wTx+b↦{0,1}/[0,1]f−1:{0,1}/[0,1]↦wTx+b
- 硬分类和软分类
线性分类⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧硬分类{线性判别分析感知机软分类⎩⎨⎧高斯判别分析朴素贝叶斯逻辑回归
二、感知机
- 概述
假设有一可以被线性分类的样本集{(xi,yi)}i=1N,其中xi∈Rp,yi{−1,+1}。感知机算法使用随机梯度下降法(SGD)来在特征空间$ \mathbb{R}{p}$寻找一个超平面$w{T}x+b=0来将数据划分为正、负两类,其中w\in \mathbb{R}^{p}$,是超平面的法向量。
- 学习策略
感知机的思想是错误驱动。其模型是f(x)=sign(wTx+b),f(x)输出该样本点的类别,定义集合M为误分类点的集合。
可以确定对于误分类的数据(xi,yi)来说,满足以下关系:
=∣wTxi+b∣−yi(wTxi+b)>0
损失函数的一个自然选择是误分类点的个数,即L(w)=∑i=1NI{−yi(wTxi+b)>0},但是这样的损失函数是不可导的,不易优化。因此采用另一种损失函数,即误分类点到超平面的总距离。
在Rp空间中任一点x0到超平面的距离为:
∥w∥∣∣wTx0+b∣∣(可以参考初中知识,平面中点到直线的距离:d=A2+B2∣Ax+By+C∣)
因此所有误分类点到超平面wTx+b=0的总距离为:
xi∈M∑∥w∥∣∣wTx0+b∣∣=−∥w∥1xi∈M∑yi(wTxi+b)
不考虑∥w∥1,就得到感知机的损失函数:
L(w,b)=−xi∈M∑yi(wTxi+b)
- 学习算法
计算损失函数的梯度:
∂w∂L(w,b)=−xi∈M∑yixi∂b∂L(w,b)=−xi∈M∑yi
感知机的学习算法使用随机梯度下降法(SGD),这里选取η(0<η≤1)作为学习率,其学习的步骤如下:
①选取初值w0,b0;
②在训练集中选取数据(xi,yi);
③如果yi(wTxi+b)≤0,则更新参数:
w←w+ηyixib←b+ηyi
④转至②,直到训练集中没有误分类点。
截止这里我们都是假设数据是线性可分的,如果线性不可分,可以用口袋算法(pocket algorithm),这里不做过多介绍。
三、线性判别分析
- 概述
线性判别分析可用于处理二分类问题,其过程是寻找一个最佳的投影方向,使得样本点在该方向上的投影符合类内小、类间大的思想,具体指的是类内的方差之和小,类间的均值之差大。

假设有以下数据:
X=(x1,x1,⋯,xN)T=⎝⎜⎜⎜⎛x1Tx2T⋮xNT⎠⎟⎟⎟⎞N×pY=⎝⎜⎜⎜⎛y1y2⋮yN⎠⎟⎟⎟⎞N×1{(xi,yi)}i=1N,xi∈Rp,yi∈{C1+1,C2−1}xC1={xi∣yi=+1},xC2={xi∣yi=−1}∣xC1∣=N1,∣xC2∣=N2,N1+N2=N
- 线性判别分析的损失函数
投影轴的方向向量为w,将样本点往该轴上投影以后的值zi为wTxi,均值和方差按照如下方法计算:
均值zˉ=N1i=1∑Nzi=N1i=1∑NwTxi方差Sz=N1i=1∑N(wTxi−zˉ)(wTxi−zˉ)T
接下来计算每一类的均值和方差:
C1:zˉ1=N11i=1∑N1wTxiS1=N11i=1∑N1(wTxi−zˉ1)(wTxi−zˉ1)TC2:zˉ2=N21i=1∑N2wTxiS2=N21i=1∑N2(wTxi−zˉ1)(wTxi−zˉ1)T
定义损失函数:
J(w)=S1+S2(zˉ1−zˉ2)2(zˉ1−zˉ2)2=(N11i=1∑N1wTxi−N21i=1∑N2wTxi)2=[wT(N11i=1∑N1xi−N21i=1∑N2xi)]2=[wT(xˉC1−xˉC2)]2=wT(xˉC1−xˉC2)(xˉC1−xˉC2)TwS1=N11i=1∑N1(wTxi−zˉ1)(wTxi−zˉ1)T=N11i=1∑N1(wTxi−N11i=1∑N1wTxi)(wTxi−N11i=1∑N1wTxi)T=N11i=1∑N1wT(xi−xˉC1)(xi−xˉC1)Tw=wT[N11i=1∑N1(xi−xˉC1)(xi−xˉC1)T]w=wTSC1wS1+S2=wTSC1w+wTSC2w=wT(SC1+SC2)w∴J(w)=wT(SC1+SC2)wwT(xˉC1−xˉC2)(xˉC1−xˉC2)Tw
极大化J(w)就可以使得类内的方差之和小,类间的均值之差大。
- 线性判别分析的求解
令{Sb=(xˉC1−xˉC2)(xˉC1−xˉC2)TSw=SC1+SC2则J(w)=wTSwwwTSbw=wTSbw(wTSww)−1∂w∂J(w)=2Sbw(wTSww)−1+wTSbw(−1)(wTSww)−22Sbw=2[Sbw(wTSww)−1+wTSbw(−1)(wTSww)−2Sbw]=0(wTSbw,wTSww∈R)⇒Sbw(wTSww)−wTSbwSww=0⇒wTSbwSww=Sbw(wTSww)⇒Sww=wTSbwwTSwwSbw⇒w=wTSbwwTSwwSw−1Sbw(要注意对于w我们只关注它的方向,不关心它的大小。)⇒w∝Sw−1Sbw⇒w∝Sw−1(xˉC1−xˉC2)1维(xˉC1−xˉC2)Tw⇒w∝Sw−1(xˉC1−xˉC2)⇒w∝(SC1+SC2)−1(xˉC1−xˉC2)
进一步如果Sw−1是各向同性的对角矩阵的话,w∝xˉC1−xˉC2。
四、逻辑回归
- 概述
逻辑回归是一种二分类算法,通过sigmoid**函数将线性组合wTx压缩到0和1之间来代表属于某一个分类的概率。
假设有如下数据:
{(xi,yi)}i=1N,xi∈Rp,yi∈{0,1}
-
sigmoid**函数
σ(z)=1+e−z1
其图像为:

- 逻辑回归的模型
逻辑回归预测y=1的概率,然后根据极大似然估计法来求解。
p1=P(y=1∣x)=σ(wTx)=1+e−wTx1=φ(x;w)p0=P(y=0∣x)=1−P(y=1∣x)=1+e−wTxe−wTx=1−φ(x;w)}p(y∣x)=p1yp01−y
- 逻辑回归的求解
w^=wargmaxloglikelihoodP(Y∣X)=wargmaxlogi=1∏NP(yi∣xi)=wargmaxi=1∑NlogP(yi∣xi)=wargmaxi=1∑N(yilogp1+(1−yi)logp0)=wargmax−crossentropyi=1∑N(yilogφ(x;w)+(1−yi)log(1−φ(x;w))
因此这里的极大似然估计就等价于极小化交叉熵损失函数。
求导的过程较为简单,就不做展示了。
五、高斯判别分析
- 概述
假设有如下数据:
{(xi,yi)}i=1N,xi∈Rp,yi∈{0,1}
- 高斯判别分析的模型
在高斯判别分析中样本数据的类别y在给定的情况下服从伯努利分布,另外不同类别中的样本数据分别服从多元高斯分布,因此有以下模型:
y∼Bernoulli(ϕ)⇔ϕy,y=1(1−ϕ)1−y,y=0}P(y)=ϕyϕ1−yx∣y=1∼N(μ1,Σ)x∣y=0∼N(μ2,Σ)}P(x∣y)=N(μ1,Σ)yN(μ2,Σ)1−y
这里假设两个高斯分布具有同样的方差。
- 高斯判别模型的求解
高斯判别模型的损失函数为其log似然,要估计的参数θ为(μ1,μ2,Σ,ϕ):
L(θ)=logi=1∏NP(xi,yi)=i=1∑NlogP(xi,yi)=i=1∑NlogP(xi∣yi)P(yi)=i=1∑N[logP(xi∣yi)+logP(yi)]=i=1∑N[logN(μ1,Σ)yiN(μ2,Σ)1−yi+logϕyiϕ1−yi]=i=1∑N[①logN(μ1,Σ)yi+②logN(μ2,Σ)1−yi+③logϕyiϕ1−yi]
然后使用极大似然估计法来求解:
θ^=θargmaxL(θ)
定义标签为1的样本个数为N1,标签为0的样本个数为N2,则有N1+N2‘=N。
ϕ只存在于③式中,因此求解ϕ只需要看③式即可:
③=i=1∑N[yilogϕ+(1−yi)log(1−ϕ)]∂ϕ∂③=i=1∑N[yiϕ1−(1−yi)1−ϕ1]=0⇒i=1∑N[yi(1−ϕ)−(1−yi)ϕ]=0⇒i=1∑N(yi−ϕ)=0⇒i=1∑Nyi−Nϕ=0ϕ^=N1i=1∑Nyi=NN1
- 求解μ1、μ2
ϕ只存在于①式中,因此求解μ1只需要看①式即可:
①=i=1∑Nyilog(2π)p/2∣Σ∣1/21exp{−21(xi−μ1)TΣ−1(xi−μ1)}μ1=μ1argmax①=μ1argmaxi=1∑Nyi[log(2π)p/2∣Σ∣1/21−21(xi−μ1)TΣ−1(xi−μ1)]=μ1argmaxi=1∑Nyi[−21(xi−μ1)TΣ−1(xi−μ1)]=μ1argmaxΔΔ=i=1∑Nyi[−21(xi−μ1)TΣ−1(xi−μ1)]=−21i=1∑Nyi(xiTΣ−1−μ1TΣ−1)(xi−μ1)=−21i=1∑Nyi(xiTΣ−1xi−2μ1TΣ−1xi+μ1TΣ−1μ1)∂μ1∂Δ=−21i=1∑Nyi(−2Σ−1xi+2Σ−1μ1)=0⇒i=1∑Nyi(Σ−1μ1−Σ−1xi)=0⇒i=1∑Nyi(μ1−xi)=0⇒i=1∑Nyiμ1=i=1∑Nyixiμ1^=∑i=1Nyi∑i=1Nyixi=N1∑i=1Nyixi同理μ2^=N2∑i=1Nyixi
以下是求解过程中用到的一些预备知识:
∂A∂AB=BT∂A∂∣A∣=∣A∣A−1tr(AB)=tr(BA)tr(ABC)=tr(CAB)=tr(BCA)
两类数据按照以下两个集合来表示:
C1={xi∣yi=1,i=1,2,⋯,N}C2={xi∣yi=0,i=1,2,⋯,N}∣C1∣=N1,∣C2∣=N2,N1+N2=N
然后进行求解:
Σ^=Σargmax(①+②)①+②=xi∈C1∑logN(μ1,Σ)+xi∈C2∑logN(μ2,Σ)
然后求解上式中的通项:
i=1∑NlogN(μ,Σ)=i=1∑Nlog(2π)p/2∣Σ∣1/21exp{−21(xi−μ)TΣ−1(xi−μ)}=i=1∑N[log(2π)p/21+log∣Σ∣−21−21(xi−μ)TΣ−1(xi−μ)]=i=1∑N[C−21log∣Σ∣−21(xi−μ)TΣ−1(xi−μ)]=C−21Nlog∣Σ∣−21i=1∑N(xi−μ)TΣ−1(xi−μ)=C−21Nlog∣Σ∣−21i=1∑Ntr[(xi−μ)TΣ−1(xi−μ)](实数的迹等于其本身)=C−21Nlog∣Σ∣−21i=1∑Ntr[(xi−μ)(xi−μ)TΣ−1]=C−21Nlog∣Σ∣−21tr[i=1∑N(xi−μ)(xi−μ)TΣ−1]=C−21tr(NSΣ−1)(S=N1i=1∑N(xi−μ)(xi−μ)T,为协方差矩阵)=−21Nlog∣Σ∣−21Ntr(SΣ−1)+C则①+②=−21N1log∣Σ∣−21N1tr(S1Σ−1)−21N2log∣Σ∣−21N2tr(S2Σ−1)+C=−21Nlog∣Σ∣−21N1tr(S1Σ−1)−21N2tr(S2Σ−1)+C=−21[Nlog∣Σ∣+N1tr(S1Σ−1)+N2tr(S2Σ−1)]+C
然后对Σ进行求导:
∂Σ∂①+②=−21[N∣Σ∣1∣Σ∣Σ−1+N1∂Σ∂tr(Σ−1S1)+N2∂Σ∂tr(Σ−1S2)]=−21[NΣ−1+N1S1T(−1)Σ−2+N2S2T(−1)Σ−2]=−21(NΣ−1−N1S1TΣ−2−N2S2TΣ−2)=0NΣ−N1S1−N2S2=0Σ^=NN1S1+N2S2
六、朴素贝叶斯
- 概述
假设有如下数据:
{(xi,yi)}i=1N,xi∈Rp,yi∈{0,1}
- 朴素贝叶斯的模型
朴素贝叶斯分类器可以用来做多分类,其基本思想是条件独立性假设,即假设数据的每个特征之间是相互独立的,其形式化表达为
对于x∣y来说xi∣y与xj∣y是相互独立的(i=j),即P(x∣y)=i=1∏pP(xi∣y)
朴素贝叶斯分类器是最简单的概率图模型(有向图):

给定x,判断y的类别可以通过以下方法,即将x归为类别的概率中最大的一类:
y^=yargmaxP(y∣x)=yargmaxP(x)P(x,y)=yargmaxP(x)P(y)P(x∣y)=yargmaxP(y)P(x∣y)
P(y)是先验概率,如果有两类则服从伯努利分布(Bernoulli distribution),如果有多类则服从类别分布(Categorical distribution)。P(x∣y)则符合条件独立性假设P(x∣y)=∏i=1pP(xi∣y),其中对于xi,如果xi是离散的,则可以认为其服从类别分布(Categorical distribution),如果xi是连续的,则可以认为其服从高斯分布(Gaussian distribution)。
至于其求解过程则可以根据具体情况使用极大似然估计法即可。对于朴素贝叶斯方法重要的是理解其条件独立性假设,这个假设也是其被称为“朴素(Naive)”的原因。
参考资料
ref:李航《统计学习方法》
公众号同步更新
