什么是逻辑回归
一、摘要
本文主要讲述了逻辑回归算法的基本原理和应用。首先介绍了逻辑回归在机器学习领域的重要地位,然后解释了其名称的由来和如何利用样本特征和概率之间的关系进行分类。通过与线性回归的对比,解释了概率值的概念和如何进行分类。强调了逻辑回归只能解决二分类问题,并介绍了如何通过转换函数将线性回归的结果转换为概率值。最后通过实例说明了如何应用逻辑回归模型进行肿瘤类型的预测。
二、逻辑回归算法简介
逻辑回归是一种常用的机器学习算法,在各个行业中广泛使用,尤其在非军事和安全领域。逻辑回归的简单性使其易于理解和实现,但同时也非常有用。逻辑回归的性能优于许多其他复杂算法,特别是在数据量不大时。
从这张图可以得出以下结论:- 整体应用情况:在大多数行业的工作中,逻辑回归是最常使用的数据科学方法,应用比例达63.5% ,远超其他方法。
- 特定行业差异:军事和安全行业是例外,该领域神经网络的使用频率略高于逻辑回归。
- 其他方法使用情况:决策树(49.9%)和随机森林(46.3%)的使用也较为广泛;贝叶斯技术、集成方法、支持向量机 等使用比例依次递减;卷积神经网络(CNNs)、循环神经网络(RNNs)等相对小众,“其他”类别占比8.3% 。
逻辑回归解决的是分类问题,而不是回归问题。它通过将样本特征与样本发生的概率联系起来进行预测。它预测的是样本发生的概率,通常使用概率值p来表示。如下图所示:
- y ^ = f ( x ) \hat{y} = f(x) y^=f(x)
- p ^ = f ( x ) \hat{p} = f(x) p^=f(x)
- y ^ = { 1 , p ^ ≥ 0.5 0 , p ^ ≤ 0.5 \hat{y} =\begin{cases}1, & \hat{p} \geq 0.5 \\ 0, & \hat{p} \leq 0.5 \end{cases} y^={1,0,p^≥0.5p^≤0.5
表明逻辑回归是一种用于解决分类问题的机器学习算法,虽然带有“回归”二字,但常用于二分类任务。 - y ^ = f ( x ) \hat{y} = f(x) y^=f(x) 中, y ^ \hat{y} y^ 表示模型对样本 x x x 的预测结果 。 f ( x ) f(x) f(x) 代表逻辑回归模型的预测函数。
- p ^ = f ( x ) \hat{p} = f(x) p^=f(x) 里, p ^ \hat{p} p^ 是模型预测样本 x x x 属于正例的概率,同样由函数 f ( x ) f(x) f(x) 计算得出,这里的 f ( x ) f(x) f(x) 一般基于Sigmoid函数,将输入映射到0到1之间的概率值。
- y ^ = { 1 , p ^ ≥ 0.5 0 , p ^ ≤ 0.5 \hat{y} =\begin{cases}1, & \hat{p} \geq 0.5 \\ 0, & \hat{p} \leq 0.5 \end{cases} y^={1,0,p^≥0.5p^≤0.5 是逻辑回归的决策规则,当预测概率 p ^ \hat{p} p^ 大于等于0.5时,将样本预测为正例( y ^ = 1 \hat{y}=1 y^=1) ;当预测概率 p ^ \hat{p} p^ 小于等于0.5时,将样本预测为负例( y ^ = 0 \hat{y}=0 y^=0) 。
- 如果概率p大于等于0.5,则预测类别为1;如果概率p小于等于0.5,则预测类别为0。
- 这里的1和0在实际问题中可能代表不同的含义,如恶性肿瘤患者与良性肿瘤患者。
通过类比线性回归的求解过程来理解逻辑回归的概率计算
- 线性回归推导过程
- y ^ = f ( x ) → y ^ = θ T ⋅ x b \hat{y} = f(x) \rightarrow \hat{y} = \theta^{T} \cdot x_{b} y^=f(x)→y^=θT⋅xb
- 值域 (-infinity, +infinity)
- y ^ = f ( x ) → y ^ = θ T ⋅ x b \hat{y} = f(x) \rightarrow \hat{y} = \theta^{T} \cdot x_{b} y^=f(x)→y^=θT⋅xb
- 逻辑回归是计算样本发生的概率,而概率的值域不可能处于正负无穷大之间,而是:
- 概率的值域为 [0, 1],由此可得到概率值p的求解公式:
- p ^ = σ ( θ T ⋅ x b ) \hat{p} = \sigma(\theta^{T} \cdot x_{b}) p^=σ(θT⋅xb)
- 概率的值域为 [0, 1],由此可得到概率值p的求解公式:
- 公式推导过程:
- 最初以 y ^ = f ( x ) \hat{y} = f(x) y^=f(x) 表示逻辑回归模型对样本 x x x 的预测函数。接着将其转化为 y ^ = θ T ⋅ x b \hat{y} = \theta^{T} \cdot x_{b} y^=θT⋅xb ,这里类似于线性回归的形式, θ T \theta^{T} θT 是参数向量的转置, x b x_{b} xb 是包含偏置项的特征向量,此形式的值域是 ( − ∞ , + ∞ ) (-\infty, +\infty) (−∞,+∞) 。
- 指出概率的值域应该在 [ 0 , 1 ] [0, 1] [0,1] 区间。为了使模型输出符合概率的取值范围,引入Sigmoid函数 σ \sigma σ ,得到 p ^ = σ ( θ T ⋅ x b ) \hat{p} = \sigma(\theta^{T} \cdot x_{b}) p^=σ(θT⋅xb) ,通过Sigmoid函数将 θ T ⋅ x b \theta^{T} \cdot x_{b} θT⋅xb 的输出映射到 [ 0 , 1 ] [0, 1] [0,1] ,使 p ^ \hat{p} p^ 表示样本属于正例的概率。
这个过程是借助类似线性回归的形式逐步推导出逻辑回归中基于Sigmoid函数的计算方式
- 线性回归推导过程
逻辑回归的
概率计算
逻辑回归使用
sigmoid函数
将线性回归的结果转换到0到1之间的概率值。sigmoid函数的表达式为1/(1+e^(-t)),其中t是线性回归的结果。- 公式1: p ^ = σ ( θ T ⋅ x b ) \hat{p} = \sigma(\theta^{T} \cdot x_{b}) p^=σ(θT⋅xb)
- 公式2: σ ( t ) = 1 1 + e − t \sigma(t)=\frac{1}{1 + e^{-t}} σ(t)=1+e−t1
- 公式1:在逻辑回归中, p ^ \hat{p} p^ 表示模型预测样本属于正例的概率。 θ T \theta^{T} θT 是模型参数向量 θ \theta θ 的转置 , x b x_{b} xb 是包含偏置项的特征向量, σ \sigma σ 是Sigmoid函数。该公式表明通过将特征向量与参数向量的内积作为Sigmoid函数的输入,从而得到样本属于正例的概率估计。
- 公式2:这是Sigmoid函数的具体表达式,自变量为 t t t。Sigmoid函数能够将任意实数 t t t 映射到区间 ( 0 , 1 ) (0, 1) (0,1) 内,常用于逻辑回归等模型中,将线性组合的结果转化为概率值。
3.sigmoid函数的值域为(0,1),即在0到1之间,适合表示概率。
第一个公式:
p ^ = σ ( θ T ⋅ x b ) = 1 1 + e − θ T ⋅ x b \hat{p} = \sigma(\theta^{T} \cdot x_{b})=\frac{1}{1 + e^{-\theta^{T} \cdot x_{b}}} p^=σ(θT⋅xb)=1+e−θT⋅xb1第二个公式:
y ^ = { 1 , p ^ ≥ 0.5 0 , p ^ ≤ 0.5 \hat{y} = \begin{cases} 1, & \hat{p} \geq 0.5 \\ 0, & \hat{p} \leq 0.5 \end{cases} y^={1,0,p^≥0.5p^≤0.5第一个公式:这是逻辑回归中预测样本属于正例的概率公式。其中 p ^ \hat{p} p^ 表示预测的概率值; σ \sigma σ 是Sigmoid函数,能将任意实数映射到(0, 1)区间; θ T \theta^{T} θT 是模型参数向量 θ \theta θ 的转置, x b x_{b} xb 是包含了偏置项的特征向量。该公式通过Sigmoid函数对特征向量和参数向量的内积进行转换,得到样本属于正例的概率估计。
第二个公式:是逻辑回归的预测结果判定规则。 y ^ \hat{y} y^ 表示最终的预测类别,当预测概率 p ^ \hat{p} p^ 大于等于0.5时,预测类别为1(通常代表正例);当预测概率 p ^ \hat{p} p^ 小于等于0.5时,预测类别为0(通常代表负例)。
逻辑回归的
参数估计
- 1.逻辑回归的目标是找到一组合适的参数θ,使得模型能最好地拟合训练数据。
- 2.参数估计的过程包括
计算梯度
和更新参数
,以最小化损失函数
。 - 3.逻辑回归的损失函数通常是
对数似然损失函数
。在逻辑回归中,最常用的损失函数就是对数似然损失函数,也称为交叉熵损失函数
。它用于衡量模型预测结果与真实标签之间的差异,通过最小化该损失函数来估计模型的参数,使得模型的预测结果尽可能接近真实情况。
三、sigmoid函数实现
代码实现sigmiod函数
# 这段代码的整体功能是通过Python编程实现Sigmoid函数,并可视化该函数在`-10`到`10`区间上的曲线形状 。 import numpy as np import matplotlib.pyplot as plt def sigmoid(t): return 1 / (1 + np.exp(-t)) x = np.linspace(-10, 10, 500) y = sigmoid(x) plt.plot(x, y) plt.show()
执行的结果:
代码解释
- 定义Sigmoid函数
def sigmoid(t)
:定义一个名为sigmoid
的函数,参数为t
。return 1 / (1 + np.exp(-t))
:函数体,根据Sigmoid函数的数学公式 :
σ ( t ) = 1 1 + e − t \sigma(t)=\frac{1}{1 + e^{-t}} σ(t)=1+e−t1
使用numpy
中的指数函数np.exp
来计算并返回Sigmoid函数值。
- 生成数据并绘图
x = np.linspace(-10, 10, 500)
:使用numpy
的linspace
函数生成一个在-10
到10
之间均匀分布的包含500个点的一维数组x
。y = sigmoid(x)
:将生成的x
数组传入sigmoid
函数,计算得到对应的y
值数组。plt.plot(x, y)
:使用matplotlib
的plot
函数绘制x
和y
的关系曲线。plt.show()
:显示绘制好的图形。
- 定义Sigmoid函数
四、思考题
对于给定的样本数据集 X,y, 我们如何找到参数 theta,使得用这样的方式,可以最大程度获得样本数据集 X,对应的分类输出 y? 欢迎大家留言,我们下一篇进行讨论!!