机器学习算法/模型——逻辑回归

逻辑回归类似于多元线性回归,只是结果是二元的。它使用多种变换将问题转换成可以拟 合线性模型的问题。

概念/术语

  • Logistic 函数
    一种能将属于某个类的概率映射到 ±∞ 范围上(而不是 0 到 1 之间)的函数。(注意并不是最终的比例)
    Logistic 函数 = 对数几率函数
  • 几率
    “成功”(1)与“不成功”(0)之间的比率。
  • 结果变量:标签是 1 的概率 p(而不是简单二元标签)
    结果变量 = 变量 y

假设函数

建模过程

首先,我们不能将结果变量简单看作二元标签,而应视为标签是 1 的概率 p。
若直接建模,并不能确保概率 p 位于 [0, 1] 区间内:
在这里插入图片描述
下面换一种做法。我们通过在预测因子中应用逻辑响应函数(逆逻辑回归函数)去建模p:
在这里插入图片描述
这一转换确保了 p 值位于 [0, 1] 区间内。

注意:
在这里插入图片描述
对等式两端取对数,得:

在这里插入图片描述
对数几率函数也称Logistic函数。
完成这样的转换过程后,我们就可以使用线性模型去预测概率。

逻辑回归模型

  • 逻辑回归模型
    在这里插入图片描述
  • 逻辑函数
    在这里插入图片描述
    在这里插入图片描述
  • 逻辑回归模型预测
    在这里插入图片描述

损失函数

  • 单个训练样本的损失函数
    在这里插入图片描述
  • 逻辑回归代价函数(log损失函数)

在这里插入图片描述

优化算法

逻辑回归代价函数没有已知的闭式方程(不存在一个标准方程的等价方程)来计算出最小化成本函数的θ值。但是,这是个凸函数,所以通过梯度下降(或是其他任意优化算法)保证能够找出全局最小值

代码实例

import matplotlib.pyplot as plt
import numpy as np 

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
iris = datasets.load_iris()

list(iris.keys())
# 我们试试仅基于花瓣宽度这一个特征,创建一个分类器来检测Virginica鸢尾花。

X = iris["data"][:, 3:] # petal width
y = (iris["target"] == 2).astype(np.int) # 1 if Iris-Virginica, else 0
log_reg = LogisticRegression()

log_reg.fit(X, y)
X_new = np.linspace(0, 3, 1000).reshape(-1, 1)

y_proba = log_reg.predict_proba(X_new)

y_proba
plt.scatter(X, y)

plt.plot(X_new, y_proba)

# plt.plot(X_new, y_proba[:, 1], "g-", label="Iris-Virginica")

# plt.plot(X_new, y_proba[:, 0], "b--", label="Not Iris-Virginica")

在这里插入图片描述
注意,这里有一部分重叠。在大约1.6厘米处存在一个决策边界,这里“是”和“不是”的可能性都是50%

发布了133 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Robin_Pi/article/details/104432832