逻辑回归是一种监督式机器学习算法,用于分类任务,其目标是预测实例是否属于给定类的概率。 逻辑回归是一种统计算法,用于分析两个数据因素之间的关系。

什么是逻辑回归?

逻辑回归用于二元分类我们使用 sigmoid 函数,该函数将输入作为自变量并产生介于 0 和 1 之间的概率值。

例如,我们有两个类,类 0 和类 1,如果输入的逻辑函数值大于 0.5(阈值),那么它属于类 1,否则它属于类 0。它被称为回归,因为它是线性回归的扩展,但主要用于分类问题。

要点:

  • 逻辑回归预测分类因变量的输出。因此,结果必须是分类值或离散值。
  • 它可以是 Yes 或 No、0 或 1、true 或 False 等,但它不是给出 0 和 1 的确切值,而是给出介于 0 和 1 之间的概率值。
  • 在 Logistic 回归中,我们拟合的不是回归线,而是“S”形的逻辑函数,它预测两个最大值(0 或 1)。

逻辑函数 – Sigmoid 函数

  • sigmoid 函数是一种数学函数,用于将预测值映射到概率。
  • 它将任何实际值映射到 0 和 1 范围内的另一个值。逻辑回归的值必须在 0 和 1 之间,不能超过这个限制,所以它形成了一条类似于“S”形式的曲线。
  • S 型曲线称为 Sigmoid 函数或逻辑函数。
  • 在逻辑回归中,我们使用阈值的概念,它定义了 0 或 1 的概率。如高于阈值的值趋于1,低于阈值的值趋于0。

逻辑回归的类型

根据类别,逻辑回归可以分为三种类型:

  1. 二项式:在二项式 Logistic 回归中,只能有两种可能的因变量类型,例如 0 或 1、通过或失败等。
  2. 多项式:在多项式 Logistic 回归中,因变量可以有 3 种或更多可能的无序类型,例如“猫”、“狗”或“羊”
  3. 序数:在序数 Logistic 回归中,可以有 3 种或更多可能的有序类型的因变量,例如“低”、“中”或“高”。

逻辑回归的假设

我们将探讨逻辑回归的假设,因为理解这些假设对于确保我们使用模型的适当应用非常重要。假设包括:

  1. 独立观测值:每个观测值都独立于另一个观测值。这意味着任何输入变量之间都没有相关性。
  2. 二元因变量:它假设因变量必须是二元或二分变量,这意味着它只能采用两个值。对于两个以上的类别,使用 SoftMax 函数。
  3. 自变量与对数赔率的线性关系:自变量与因变量的对数赔率之间的关系应该是线性的。
  4. 无异常值:数据集中不应有异常值。
  5. 样本量大:样本量足够大

逻辑回归中涉及的术语

以下是逻辑回归中涉及的一些常用术语:

  • 自变量:应用于因变量预测的输入特征或预测因子。
  • 因变量:逻辑回归模型中的目标变量,我们试图预测它。
  • 逻辑函数:用于表示自变量和因变量如何相互关联的公式。逻辑函数将输入变量转换为介于 0 和 1 之间的概率值,该值表示因变量为 1 或 0 的可能性。
  • 赔率:它是某事发生与未发生的某事的比率。 它与概率不同,因为概率是发生的事情与可能发生的一切的比率。
  • 对数赔率:对数赔率,也称为 logit 函数,是赔率的自然对数。在逻辑回归中,因变量的对数几率被建模为自变量和截距的线性组合。
  • 系数:逻辑回归模型的估计参数,显示自变量和因变量之间的相互关系。
  • 截距:逻辑回归模型中的常数项,表示所有自变量都等于零时的对数几率。
  • 最大似然估计:用于估计逻辑回归模型系数的方法,该方法使给定模型观察数据的可能性最大化。

逻辑回归如何工作?

逻辑回归模型使用 sigmoid 函数将线性回归函数连续值输出转换为分类值输出,该函数将输入的任何实值自变量集映射到 0 到 1 之间的值。此函数称为逻辑函数。

让独立输入功能为:

python与AI:机器学习中的逻辑回归算法_逻辑回归

因变量是 Y,只有二进制值,即 0 或 1。

python与AI:机器学习中的逻辑回归算法_逻辑回归_02

然后,将多线性函数应用于输入变量 X。

python与AI:机器学习中的逻辑回归算法_sigmoid函数_03

这里 python与AI:机器学习中的逻辑回归算法_线性回归_04 是 X 的第 i 个观测值, python与AI:机器学习中的逻辑回归算法_git_05 是权重或系数,b 是偏置项,也称为截距。简单地说,这可以表示为权重和偏差的点积。

python与AI:机器学习中的逻辑回归算法_线性回归_06

我们上面讨论的都是线性回归。

Sigmoid 函数

现在我们使用 sigmoid 函数,其中输入为 z,我们找到 0 和 1 之间的概率,即预测的 y。

python与AI:机器学习中的逻辑回归算法_git_07

python与AI:机器学习中的逻辑回归算法_sigmoid函数_08

Sigmoid 函数

如上图所示,图形 sigmoid 函数将连续变量数据转换为概率,即介于 0 和 1 之间。

  • python与AI:机器学习中的逻辑回归算法_多项式_09趋向于 1 作为python与AI:机器学习中的逻辑回归算法_sigmoid函数_10
  • python与AI:机器学习中的逻辑回归算法_多项式_09趋向于 0 作为python与AI:机器学习中的逻辑回归算法_逻辑回归_12
  • python与AI:机器学习中的逻辑回归算法_多项式_09始终介于 0 和 1 之间

其中,成为类的概率可以衡量为:

python与AI:机器学习中的逻辑回归算法_sigmoid函数_14

                                                                                 𝑃(𝑦=0)=1−𝜎(𝑧)

逻辑回归方程

奇数是某事发生与未发生的某事的比率。它与概率不同,因为概率是发生的事情与可能发生的一切的比率。太奇怪了:

python与AI:机器学习中的逻辑回归算法_逻辑回归_15

在奇数上应用自然对数。则对数奇数为:

python与AI:机器学习中的逻辑回归算法_sigmoid函数_16

那么最终的逻辑回归方程将是:

python与AI:机器学习中的逻辑回归算法_git_17

逻辑回归的似然函数

预测概率为:

  • 对于 y=1 预测概率为:p(X;b,w) = p(x)
  • 对于 y = 0,预测概率为:1-p(X;b,w) = 1-p(x)

python与AI:机器学习中的逻辑回归算法_逻辑回归_18

两面采用天然原木

python与AI:机器学习中的逻辑回归算法_逻辑回归_19

对数似然函数的梯度

为了找到最大似然估计值,我们将 w.r.t w,

python与AI:机器学习中的逻辑回归算法_多项式_20

逻辑回归的代码实现

二项式 Logistic 回归: 

目标变量只能有 2 种可能的类型:“0”或“1”,可能表示“赢”与“输”、“通过”与“失败”、“死”与“活”等,在这种情况下,使用 sigmoid 函数,这在上面已经讨论过了。

根据模型的要求导入必要的库。此 Python 代码演示如何使用乳腺癌数据集实现用于分类的逻辑回归模型。

# import the necessary libraries
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# load the breast cancer dataset
X, y = load_breast_cancer(return_X_y=True)

# split the train and test dataset
X_train, X_test,\
    y_train, y_test = train_test_split(X, y,
                                       test_size=0.20,
                                       random_state=23)
# LogisticRegression
clf = LogisticRegression(random_state=0)
clf.fit(X_train, y_train)

# Prediction
y_pred = clf.predict(X_test)

acc = accuracy_score(y_test, y_pred)
print("Logistic Regression model accuracy (in %):", acc*100)

输出

Logistic Regression model accuracy (in %): 95.6140350877193

多项式逻辑回归:

目标变量可以有 3 种或更多可能的类型,这些类型没有排序(即类型没有定量意义),例如“疾病 A”与“疾病 B”与“疾病 C”。

在这种情况下,使用 softmax 函数代替 sigmoid 函数。在多项式逻辑回归中,输出变量可以有两个以上可能的离散输出。考虑数字数据集。

from sklearn.model_selection import train_test_split
from sklearn import datasets, linear_model, metrics

# load the digit dataset
digits = datasets.load_digits()

# defining feature matrix(X) and response vector(y)
X = digits.data
y = digits.target

# splitting X and y into training and testing sets
X_train, X_test,\
    y_train, y_test = train_test_split(X, y,
                                       test_size=0.4,
                                       random_state=1)

# create logistic regression object
reg = linear_model.LogisticRegression()

# train the model using the training sets
reg.fit(X_train, y_train)

# making predictions on the testing set
y_pred = reg.predict(X_test)

# comparing actual response values (y_test)
# with predicted response values (y_pred)
print("Logistic Regression model accuracy(in %):",
      metrics.accuracy_score(y_test, y_pred)*100)

输出:

Logistic Regression model accuracy(in %): 96.52294853963839

线性回归和逻辑回归之间的差异

线性回归和逻辑回归之间的区别在于,线性回归输出是可以是任何的连续值,而逻辑回归预测实例是否属于给定类的概率。

线性回归

逻辑回归

线性回归用于使用一组给定的自变量来预测连续因变量。

逻辑回归用于使用一组给定的自变量来预测分类因变量。

线性回归用于求解回归问题。

它用于解决分类问题。

在这里,我们预测了连续变量的值

在此,我们预测了分类变量的值

在这一点上,我们找到了最合适的生产线。

在这里,我们找到了 S 曲线。

采用最小二乘法估计精度。

最大似然估计方法用于准确率的估计。

输出必须是连续值,例如价格、年龄等。

输出必须是分类值,例如 0 或 1、Yes 或 No 等。

它需要因变量和自变量之间的线性关系。

它不需要线性关系。

自变量之间可能存在共线性。

自变量之间不应存在共线性。

常见问题 (FAQ)

什么是机器学习中的逻辑回归?

逻辑回归是一种统计方法,用于开发具有二元因变量(即二元)的机器学习模型。逻辑回归是一种统计技术,用于描述数据以及一个因变量与一个或多个自变量之间的关系。

逻辑回归的三种类型是什么?

逻辑回归分为三种类型:二进制回归、多项式回归和有序回归。它们在执行和理论上有所不同。二元回归涉及两种可能的结果:是或否。当有三个或更多值时,使用多项式逻辑回归。

为什么分类问题使用逻辑回归?

逻辑回归更易于实现、解释和训练。它可以非常快速地对未知记录进行分类。当数据集是线性可分离的时,它表现良好。模型系数可以解释为特征重要性的指标。

逻辑回归与线性回归的区别是什么?

线性回归用于预测连续结果,而逻辑回归用于预测观测值落入特定类别的可能性。逻辑回归采用 S 形逻辑函数来映射 0 到 1 之间的预测值。

逻辑函数在逻辑回归中扮演什么角色?

逻辑回归依赖于逻辑函数将输出转换为概率分数。此分数表示观测值属于特定类的概率。S 形曲线有助于对数据进行阈值设置并将数据分类为二元结果。