基于条件概率分类的算法--逻辑斯谛回归
逻辑斯蒂回归的本质就是最大似然估计
https://blog.csdn.net/sinat_29957455/article/details/78944939
https://blog.csdn.net/gwplovekimi/article/details/80288964
在线性感知器算法中,我们使用了一个f(x)=x函数,作为激励函数,而在逻辑斯蒂回归中,我们将会采用sigmoid函数作为激励函数,所以它被称为sigmoid回归也叫对数几率回归(logistic regression),需要注意的是,虽然它的名字中带有回归,但事实上它并不是一种回归算法,而是一种分类算法。它的优点是,它是直接对分类的可能性进行建模的,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题,因为它是针对于分类的可能性进行建模的,所以它不仅能预测出类别,还可以得到属于该类别的概率。除此之外,sigmoid函数它是任意阶可导的凸函数。在这篇文章中,将会使用到梯度上升算法,可能有很多同学学到这里会有点迷糊,之前我们所使用的是,梯度下降算法为什么到这里却使用的是梯度上升算法?
一、逻辑斯蒂回归
逻辑斯蒂回归是针对线性可分问题的一种易于实现而且性能优异的分类模型,是使用最为广泛的分类模型之一。假设某件事发生的概率为p,那么这件事不发生的概率为(1-p),我们称p/(1-p)为这件事情发生的几率。取这件事情发生几率的对数,定义为logit(p),所以logit(p)为
因为logit函数的输入取值范围为[0,1](因为p为某件事情发生的概率),所以通过logit函数可以将输入区间为[0,1]转换到整个实数范围内的输出,log函数图像如下
将对数几率记为输入特征值的线性表达式如下:
其中,p(y=1|x)为,当输入为x时,它被分为1类的概率为p,也属于1类别的条件概率。而,实际上我们需要的是给定一个样本的特征输入x,而输出是一个该样本属于某类别的概率。所以,我们取logit函数的反函数,也被称为logistic函数也就是sigmoid函数
ϕ(z)中的z为样本特征与权重的线性组合。通过函数图像可以发现sigmoid函数的几个特点,当z趋于正无穷大的时候,ϕ(z)趋近于1,因为当z趋于无穷大的时候,e^(-z)趋于零,所以分母会趋于1,当z趋于负无穷大的时候,e^(-z)会趋于正无穷大,所以ϕ(z)会趋于0。如在预测天气的时候,我们需要预测出明天属于晴天和雨天的概率,已知根天气相关的特征和权重,定义y=1为晴天,y=-1为雨天,根据天气的相关特征和权重可以获得z,然后再通过sigmoid函数可以获取到明天属于晴天的概率ϕ(z)=P(y=1|x),如果属于晴天的概率为80%,属于雨天的概率为20%,那么当ϕ(z)>=0.8时,就属于雨天,小于0.8时就属于晴天。我们可以通过以往天气的特征所对应的天气,来求出权重和ϕ(z)的阈值,也就是天气所说的0.8。逻辑斯蒂回归除了应用于天气预测之外,还可以应用于某些疾病预测,所以逻辑斯蒂回归在医疗领域也有广泛的应用。
二、求逻辑斯蒂回归的权重
在线性感知器中,我们通过梯度下降算法来使得预测值与实际值的误差的平方和最小,来求得权重和阈值。前面我们提到过某件事情发生的几率为p/(1-p),而在逻辑斯蒂回归中所定义的代价函数就是使得该件事情发生的几率最大,也就是某个样本属于其真实标记样本的概率越大越好。如,一个样本的特征x所对应的标记为1,通过逻辑斯蒂回归模型之后,会给出该样本的标记为1和为-1的概率分别是多少,我们当然希望模型给出该样本属于1的概率越大越好,正因为我们的代价函数需要求的是最大值,所以后面会使用到梯度上升算法而不是梯度下降算法。为了求得记录的最大值,我们需要使用最大似然函数L,假定数据集中的每个样本都是相互独立的,L(w)的计算公式如下(y的取值只能是0或1)
通过上面的公式可以发现,当似然函数的值非常小的晚上好,可以会出现数值溢出的情况为了降低这种情况发生的可能性和方便对似然函数进行最大化处理,取似然函数的对数(其实下面这个公式即损失函数, 对数似然*-1,即最小化似然函数就是最小化损失函数)
极大似然等同于对数损失, 也叫逻辑回归损失 或者 交叉熵损失
通过梯度上升算法求最大化似然函数的对数或者在将似然函数的对数乘以-1使用梯度下降算法进行最小化,通过上面的公式可以发现,当y=0的时候,第一项为0,当y=1的时候第二项为0,损失函数如下
通过上图,可以观察到,当样本被正确的划分的时候损失函数是接近与0的,当样本被错误的划分的时候损失函数是趋于无穷大,这就意味着错误的预测所带来的代价将会越来越大,相对于之前的线性感知器而言,logistic回归错误预测所带来的代价要大的多。
三、logistic回归权重更新
相对于之前的线性感知器而言,我们只需要修改激活函数和代价函数。在实现logistic回归之前,需要先计算出对数似然函数对于w的偏导,得到每次权重更新的Δω。(下面第一个公式计算有误, 结果应该*Xj)
所以Δω应该为(第一行的x(i) 应该有个下标j, j代表一个样本中第几个列)
如果使用梯度下降算法,则ω=ω-Δω,如果使用梯度上升算法ω=ω+Δω。
LR和NB的区别:
从二分来角度来看,NB是生成式模式,LR是判别式模式; NB做了条件独立假设, LR因为条件不独立所以不能计算联合概率
二分类是逻辑回归,多分类就是softmax