逻辑回归整理

未完待续

George Box said: “All models are wrong, some are useful”

线性模型与逻辑回归

最近准备把基础算法整理一遍,之前看了《西瓜书》和《统计学方法》,本来是准备结合这两本书进行整理的。周末在家看到PRML躺在书架上,就拿起来看了几页,发现这本书写的真的是太全面了。很多知识点在当时来说都比较超前,尤其是在神经网络那一章,ResNet、Dropout的思路都明明白白的写在书里。

还是准备先照着前两本书将知识点整理出来,后续PRML读完之后再对之前的内容进行补充。对于我来说,PRML还是有些难度的,好多知识点都是一知半解的。

本文的主要整理的内容为:线性回归-->广义线性回归-->逻辑回归

1、线性模型

线性模型一般用于解决回归问题,最简单模型是输入变量的线性组合

(y(x,w)=w_0+w_1x_1+...+w_Dx_D),其中(x=(x_1,...,x_D)^T ···(3.1))

(3.1)是参数(w)的一个线性函数,同时也是输入变量(x_i)的一个线性函数,这给模型带来的极大的局限性。

因此扩展模型的类别,将输入变量的固定的非线性函数进行线性组合,形式为:

(y(w,x)=w_0+underset{j=1}{overset{M-1} sum} w_jphi_j(x))​​,其中(phi_j(x))​​​被称为基函数(basis function)

通常设置一个额外的虚“基函数”(phi_0(x)=1),此时函数可以写为:

(y(w,x)=underset{j=0}{overset{M-1} sum} w_jphi_j(x))

通过使用非线性基函数,能让函数(y(x,w))​成为输入向量(x)​的一个非线性函数;但是该函数还是(w)​的线性函数,因此还是被称为线性模型。

1.1 线性模型参数求解

线性回归假设预测值和目标值之间的误差是符合高斯分布的,即:

(t=y(x,w)+epsilon)​,其中(epsilon)是一个零均值的高斯随机变量,精度(方差的倒数)为(eta=1/sigma^2)​,因此有:

(p(t|x,w,eta)={cal N}(t|y(x,w),eta^{-1})),即预测值(t)的分布服从均值为(y(x,w)),方差为(eta^{-1})的高斯分布。

({Bbb E}[t|x]=int t p(t|x)dt = y(x,w))假设高斯分布后,预测值的期望与真是值是相等的

当观测样本数为(N)时,可得似然函数如下:

(p({ t t}|X,w,eta)=underset{n=1}{overset N prod} {cal N}(t_n|w^Tphi(x_n),eta^{-1}))

取对数可得

(ln p({ t t}|w,eta)=underset{n=1}{overset N sum} ln {cal N}(t_n|w^Tphi(x_n),eta^{-1})=frac{N}{2}ln eta - frac{N}{2}ln(2pi)-frac{eta}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)​其中最后一项就是平方和误差,定义为(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)

(ln p(t|w,eta))分别关于(w)(eta)求偏导,并令偏导数为零,可得

( abla ln p({ t t}|w,eta)=etaunderset{n=1}{overset N sum}(t_n-w^Tphi(x_n))phi(x_n))

从而可得(underset{n=1}{overset N sum}t_n phi(x_n)^T - w^Tunderset{n=1}{overset N sum}Big(phi(x_n)phi(x_n)^TBig)=0)

从而可以求解得到(w_{ML}=(Phi^TPhi)^{-1}Phi { t t})

接下来进一步分析偏置参数(w_0),平方和误差(E_D(w))展开式为:

(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2=frac{1}{2}underset{n=1}{overset N sum}Big(t_n-w_0 - underset{j=1}{overset {M-1} sum} w_jphi_j(x_n)Big)^2)​​

求关于(w_0)的偏导并令其等于0,可得

(w_0 = ar t - underset{j=1}{overset{M-1}sum}w_jar phi_j),其中(ar t = frac{1}{N}underset{n=1}{overset N sum} t_n, ar phi_j = frac{1}{N}underset{n=1}{overset N sum} phi_j(x_n))

偏置(w_0)补偿了目标值的平均值在基函数的平均值的加权求和之间的差。

对噪声精度参数(eta)最大似然函数,结果为:

(frac{1}{eta_{ML}}=frac{1}{N}underset{n=1}{overset N sum} (t_n - w_{ML}^Tphi(x_n))^2=sigma_{ML}^2)

1.2 基函数与激活函数

1.2.1 基函数

上一节描述过程中,一直使用基函数(phi(x))​,是为了增加模型的灵活性,常见的基函数有:

1)幂指函数的形式:(phi_j(x)=x^j)

2)样条函数:将输入空间切分成若干个区域,然后对于每个区域用不同的多项式函数拟合

3)高斯函数:(phi_j(x)=exp(-frac{(x-mu)^2}{2gamma^2}))

4)sigmoid基函数:(phi(x)=sigma(frac{x-mu}{gamma}))​​,其中(sigma(a)=frac{1}{1+exp(-a)})

1.2.2 激活函数

基函数只是将输入数据(x)进行非线性变换,对于参数(w)而言仍然是线性函数;而使用更广泛的是对(w)(x)同时进行非线性变化,此时的变换函数被称为激活函数,即:

(y(x)=f(w^Tx+w_0))​(一般为了方便,可在输入(x)中增加一列(x_0=1),此时便可以将(w_0)约去,将函数简写为(y(x)=f(w^Tx))

(f(·))被称为激活函数,通常是一个单调可微的函数。

此时对应的模型就是“广义线性模型(Genelrlized Linear Model:GLM)”。激活函数的反函数(f^{-1}(·))也被称为联系函数(Link function)。

后续将介绍的逻辑回归,实际上就是指定激活函数后的一个广义线性模型。

1.2.3 正则化

线性模型的误差函数为(E_D(w)=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2)​​(使用该误差函数求解参数的方法也被称为最小二乘法

此时模型参数为:(w_{ML}=(Phi^TPhi)^{-1}Phi { t t})

过拟合问题是几乎任何机器学习模型都会遇到的问题,为了抑制过拟合的影响,一种常见的方法是在损失函数中加入对参数的控制,即在模型损失基础上加上参数值控制:(E_D(w) + lambda E_W(w)),这里的(lambda)是正则化系数。

例如加入L2正则化:(Loss_{new}=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2+frac{lambda}{2}w^Tw)

此时求解的参数为:(w_{ML}=(lambda I + Phi^TPhi)^{-1}Phi { t t})

正则化的一般形式可以表示为:(Loss_{new}=frac{1}{2}underset{n=1}{overset N sum}(t_n-w^Tphi(x_n))^2+frac{lambda}{2} underset{j=1}{overset Msum}(w_j)^q)

(q)取不同值时的正则化轮廓线为:

![image-20210803100111756](/Users/jinyongliu/Library/Application Support/typora-user-images/image-20210803100111756.png)

2、逻辑回归

2.1 Logistic分布与Sigmoid基函数

(X)时连续变量,(X)服从Logistic分布是指(X)具有下列分布函数和密度函数:

(F(X) = P(Xleq x)=frac{1}{1+exp(-frac{x-mu}{gamma})})​​和(f(x)=F'(x)=frac{e^{-(x-mu)/gamma}}{gamma(1+e^{-(x-mu)/gamma})^2})

1.2.1节中介绍基函数的时候,有介绍过sigmoid基函数,即(phi(x)=frac{1}{1+exp(-frac{x-mu}{gamma})})。这里的(mu)称为位置参数,(gamma)​称为形状参数。

说明Logistic分布与sigmoid基函数描述的是同一个函数。

2.2 二项Logistic回归模型

前面章节引入了GLM模型,如果要解决的任务是分类任务,应该怎么办?这时只需要找一个单调可微的函数将分类任务的真实标记(t)与线性回归的预测值联系起来。考虑二分类任务,其输出标记(tin {0,1}),而线性模型产生的预测值(z=w^Tx+w_0)是实值。需要将实值(z)转换为(0/1)值。最直接的处理方法是:

(t = egin{cases} 0 & z<0 \ 0.5 & z=0 \ 1 & z>1end{cases})

但是,从下图可以看出,单位阶跃函数不连续,因此不能直接用作GLM中的激活函数。于是需要找一个在一定程度上近似单位阶跃函数的“替代函数”,并希望它单调可微。而Logistic函数正是这样一个常用的替代函数。Logistic函数将(z)值转化为一个接近0或1的(y)值,并且其输出值在(z=0)的附近变化很陡。

此时对应模型的输出可以设为:

(P(Y=1|x)=frac{1}{1+exp(-w^Tx)}=frac{exp(w^Tx_i)}{1+exp(w^Tx_i)})​,(P(Y=0|x)=1- P(Y=1|x)=frac{1}{1+exp(w^Tx)})

一个有趣的对数几率(log odds或logit)公式是:(log frac{P(Y=1|x)}{1-P(Y=1|x)}=log frac{P(Y=1|x)}{P(Y=0|x)}=w^Tx)

它表示了事件发生的概率与该事件不发生的概率的比值,即(P(Y=1|x))(P(Y=0|x))​的比值。

从上式中还可以看出,对数几率是输入(x)的线性函数;或者说输入(Y=1)的对数几率是由输入(x)的线性函数表示的模型。

线性函数的值越接近正无穷,概率值就越接近1;线性函数的值越接近负无穷,概率值就越接近0。

2.3 模型参数估计

由于Logistic的输出值只有({0,1})​两个取值,很自然的可以假设其服从伯努利分布,即

(Bern(x|mu)=mu^x(1-mu)^{1-x})。假设有(N)个样本,采用伯努利分布和极大似然估计法,可得:

(p({ t t}|X,w)=underset{n=1}{overset N prod}[p(y_i=1|x_i)]^{t_i}[1-p(y_i=1|x_i)]^{1-t_i})​,其中(P(y_i=1|x_i)=frac{exp(w^Tx_i)}{1+exp(w^Tx_i)})

从而可得:

(egin{align} ln p({ t t}|X,w) & =underset{n=1}{overset N sum}[t_i log p(y_i=1|x_i) + (1-t_i) log (1-p(y_i=1|x_i))] \ & = underset{n=1}{overset N sum}[t_i log frac{p(y_i=1|x_i)}{1-p(y_i=1|x_i)}+ log (1-p(y_i=1|x_i))] \ & = underset{n=1}{overset N sum}[t_i (w^Tx_i) - log (1+exp(w^Tx_i))]end{align})

利用优化算法(如梯度下降或牛顿法​),可以得到(w)的估计值,记为(w_{ML})

优化方法可以参考:https://www.cnblogs.com/laojifuli/p/15046910.html

此时得到的逻辑回归模型为:

(P(Y=1|x)=frac{exp(w_{ML}^Tx)}{1+exp(w_{ML}^Tx)})(P(Y=0|x)=frac{1}{1+exp(w_{ML}^Tx)})

2.4 多项逻辑回归

二元变量只能取两种可能值中的某一种,多元变量是有多个取值,如(K=6)​​​种取值的分布(t=(0,0,1,0,0,0))​​​,此时对应(t_3=1)​​​

使用(mu_k)​​​表示(t_k=1)​​​的概率,那么(x)​​​的分布就是(p(t|mu)=underset{k=1}{overset K prod}mu_k^{t_k})​​

其中(mu=(mu_1,...,mu_K)^T)​,参数(mu_k)​要满足(mu_k>0)​和(sum_kmu_k=1)​和(underset{t}sum p(t|mu)= underset{k=1}{overset K sum}mu_k=1)​​​

并且({Bbb E}[t|mu]=-underset{t}sum p(t|mu)t= (mu_1,...,mu_K)^T=mu)

此时对应的多项逻辑回归模型是:

(P(Y=k|x)=frac{exp(w_k^Tx)}{1+sum_{k=1}^{K-1} exp(w_k^Tx)}, k=1,2,...,K-1)

(P(Y=K|x)=frac{1}{1+sum_{k=1}^{K-1} exp(w_k^Tx)}, k=1,2,...,K-1)

多项Logistic回归的参数估计方法也可以推广到Logistic回归

3. 参考文献

link function:https://www.zhihu.com/question/28469421
指数分布族:https://blog.csdn.net/Queen0911/article/details/103378732
交叉熵损失函数:https://blog.csdn.net/weixin_41806692/article/details/82463577
Logistic损失函数:https://blog.csdn.net/u013385018/article/details/92644918
1)均方误差损失函数不是凸函数
2)会出现梯度消失
交叉熵和极大似然函数的关系:https://www.cnblogs.com/breezezz/p/11277131.html
为什么使用对数损失函数:https://blog.csdn.net/saltriver/article/details/63683092
https://blog.csdn.net/saltriver/article/details/53364037

原文地址:https://www.cnblogs.com/laojifuli/p/11982764.html