文章目录
本文属于我的机器学习/深度学习系列文章,点此查看系列文章目录
前言
本文主要通过文字和代码样例讲述逻辑回归的原理(包含逻辑回归的基础概念与推导)和实如何在实践中使用逻辑回归,并用sklearn
库实现在实际数据上分类的测试。
一、什么是逻辑回归
1.1 逻辑回归基础概念
逻辑回归属于线性分类器,通过Logistic
函数(Sigmoid
函数),将数据特征映射到0~1区间的一个概率值(样本属于正例的可能性),通过与0.5的比对得出数据所属的分类。
-
Logistic
函数表达式
f ( z ) = 1 1 + e − z z = w T x + w 0 f(\mathbf z) = \frac{1}{1+e^{-\mathbf z}}\\ \mathbf z = \mathbf w^T \mathbf x + w_0 f(z)=1+e−z1z=wTx+w0
其中, x \mathbf x x是数据的特征向量( x 0 , x 1 , . . . , x n x_0,x_1,...,x_n x0,x1,...,xn), w \mathbf w w是参数向量(需要数据拟合), w 0 w_0 w0是偏置。关于第二行表达式的含义具体可以参考机器学习:线性分类问题(基础知识)。Logistic
相当于在原始用超平面划分数据的情况下多了一层映射,这层映射的好处在于对于靠近0附近的数据可以将其拉开更大的间隔提高区分度。 -
Logistic
函数图像
上述计算得到了在给定数据点后,通过Logistic
函数计算得到的预测值,显然一开始预测值与真实值是有偏差的,通过损失函数计算偏差,优化算法缩小偏差,最终得到模型适合的参数。
1.2 逻辑回归核心概念
搞懂逻辑回归需要弄懂以下几个点:
- 逻辑回归为什么要使用
sigmoid
函数 - 为什么
sigmoid
激活后的值是分类的概率 - 逻辑回归的损失函数如何推导
- 逻辑回归优化参数的过程
注意这几个问题是有先后逻辑关系的,一个个来。
-
逻辑回归为什么要使用
sigmoid
函数&为什么sigmoid
激活后的值是分类的概率
这两个问题实际上可放在一起讨论,并不是简简单单地因为sigmoid
值域是0-1,逻辑回归采用sigmoid
函数的前提是我们假设所有的样本数据点服从伯努利分布,通过伯努利分布形式展开与指数簇分布形式对比发现sigmoid
函数。具体的内容可以参考这篇文章:逻辑回归为什么用Sigmoid? -
逻辑回归的损失函数如何推导
前面说了我们假设样本服从伯努利分布,在训练过程中我们通常有一堆样本点( x i , y i \mathbf x_i,y_i xi,yi),假设样本为1类的概率为p,则为0类的概率为1-p,给定样本 x i \mathbf x_i xi,其分类为 y i y_i yi的概率表示如下:
P ( y i ∣ x i ) = p y i ( 1 − p ) 1 − y i P(y_i|\mathbf x_i) =p^{y_i}(1-p)^{1-y_i} P(yi∣xi)=pyi(1−p)1−yi
由于服从伯努利分布,那么总的概率就是所有样本点概率乘积:
P 总 = ∏ i = 1 n P ( y i ∣ x i ) = ∏ i = 1 n p y i