【机器学习】逻辑回归

目录

一、什么是逻辑回归

二、Sigmoid函数

三、更新参数

四、总结


一、什么是逻辑回归

        逻辑回归并不是解决回归任务的,而是常用于解决二分类任务的。

        逻辑回归是最简单的机器学习算法,但这并不意味着它是最没用的。因为像神经网络这种复杂的机器学习算法,一是会消耗时间计算机资源,二是过于强大而导致提高了过拟合风险(计算机容易学死),对于所有问题并不是用神经网络的效果一定比简单的算法效果好。所以选择机器学习算法时,是先选择简单的,效果不行的情况下,再选择复杂的。因此,逻辑回归通常是作为基准模型,是最常用到的机器学习算法

        逻辑回归的决策边界可以是非线性的,形象地说,将两个类别分开的线可以是直线(线性),也可以是弯曲的线类似下图所示(非线性)。

二、Sigmoid函数

        将回归任务转换为分类任务,需要将预测值(预测的实际数值)转换为概率值(属于当前类别的概率),即0~1的数值,这个转换用Sigmoid函数实现。公式如下:

g\left ( z \right )=\frac{1}{1+e^{-z}}                                                  式(1)

        函数图像如下:

三、交叉熵损失

        交叉熵损失是一种损失函数,常与Softmax激活函数搭配,解决多分类问题。它等于m个样本的平均交叉熵误差,公式如下:

E=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{n}y_{k}^{(i)}log(p_{k}^{(i)})

        如果第 i 个样本的标签为第 k 个类别,那么  ,y_{k}^{\left ( i \right )} 的值就是1,y_{j\neq k}^{\left ( i \right )} 的值就是0。因此,多分类问题的交叉熵损失只与样本的真实类别对应的模型预测概率有关,这适用于每个类别都是互斥的情况,即每个样本只能被标记为一种标签的情况

四、更新参数

       预测函数、最小似然估计、梯度下降详细内容,参考链接:http://t.csdnimg.cn/S9bfQ

       将预测函数带入式(1),预测值转换为概率值,得到:

       h_{\theta }\left ( x \right )=g\left ( \theta ^{T}x \right )=\frac{1}{1+e^{-\theta ^{T}x}},其中\theta ^{Tx}=\sum_{i=1}^{n}\theta _{i}x_{i}=\theta _{0}+\theta _{1}x_{1}+,......,+\theta _{n}x_{n},i 表示第 i 个特征。 

        二分类任务中真值1表示属于该类,真值0表示不属于该类,分别对应的预测函数为:

        P\left ( y=1|x;\theta \right )=h_{\theta }\left ( x \right )                                       式(2)

        P\left ( y=0|x;\theta \right )=1-h_{\theta }\left ( x \right )                                   式(3)

       但这样分开求损失函数计算权重,并不方便,因此需要合并,得到最终的预测函数

       P(y|x;\theta)=(h_\theta(x))^\mathrm{y}(1-h_\theta(x))^\mathrm{l-y},当y=1,变成式(2);当y=0,变成式(3)。

        然后接着做极大似然估计,似然函数

        L(\theta)=\prod_{i=1}^{m}P(y_i\mid x_i;\theta)=\prod_{i-1}^m(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i},其中 i 表

示第 i 个样本。

        似然函数取对数

        l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y_{i}\log h_{\theta}(x_{i})+(1-y_{i})\log(1-h_{\theta}(x_{i}))\right),其中i表示第 i 个样本。

        但是在反向传播中,我们通常习惯于做梯度下降任务,因为这符合逻辑上的将损失降到最小,因此将取对数的结果再加上负号,把梯度上升问题改为了梯度下降问题。除以m是取损失的平均值,得到了二分类交叉熵

        J(\theta)=-\frac1m\sum_{i=1}^{m}\left(y_{i}\log h_{\theta}(x_{i})+(1-y_{i})\log(1-h_{\theta}(x_{i}))\right),其中 i 表示第 i 个样本,m表示样本总数。二分类交叉熵是一种损失函数,是交叉熵的一个特例,常与Sigmoid激活函数搭配使用,处理二分类问题。想用逻辑回归解决多分类问题,需要用Softmax激活函数和交叉熵损失函数。

        求导过程(不重要,我们只需要知道结果):

\begin{aligned}&\frac{\delta}{\delta\theta_{j}}J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\Big(\:y_{i}\:\frac{1}{h_{\theta}(x_{i})}\:\frac{\delta}{\delta\theta_{j}}h_{\theta}(x_{i})-(1-y_{i})\:\frac{1}{1-h_{\theta}(x_{i})}\:\frac{\delta}{\delta\theta_{j}}h_{\theta}(x_{i})\Big)\\&=-\frac{1}{m}\sum_{i=1}^{m}\Big(\:y_{i}\:\frac{1}{g(\theta^{\mathrm{T}}x_{i})}-(1-y_{i})\:\frac{1}{1-g(\theta^{\mathrm{T}}x_{i})}\Big)\frac{\delta}{\delta\theta_{j}}g(\theta^{\mathrm{T}}x_{i})\\&==-\frac{1}{m}\sum_{i=1}^{m}\Bigg( y_{i} \frac{1}{g(\theta^{\mathrm{T}}x_{i})}-(1-\mathrm{y}_{\mathrm{i}})\frac{1}{1-g(\theta^{\mathrm{T}}x_{i})}\Bigg)g(\theta^{\mathrm{T}}x_{i})(1-g(\theta^{\mathrm{T}}x_{i}))\frac{\delta}{\delta\theta_{j}}\theta^{\mathrm{T}}x_{i}\\&=-\frac{1}{m}\sum_{i=1}^{m}\Big(\:y_{i}\:(1-g(\theta^{\mathrm{T}}x_{i}))-(1-y_{i})g(\theta^{\mathrm{T}}x_{i})\Big)x_{i}^{j}\\&=-\frac{1}{m}\sum_{i=1}^{m}\Big(y_{i}-g(\theta^{\mathrm{T}}x_{i})\Big)x_{i}^{j}\\&=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x_{i})-y_{i})x_{i}^{j}\end{aligned}

        其中,i 表示第 i 个样本,j 表示第 j 个特征,最后要把求得梯度反向才是梯度下降的方向。

        参数更新\theta_{j}=\theta_{j} +\alpha\frac{1}{m}\sum_{i=1}^{m}\bigl(y_{i}-h_{\theta}(x_{i})\bigr)x_{i}^{j}

四、总结

        基本上所有的分类问题都可以用逻辑回归解决。它的求解速度快;模型可解释性强,很多参数都有物理含义,便于我们理解,比如大的\theta表示特征重要,小的\theta表示特征不重要。但是像神经网络、支持向量机这种复杂的算法,它计算得到的很多参数都是没有物理意义的,只是求得的结果有用而已,不利于理解。因此,拿到任务后建议先用逻辑回归试一下,不行再考虑一些复杂的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值