python机器学习-逻辑回归(14)
本文是Python 机器学习系列的一部分。您可以在此处找到本系列之前所有帖子的链接
介绍
在上一章中,我们研究了线性回归。
在本章中,我们将学习逻辑回归。
注意:如果您可以将任何事物与您自己或您的生活联系起来,那么理解这个概念的机会就更大。因此,尝试通过将一切与人类联系起来来理解一切。
什么是逻辑回归?
Logistic 回归是当因变量是二分(二进制)时要进行的适当回归分析。与所有回归分析一样,逻辑回归是一种预测分析。Logistic 回归用于描述数据并解释一个因二元变量与一个或多个名义、有序、区间或比率级别的自变量之间的关系。Logistic 回归对具有两种可能结果的分类问题的概率进行建模。它是用于分类问题的线性回归模型的扩展。
它是干什么用的?
Logistic 回归用于描述数据并解释一个因二元变量与一个或多个名义、有序、区间或比率级别的自变量之间的关系。
线性回归和逻辑回归的区别
比较基础 | 线性回归 | 物流回归 |
基本的 | 数据使用直线建模。 | 某些获得事件的概率表示为预测变量组合的线性函数。 |
因变量和自变量之间的线性关系 | 是必须的 | 不需要 |
自变量 | 可以相互关联。(特别是在多元线性回归中) | 不应相互关联(不存在多重共线性)。 |
结果 | 结果(因变量)是连续的。它可以有无数个可能值中的任何一个。 | 结果(因变量)只有有限数量的可能值。 |
因变量 | 当您的响应变量是连续的时,使用线性回归。例如,体重、身高、小时数等。 | 当响应变量本质上是分类变量时,使用逻辑回归。例如,yes/no、true/false、red/green/blue、1st/2nd/3rd/4th 等。 |
方程 | 线性回归给出形式为 Y = MX + C 的方程,这意味着方程的阶数为 1。 | 逻辑回归给出了一个方程,其形式为 Y = e X + e -X |
系数解释 | 自变量的系数解释非常简单(即保持所有其他变量不变,随着该变量的单位增加,因变量预计会增加/减少 xxx)。 | 取决于您使用的族(二项式、泊松等)和链接(log、logit、inverse-log 等),解释不同。 |
误差最小化技术 | 使用普通最小二乘法来最小化误差并达到最佳拟合 | 使用最大似然法得出解决方案。 |
为什么叫逻辑回归?
术语回归的含义非常简单:任何试图找出变量之间关系的过程都称为回归。逻辑回归是一种回归,因为它发现变量之间的关系。它是逻辑的,因为它使用逻辑函数作为链接函数。因此全名。
逻辑回归的目标是什么?
逻辑回归的目标是使用最简约的模型正确预测单个案例的结果类别。为实现此目标,创建了一个模型,其中包含对预测响应变量有用的所有预测变量。换句话说,逻辑回归的目标是找到最佳拟合(但生物学上合理)的模型来描述感兴趣的二分特征(因变量=响应或结果变量)和一组独立的(预测变量或解释变量)之间的关系变量。
Logistic 回归的类型
1. 二元逻辑回归
分类响应只有两个 2 可能的结果。示例:垃圾邮件与否
2. 多项 Logistic 回归
三个或更多类别,无需订购。示例:预测哪种食物更受欢迎(素食、非素食、素食)
3.序数逻辑回归
三个或更多类别的排序。示例:电影评级从 1 到 5
关键术语
1.Logit
在统计学中,logit 函数或 log-odds 是概率p /(1 − p )的对数,其中 p 是概率。它是一种创建从 [0,1] 到概率值映射的函数。{\displaystyle (-\infty ,+\infty )}它是数学中使用的 Sigmoidal“逻辑”函数或逻辑变换的逆函数,尤其是在统计学中。
在深度学习中,术语 logits 层通常用于分类任务的神经网络的最后一个神经元层,它产生原始预测值作为实数,范围从{\displaystyle (-\infty ,+\infty )}.
2.Logit函数
logit 函数是一个 sigmoid 函数,它接受任何实数输入 t, ( {\displaystyle t\in \mathbb {R} }),并输出一个介于 0 和 1 之间的值;对于 logit,这被解释为采用输入对数赔率并具有输出概率。的标准logit 函数{\displaystyle \sigma :\mathbb {R} \rightarrow (0,1)}被定义为如下:
3.Logistic函数的反函数
我们现在可以将 logit(对数赔率)函数定义为{\displaystyle g=\sigma ^{-1}}标准logistic函数的反函数。不难看出,它满足:
{\displaystyle g(p(x))=\sigma ^{-1}(p(x))=\operatorname {logit} p(x)=\ln \left({\frac {p(x)}{ 1-p(x)}}\right)=\beta _{0}+\beta _{1}x,}
等价地,在对双方取幂后,我们有赔率:
在哪里,
- g 是 logit 函数。g(p(x)) 的等式说明 logit(即对数赔率或赔率的自然对数)等效于线性回归表达式。
- ln 表示自然对数。
- p(x) 的公式说明给定案例的因变量的概率等于线性回归表达式的逻辑函数值。这很重要,因为它表明线性回归表达式的值可以从负无穷大到正无穷大变化,但在转换之后,结果概率 p(x) 的范围在 0 和 1 之间。
- \beta _{0} 是线性回归方程的截距(预测变量为零时的标准值)。
- \beta _{1}x 是回归系数乘以预测变量的某个值。
- 基数“e”表示指数函数。
4. 概率
因变量等于个案的概率(给定预测变量的一些线性组合 x)等价于线性回归表达式的指数函数。这说明了 logit 如何充当概率和线性回归表达式之间的链接函数。鉴于 logit 的范围在负无穷大和正无穷大之间,它提供了一个足够的标准来进行线性回归,并且 logit 很容易转换回赔率。
所以我们定义因变量等于一个案例的概率(给定预测变量的一些线性组合 x)如下:
5. 赔率比
对于连续自变量,优势比可以定义为:
{\displaystyle \mathrm {OR} ={\frac {\operatorname {odds} (x+1)}{\operatorname {odds} (x)}}={\frac {\left({\frac {F(x) +1)}{1-F(x+1)}}\right)}{\left({\frac {F(x)}{1-F(x)}}\right)}}={\frac {e^{\beta _{0}+\beta _{1}(x+1)}}{e^{\beta _{0}+\beta _{1}x}}}=e^{\测试版 _{1}}}
这种指数关系提供了以下解释\beta _{1}:e^{\beta _{1}}x 每增加 1 个单位,几率就会乘以。
对于二元自变量,优势比定义为{\frac {ad}{bc}}其中a、b、c 和d是 2×2 列联表中的单元格。
6. 多重解释变量
如果有多个解释变量,则\beta _{0}+\beta _{1}x可以将上述表达式修改为
然后,当将其用于将成功的对数几率与预测变量的值相关联的方程中时,线性回归将是具有m 个解释器的多元回归;参数β _{j}对于所有Ĵ = 0,1,2,…,米都估计。
同样,更传统的方程是:
{\displaystyle \log {\frac {p}{1-p}}=\beta _{0}+\beta _{1}x_{1}+\beta _{2}x_{2}+\cdots + \beta _{m}x_{m}}
和
{\displaystyle p={\frac {1}{1+b^{-(\beta _{0}+\beta _{1}x_{1}+\beta _{2}x_{2}+\cdots +\beta _{m}x_{m})}}}}
通常 b = e。
逻辑回归
逻辑回归生成逻辑曲线,该曲线仅限于 0 到 1 之间的值。逻辑回归类似于线性回归,但该曲线是使用目标变量“几率”的自然对数而非概率构建的。此外,预测变量不必呈正态分布或在每组中具有相等的方差。
逻辑回归方程由下式给出
\displaystyle \frac {p}{1-p} = e^{b_0+b_1*x}
两边取自然对数得到
\displaystyle \ln{\frac {p}{1-p}} = b_0+b_1*x
到现在为止,我们已经看到了一个变量的方程,所以现在下面是变量数量大于1时的方程
{\displaystyle p={\frac {1}{1+b^{-(\beta _{0}+\beta _{1}x_{1}+\beta _{2}x_{2}+\cdots +\beta _{m}x_{m})}}}}
通常 b = e。或者
{\displaystyle \log {\frac {p}{1-p}}=\beta _{0}+\beta _{1}x_{1}+\beta _{2}x_{2}+\cdots + \beta _{m}x_{m}}
让我用一个例子来解释在哪些情况下我们将使用逻辑回归:
在预先定义边界的情况下,线性回归将失败,就像我们使用线性回归一样,它可能会预测边界外。例如,我们以上一章中使用的房价预测为例,因此在预测时,线性回归可能会预测价格过高,这实际上可能不可行,或者损失太大,例如可能消极。
由于在二元分类的情况下,只有两种可能的结果,但输入数据不一定要均匀分布,所以经常看到如果在类’1的决策边界内找到’0’类数据点’。由于 sigmoid 函数是一条曲线,因此得到完美拟合的可能性增加,因此解决了具有
逻辑回归示例
以IRIS数据集为例,可以直接从sklearn数据集仓库中导入。随意使用任何数据集,kaggle 和 Google Colab 上有一些非常好的数据集。
1. 使用 SKLearn
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
在上面的代码中,我们导入了将要使用的所需库。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!