1.Logistics Regression

考虑这样一个问题:
当一堆给定的数据集XX分别只属于class1和class2,那么对于另一个给定测试数据集xxXX不包含xx,那么xx中各个数是class1的概率是多少?

1.1 分类的定义及实用情形

在回归问题中,会预测连续值;而在分类问题中,预测离散值。

每个数据点都会获得标注,如类别标签或与数值相关的标签。

1.2 分类的要素

  • Model
    对于输入的xx,带入相应函数,进行分类。
    x{g(x)>0,output=class1else  ,output=class2x\rightarrow \begin{cases} g\left( x \right) >0, output=class1\\ else\,\, , output=class2\\ \end{cases}
  • loss function
    L(f)=δ(f(x(n))y(n))L\left( f \right) =\sum{\delta \left( f\left( x^{\left( n \right)} \right) \ne y^{\left( n \right)} \right)}
  • 最优化
    如感知机,SVM等

2. 通过Generative模型得到问题的求解

2.1 前期知识复习及补充

2.1.1 全概率公式及贝叶斯公式

如图所示:

学习笔记6-ML(classify)-Logistics Regression

已知两个类别,对于随机取出一个的球x(表颜色),其在class1中的概率计算方法为:
P(C1x)=P(xC1)P(C1)P(xC1)P(C1)+P(xC2)P(C2)P\left( C_1|x \right) =\frac{P\left( x|C_1 \right) P\left( C_1 \right)}{P\left( x|C_1 \right) P\left( C_1 \right) +P\left( x|C_2 \right) P\left( C_2 \right)}
取出的x的概率为:
P(x)=P(xC1)P(C1)+P(xC2)P(C2)P\left( x \right) =P\left( x|C_1 \right) P\left( C_1 \right) +P\left( x|C_2 \right) P\left( C_2 \right)

对于n个类别则有:
P(C1x)=P(xC1)P(C1)i=1nP(xCi)P(Ci)P\left( C_1|x \right) =\frac{P\left( x|C_1 \right) P\left( C_1 \right)}{\sum_{i=1}^n{P\left( x|C_i \right) P\left( C_i \right)}}
P(x)=i=1nP(xCi)P(Ci)P\left( x \right) =\sum_{i=1}^n{P\left( x|C_i \right) P\left( C_i \right)}

2.1.2 高维高斯分布

推导过程见:多维高斯分布
fμ,Σ(x)=1(2π)D/21Σ1/2e12(xμ)Σ1(xμ)Tf_{\mu ,\varSigma}\left( x \right) =\frac{1}{\left( 2\pi \right) ^{D/2}}\frac{1}{|\varSigma |^{1/2}}e^{-\frac{1}{2}\left( x-\mu \right) \varSigma ^{-1}\left( x-\mu \right) ^T}

其中,xx表示维度为 D 的向量,μ\mu则是这些向量的平均值(不同数据的相同维度计算平均值),Σ\varSigma 表示所有向量xx的协方差矩阵(反应数据的离散程度)。

以二维为例:
Σ=(σ11σ12σ21σ22)=(σ12σ12σ21σ22)\varSigma =\left( \begin{matrix} \sigma _{11}& \sigma _{12}\\ \sigma _{21}& \sigma _{22}\\ \end{matrix} \right) =\left( \begin{matrix} \sigma _{1}^{2}& \sigma _{12}\\ \sigma _{21}& \sigma _{2}^{2}\\ \end{matrix} \right)
σ1\sigma _1σ2\sigma _2分别为两个维度的方差,σ12\sigma _{12}表示两者的协方差。

2.2 模型推导

2.2.1 由样本得到高斯分布(拉普拉斯分布)的参数

假设nn组数据集是由满足(μ,Σ)\left( \mu ^*,\varSigma ^* \right)的多维高斯分布生成。那么可以得到似然函数为:

L(μ,Σ)=i=1nfμ,Σ(x(n))=i=1n1(2π)D/21Σ1/2e12(x(n)μ)Σ1(xnμ)TL\left( \mu ,\varSigma \right) =\prod_{i=1}^n{f_{\mu ,\varSigma}\left( x^{\left( n \right)} \right)}=\prod_{i=1}^n{\frac{1}{\left( 2\pi \right) ^{D/2}}\frac{1}{|\varSigma |^{1/2}}e^{-\frac{1}{2}\left( x^{\left( n \right)}-\mu \right) \varSigma ^{-1}\left( x^n-\mu \right) ^T}}

当满足有最大LL时,即通过最大似然估计,可求得该高斯分布的参数。
μ,Σ=argmaxμ,ΣL(μ,Σ)\mu ^*,\varSigma ^*=arg\underset{\mu ,\varSigma}{\max}L\left( \mu ,\varSigma \right)

得到结果为:
{μ=1ni=1nx(n)Σ=1ni=1n(x(n)μ)(x(n)μ)T\begin{cases} \mu ^*=\frac{1}{n}\sum_{i=1}^n{x^{\left( n \right)}}\\ \varSigma ^*=\frac{1}{n}\sum_{i=1}^n{\left( x^{\left( n \right)}-\mu ^* \right) \left( x^{\left( n \right)}-\mu ^* \right) ^T}\\ \end{cases}

最大似然估计法是参数估计的方法之一,对于分类问题,通常用求似然函数的负对数最小值,即:
argminμ,Σ(lnL(μ,Σ))arg\underset{\mu ,\varSigma}{\min}\left( -\ln L\left( \mu ,\varSigma \right) \right)

l(μ,Σ)=lnL(μ,Σ)l\left( \mu ,\varSigma \right) =-\ln L\left( \mu ,\varSigma \right),求:
{lμ=0lΣ=0\begin{cases} \frac{\partial l}{\partial \mu}=0\\ \frac{\partial l}{\partial \varSigma}=0\\ \end{cases}

求负对数最小值的方法也叫交叉熵损失函数

2.2.2 sigmoid函数σ\sigma推导

2.1.1节两个类别为例:
P(C1x)=P(xC1)P(C1)P(xC1)P(C1)+P(xC2)P(C2)P\left( C_1|x \right) =\frac{P\left( x|C_1 \right) P\left( C_1 \right)}{P\left( x|C_1 \right) P\left( C_1 \right) +P\left( x|C_2 \right) P\left( C_2 \right)}
右边分别处以P(xC1)P(C1)P\left( x|C_1 \right) P\left( C_1 \right),得:
P(C1x)=11+P(xC2)P(C2)P(xC1)P(C1)=11+ez=σ(z)P\left( C_1|x \right) =\frac{1}{1+\frac{P\left( x|C_2 \right) P\left( C_2 \right)}{P\left( x|C_1 \right) P\left( C_1 \right)}}=\frac{1}{1+e^{-z}}=\sigma \left( z \right)
xxC1C_1中的概率是σ(z)\sigma \left( z \right)

学习笔记6-ML(classify)-Logistics Regression

得到:
z=ln(P(xC1)P(C1)P(xC2)P(C2))z=\ln \left( \frac{P\left( x|C_1 \right) P\left( C_1 \right)}{P\left( x|C_2 \right) P\left( C_2 \right)} \right)

对于mm纬高斯分布,在类别1中,xx发生的充要条件是不同维度下相对应的xix_i都发生且不同维度相互独立,则P(xC1)P\left( x|C_1 \right)的计算公式为:
P(xC1)=i=1mP(xiCi)P\left( x|C_1 \right) =\prod_{i=1}^m{P\left( x_i|C_i \right)}

P(C1)=N1N1+N2,P(C2)=N2N1+N2P\left( C_1 \right) =\frac{N_1}{N_1+N_2},P\left( C_2 \right) =\frac{N_2}{N_1+N_2},

…一系列推导过程…在此过程中强制:
Σ1=Σ2=Σ\varSigma _1=\varSigma _2=\varSigma

操作方法为:
Σ=P(C1)Σ1+P(C2)Σ2\varSigma =P\left( C_1 \right) \varSigma _1+P\left( C_2 \right) \varSigma _2

最后得到结果:
z=(μ1μ2)TΣ1x+[12(μ1)T(Σ)1μ1+12(μ2)T(Σ)1μ2+lnN1N2]=wx+bz=\left( \mu _1-\mu _2 \right) ^T\varSigma ^{-1}x+\left[ -\frac{1}{2}\left( \mu _1 \right) ^T\left( \varSigma \right) ^{-1}\mu _1+\frac{1}{2}\left( \mu _2 \right) ^T\left( \varSigma \right) ^{-1}\mu _2+\ln \frac{N_1}{N_2} \right] =wx+b
所以得:
P(C1x)=σ(wx+b)P\left( C_1|x \right) =\sigma \left( wx+b \right)

至此,可以解决一开始提出的问题,通过求出对于给定的两个类别的高斯分布的系数(或拉普拉斯分布的系数)并转换为w,bw,b,之后通过给定任意不在两个类别的数据可以判断它是Class 1的概率。

3. 通过Discriminative求解模型

以上似乎以及很完美解决了问题,但是,以上的推导存在有质疑的点,即有条件:强迫Σ1=Σ2=Σ\varSigma _1=\varSigma _2=\varSigma,这个条件在特定的情况下会有比较好的结果,如:

学习笔记6-ML(classify)-Logistics Regression

  • 由于假设了概率分布,因此需要较少的数据。
  • 由于假设了概率分布,因而更抗噪,即可能会自动过滤标识错误的数据。
  • 擅长计算困难过程中的先验与分类相关概率

对于如下问题:
学习笔记6-ML(classify)-Logistics Regression
通过训练集训练后,输入(1,1),计算其是class 1的概率,发现小于0.5,即不属于class 1。因而,得到与直觉不同的结果,这也是Generative模型的局限性。

3.1 Discriminative模型

Discriminative示意图:
学习笔记6-ML(classify)-Logistics Regression
即直接求w,bw,b,通过对输入xx的每个维度设置一个权重,表示该维度对结果的贡献(体现“歧视”),加上bias进行修正,通过Sigmoid函数把结果映射到[0,1]的数,通过某种条件不断迭代w,bw,b直到稳定,得到模型。

3.2 损失函数

对于一开始的问题,假设具体情况如图:
学习笔记6-ML(classify)-Logistics Regression
训练集为:X={x(1),x(2),x(3),...,x(n)}X=\left\{ x^{\left( 1 \right)},x^{\left( 2 \right)},x^{\left( 3 \right)},...,x^{\left( n \right)} \right\},其中XX包含两种类别,假设:
fw,b=Pw,b(C1x)=σ(z)f_{w,b}=P_{w,b}\left( C_1|x \right) =\sigma \left( z \right)

定义函数CC:
C=fw,b(x(1))fw,b(x(2))(1fw,b(x(3)))...fw,b(x(n))C=f_{w,b}\left( x^{\left( 1 \right)} \right) f_{w,b}\left( x^{\left( 2 \right)} \right) \left( 1-f_{w,b}\left( x^{\left( 3 \right)} \right) \right) ...f_{w,b}\left( x^{\left( n \right)} \right)
那么对于该问题,最优解为:
w,b=argmaxw,b(C(w,b))w^*,b^*=arg\underset{w,b}{\max}\left( C\left( w,b \right) \right)

设损失函数(交叉熵的使用)为:
L(w,b)=ln(C(w,b))L\left( w,b \right) =-\ln \left( C\left( w,b \right) \right)

即转换成求损失函数最小值:
argminw,b(L(w,b))arg\underset{w,b}{\min}\left( L\left( w,b \right) \right)

做如下替换:把类别用数字表示:class1 赋值为1,class2 赋值为0 。
学习笔记6-ML(classify)-Logistics Regression
则对于损失函数,第ii个数据的表达式可以用下式表达:
lnfw,b(x(i))=[y^(i)lnfw,b(x(i))+(1y^(i))ln(1fw,b(x(i)))]-\ln f_{w,b}\left( x^{\left( i \right)} \right) =-\left[ \hat{y}^{\left( i \right)}\ln f_{w,b}\left( x^{\left( i \right)} \right) +\left( 1-\hat{y}^{\left( i \right)} \right) \ln \left( 1-f_{w,b}\left( x^{\left( i \right)} \right) \right) \right]

即,损失函数可统一用下式表达:
L=i=1n[y^(i)lnfw,b(x(i))+(1y^(i))ln(1fw,b(x(i)))]L=\sum_{i=1}^n{-\left[ \hat{y}^{\left( i \right)}\ln f_{w,b}\left( x^{\left( i \right)} \right) +\left( 1-\hat{y}^{\left( i \right)} \right) \ln \left( 1-f_{w,b}\left( x^{\left( i \right)} \right) \right) \right]}

3.3 求解

LL对第jj个维度求偏导:
Lwj=wj{i=1n[y^(i)lnfw,b(x(i))+(1y^(i))ln(1fw,b(x(i)))]}\frac{\partial L}{\partial w_j}=\frac{\partial}{\partial w_j}\left\{ \sum_{i=1}^n{-\left[ \hat{y}^{\left( i \right)}\ln f_{w,b}\left( x^{\left( i \right)} \right) +\left( 1-\hat{y}^{\left( i \right)} \right) \ln \left( 1-f_{w,b}\left( x^{\left( i \right)} \right) \right) \right]} \right\}

上式中,有如下关系:
{lnfw,b(x)wj=lnfw,b(x)zzwj=ln(σ(z))zxj=(1σ(z))xjln(1fw,b(x))wj=ln(1fw,b(x))zzwj=σ(z)xj\begin{cases} \frac{\partial \ln f_{w,b}\left( x \right)}{\partial w_j}=\frac{\partial \ln f_{w,b}\left( x \right)}{\partial z}\frac{\partial z}{\partial w_j}=\frac{\partial \ln \left( \sigma \left( z \right) \right)}{\partial z}x_j=\left( 1-\sigma \left( z \right) \right) x_j\\ \frac{\partial \ln \left( 1-f_{w,b}\left( x \right) \right)}{\partial w_j}=\frac{\partial \ln \left( 1-f_{w,b}\left( x \right) \right)}{\partial z}\frac{\partial z}{\partial w_j}=-\sigma \left( z \right) x_j\\ \end{cases}

化简得到:
Lwj=i=1n[y^(i)fw,b(x(i))]xj\frac{\partial L}{\partial w_j}=\sum_{i=1}^n{-\left[ \hat{y}^{\left( i \right)}-f_{w,b}\left( x^{\left( i \right)} \right) \right] x_j}

由此通过梯度下降法迭代w,bw,b
wj:=wj+ηi=1n[y^(i)fw,b(x(i))]xjw_j:=w_j+\eta \sum_{i=1}^n{-\left[ \hat{y}^{\left( i \right)}-f_{w,b}\left( x^{\left( i \right)} \right) \right] x_j}

得到最终权重,解得模型。

对比线性回归问题,两者具有高度相似性。
具体对比见下图:
学习笔记6-ML(classify)-Logistics Regression

拓展到三分类或更多的分类

学习笔记6-ML(classify)-Logistics Regression
分别计算xx在每个类别中的zz,之后通过某些函数(如eze^z)进行放大,最后在放大后的数据中求所有类别的可能性,公式表达为:
yj=f(zj)i=1nf(zi)y_j=\frac{f\left( z_j \right)}{\sum_{i=1}^n{f\left( z_i \right)}}

总结

本文提出一个特定的分类问题,通过Generative模型和Discriminative模型对问题进行求解,对比两者的适用情况,从而为之后的问题分析所有模型提供预分析。

与线性回归问题的联系

  1. 分类问题中,输出不仅仅只允许取两个值,可以允许多个值,它是离散的;而在回归问题中,输出可取任意实数,是连续的。
  2. 分类和回归的区别在于输出变量的类型。定量输出称为回归,或者说是连续变量预测;定性输出称为分类,或者说是离散变量预测。
  3. 分类问题基本上通过回归模型解决的,只是假设的模型不同(损失函数不一样),因为不能把分类标签当回归问题的输出来解决。

拓展至 Neural Network

Logistics Regression模型存在局限性,比如遇到这类问题(左图):学习笔记6-ML(classify)-Logistics Regression
由于基于逻辑回归的分类方法是通过绘制直线形成不同区域,从而完成分类任务,但该问题通过直线是无法解决分类问题的。

而当把左图问题经过变换形成右图的问题,即可解决分类问题,但当数据、维度变得非常大的时候,靠人工是很难甚至无法形成有效的转换。因此考虑通过某种方法直接得到有效的转换结果,之后再进行分类,示意图如下:
学习笔记6-ML(classify)-Logistics Regression
最后形成如图:
学习笔记6-ML(classify)-Logistics Regression
神经网络!

参考文献

  1. 李宏毅2020机器学习深度学习(完整版)国语

相关文章: