1.Logistics Regression
考虑这样一个问题:
当一堆给定的数据集X分别只属于class1和class2,那么对于另一个给定测试数据集x,X不包含x,那么x中各个数是class1的概率是多少?
1.1 分类的定义及实用情形
在回归问题中,会预测连续值;而在分类问题中,预测离散值。
每个数据点都会获得标注,如类别标签或与数值相关的标签。
1.2 分类的要素
- Model
对于输入的x,带入相应函数,进行分类。
x→{g(x)>0,output=class1else,output=class2
- loss function
L(f)=∑δ(f(x(n))=y(n))
- 最优化
如感知机,SVM等
2. 通过Generative模型得到问题的求解
2.1 前期知识复习及补充
2.1.1 全概率公式及贝叶斯公式
如图所示:
已知两个类别,对于随机取出一个的球x(表颜色),其在class1中的概率计算方法为:
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)
取出的x的概率为:
P(x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)
对于n个类别则有:
P(C1∣x)=∑i=1nP(x∣Ci)P(Ci)P(x∣C1)P(C1)
P(x)=i=1∑nP(x∣Ci)P(Ci)
2.1.2 高维高斯分布
推导过程见:多维高斯分布
fμ,Σ(x)=(2π)D/21∣Σ∣1/21e−21(x−μ)Σ−1(x−μ)T
其中,x表示维度为 D 的向量,μ则是这些向量的平均值(不同数据的相同维度计算平均值),Σ 表示所有向量x的协方差矩阵(反应数据的离散程度)。
以二维为例:
Σ=(σ11σ21σ12σ22)=(σ12σ21σ12σ22)
σ1和σ2分别为两个维度的方差,σ12表示两者的协方差。
2.2 模型推导
2.2.1 由样本得到高斯分布(拉普拉斯分布)的参数
假设有n组数据集是由满足(μ∗,Σ∗)的多维高斯分布生成。那么可以得到似然函数为:
L(μ,Σ)=i=1∏nfμ,Σ(x(n))=i=1∏n(2π)D/21∣Σ∣1/21e−21(x(n)−μ)Σ−1(xn−μ)T
当满足有最大L时,即通过最大似然估计,可求得该高斯分布的参数。
μ∗,Σ∗=argμ,ΣmaxL(μ,Σ)
得到结果为:
{μ∗=n1∑i=1nx(n)Σ∗=n1∑i=1n(x(n)−μ∗)(x(n)−μ∗)T
最大似然估计法是参数估计的方法之一,对于分类问题,通常用求似然函数的负对数最小值,即:
argμ,Σmin(−lnL(μ,Σ))
令l(μ,Σ)=−lnL(μ,Σ),求:
{∂μ∂l=0∂Σ∂l=0
求负对数最小值的方法也叫交叉熵损失函数。
2.2.2 sigmoid函数σ推导
以2.1.1节的两个类别为例:
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)
右边分别处以P(x∣C1)P(C1),得:
P(C1∣x)=1+P(x∣C1)P(C1)P(x∣C2)P(C2)1=1+e−z1=σ(z)
即x在C1中的概率是σ(z)。

得到:
z=ln(P(x∣C2)P(C2)P(x∣C1)P(C1))
对于m纬高斯分布,在类别1中,x发生的充要条件是不同维度下相对应的xi都发生且不同维度相互独立,则P(x∣C1)的计算公式为:
P(x∣C1)=i=1∏mP(xi∣Ci)
将P(C1)=N1+N2N1,P(C2)=N1+N2N2,
…一系列推导过程…在此过程中强制:
Σ1=Σ2=Σ
操作方法为:
Σ=P(C1)Σ1+P(C2)Σ2
最后得到结果:
z=(μ1−μ2)TΣ−1x+[−21(μ1)T(Σ)−1μ1+21(μ2)T(Σ)−1μ2+lnN2N1]=wx+b
所以得:
P(C1∣x)=σ(wx+b)
至此,可以解决一开始提出的问题,通过求出对于给定的两个类别的高斯分布的系数(或拉普拉斯分布的系数)并转换为w,b,之后通过给定任意不在两个类别的数据可以判断它是Class 1的概率。
3. 通过Discriminative求解模型
以上似乎以及很完美解决了问题,但是,以上的推导存在有质疑的点,即有条件:强迫Σ1=Σ2=Σ,这个条件在特定的情况下会有比较好的结果,如:

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

通过训练集训练后,输入(1,1),计算其是class 1的概率,发现小于0.5,即不属于class 1。因而,得到与直觉不同的结果,这也是Generative模型的局限性。
3.1 Discriminative模型
Discriminative示意图:

即直接求w,b,通过对输入x的每个维度设置一个权重,表示该维度对结果的贡献(体现“歧视”),加上bias进行修正,通过Sigmoid函数把结果映射到[0,1]的数,通过某种条件不断迭代w,b直到稳定,得到模型。
3.2 损失函数
对于一开始的问题,假设具体情况如图:

训练集为:X={x(1),x(2),x(3),...,x(n)},其中X包含两种类别,假设:
fw,b=Pw,b(C1∣x)=σ(z)
定义函数C:
C=fw,b(x(1))fw,b(x(2))(1−fw,b(x(3)))...fw,b(x(n))
那么对于该问题,最优解为:
w∗,b∗=argw,bmax(C(w,b))
设损失函数(交叉熵的使用)为:
L(w,b)=−ln(C(w,b))
即转换成求损失函数最小值:
argw,bmin(L(w,b))
做如下替换:把类别用数字表示:class1 赋值为1,class2 赋值为0 。

则对于损失函数,第i个数据的表达式可以用下式表达:
−lnfw,b(x(i))=−[y^(i)lnfw,b(x(i))+(1−y^(i))ln(1−fw,b(x(i)))]
即,损失函数可统一用下式表达:
L=i=1∑n−[y^(i)lnfw,b(x(i))+(1−y^(i))ln(1−fw,b(x(i)))]
3.3 求解
用L对第j个维度求偏导:
∂wj∂L=∂wj∂{i=1∑n−[y^(i)lnfw,b(x(i))+(1−y^(i))ln(1−fw,b(x(i)))]}
上式中,有如下关系:
{∂wj∂lnfw,b(x)=∂z∂lnfw,b(x)∂wj∂z=∂z∂ln(σ(z))xj=(1−σ(z))xj∂wj∂ln(1−fw,b(x))=∂z∂ln(1−fw,b(x))∂wj∂z=−σ(z)xj
化简得到:
∂wj∂L=i=1∑n−[y^(i)−fw,b(x(i))]xj
由此通过梯度下降法迭代w,b,
wj:=wj+ηi=1∑n−[y^(i)−fw,b(x(i))]xj
得到最终权重,解得模型。
对比线性回归问题,两者具有高度相似性。
具体对比见下图:

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

分别计算x在每个类别中的z,之后通过某些函数(如ez)进行放大,最后在放大后的数据中求所有类别的可能性,公式表达为:
yj=∑i=1nf(zi)f(zj)
总结
本文提出一个特定的分类问题,通过Generative模型和Discriminative模型对问题进行求解,对比两者的适用情况,从而为之后的问题分析所有模型提供预分析。
与线性回归问题的联系:
- 分类问题中,输出不仅仅只允许取两个值,可以允许多个值,它是离散的;而在回归问题中,输出可取任意实数,是连续的。
- 分类和回归的区别在于输出变量的类型。定量输出称为回归,或者说是连续变量预测;定性输出称为分类,或者说是离散变量预测。
- 分类问题基本上通过回归模型解决的,只是假设的模型不同(损失函数不一样),因为不能把分类标签当回归问题的输出来解决。
拓展至 Neural Network
Logistics Regression模型存在局限性,比如遇到这类问题(左图):
由于基于逻辑回归的分类方法是通过绘制直线形成不同区域,从而完成分类任务,但该问题通过直线是无法解决分类问题的。
而当把左图问题经过变换形成右图的问题,即可解决分类问题,但当数据、维度变得非常大的时候,靠人工是很难甚至无法形成有效的转换。因此考虑通过某种方法直接得到有效的转换结果,之后再进行分类,示意图如下:

最后形成如图:

神经网络!
参考文献
- 李宏毅2020机器学习深度学习(完整版)国语