逻辑回归模型

697 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

逻辑回归模型

分类问题

分类问题是机器学习主要解决问题的一个重要组成部分,根据已知样本的特征,去判断样本属于哪一个类别。分类问题可以细分如下:

  • 二分类问题:表示分类任务中有两个类别。
  • 多分类问题:表示分类任务中有多类别。

常见应用场景:

  • 垃圾邮件识别:将邮件分成两部分:垃圾邮件与普通邮件。
  • 图像内容识别:根据图像类容进行分类,例如猫,狗等
  • 文本情感分析:将微博中的评论分成两种褒义与贬义,甚至可以分成多种情感。

介绍

逻辑回归模型(Logistic Regression)虽然称之为回归,但是解决问题类型与线性回归不同,利用回归类似的思路去解决分类问题。与线性回归模型不同的是模型输出值不同。

  • 线性回归输出值是连续的,拟合成一个线条
  • 逻辑回归输出值是离散的,分布均匀。

既然分布均匀,我们可以设置一个阈值,将值进行区分开来。

我们来看一个例子。假如现在有一个关于肿瘤大小的数据集,需要根据肿瘤的大小来判定是良性(用数字 0 表示)还是恶性(用数字 1 表示),这是一个很典型的二分类问题。

image.png

接下来,使用线性函数h(x)=θ1+θ2xh(x)=\theta_{1}+\theta_{2}x去进行拟合数据,根据输出h(x)h(x)对其进行阈值(设置为5)的比较(阶跃函数)你就可以得到样本的类别。

ϕ(z)={0,z<50.5,z=51,z>5\phi(z)=\left\{\begin{array}{rr} 0, & z<5 \\ 0.5, & z=5 \\ 1, & z>5 \end{array}\right.

这样的函数是不方便我们去进行后面的优化计算的过程的,函数值不连续,就无法进行求导的操作,我们选择一条函数值连续,值区间在 (0,1) Sigmoid 函数。函数值代表样本类别的概率。

S(z)=11+ezS(z)=\frac{1}{1+e^{-z}}

他的图像如下:

img

该函数将我们输出的值都映射到了0到1之间,作为类别的概率值,帮助判断样本类别。

决策边界

当空间内充满着两种不同的类别样本,怎么去将其划分呢?需要设置决策边界。

决策边界就是分类器对于样本进行区分的边界,主要有线性决策边界(linear decision boundaries)和非线性决策边界(non-linear decision boundaries)。

线性决策边界如下:

img

单纯的一个线性函数是无法拟合如上图的分布均匀的值的,但是你可以找到一条线性函数将其两个部分分开,既然无法拟合,怎么确定这条线性函数呢?这里就用到了 Sigmoid 函数,它可以将我们的值映射到0到1的区间,代表着类别的概率。(函数 gg代表 Sigmoid 函数)

h(x)=g(θ1+θ2x)h(x)=g(\theta_{1}+\theta_{2}x)

非线性决策边界如下:

img

如线性决策边界一样,是无法通过一个函数进行拟合,但是可以通过 Sigmoid 函数对输出装进行映射,然后找到那个非线性函数,完成分类结果。

h(x)=g(θ1+θ2x+θ3x2)h(x)=g(\theta_{1}+\theta_{2}x+\theta_{3}x^2)

损失函数

当逻辑回归模型的数学形式确定后,接下来就是设置损失函数去衡量预测值和标准答案之间的差异。我们之前接触的损失函数是均方误差。

L(w,b)=1ni=1nl(i)(w,b)=1ni=1n12(y^(i)y(i))2.L(\mathbf{w}, b) =\frac{1}{n}\sum_{i=1}^n l^{(i)}(\mathbf{w}, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2.

均方误差损失函数在回归问题中是广泛应用,但是在逻辑回归问题中,是不适用的。直接的原因是Sigmoid函数值映射会使我们最终的损失函数曲线,不是一个凸函数的样子,凹凸不平,是非凸的损失函数,会使我们陷入局部最优解,很难获取到全局最优解。凸函数的局部最优解也是全局最优解,我们更希望损失函数是凸函数,更方便进行优化过程。结论可得对于逻辑回归他不是一个很好的损失函数。

image.png

逻辑回归算法详解; 梯度下降与优化; 均方差损失函数;

在逻辑回归中,我们一般是使用的是对数损失函数(交叉熵损失函数),这个函数达到了我们想要的情况。

Cost(hθ(x),y)={log(1hθ(x)) if y=0log(hθ(x)) if y=1\operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{array}{ll} -\log \left(1-h_{\theta}(x)\right) & \text { if } y=0 \\ -\log \left(h_{\theta}(x)\right) & \text { if } y=1 \end{array}\right.

y=0 y=0时,样本曲线如下图,当样本作为类别 0 时,若hθ(x)h_{\theta}(x)接近1时,log(1hθ(x))-\log \left(1-h_{\theta}(x)\right) 的值会变大,损失值趋近于无穷,反之损失值则接近于0。

image.png

y=1 y=1时,样本曲线如下图,当样本作为类别 1 时,若hθ(x)h_{\theta}(x)接近0时,log(hθ(x))-\log \left(h_{\theta}(x)\right) 的值会变大,损失值趋近于无穷,反之损失值则接近于0。

image.png

可以简化对数损失函数,更方便后面的梯度下降过程,公式如下:

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]

其中y(i)y^{(i)}代表样本值,类别0取值为0,类别1取值为1.

image.png

从上图可以看出该损失函数是一个凸函数,局部最优解也是全局最优解,达到了我们的预期。

梯度下降

梯度下降的过程与线性回归模型是一致的,就不多阐述了。 参考:

www.showmeai.tech/article-det…

tech.meituan.com/2015/05/08/…

blog.csdn.net/guoziqing50…

www.cnblogs.com/Maggieli/p/…

zhuanlan.zhihu.com/p/74874291?…

blog.csdn.net/weixin_4247…