逻辑回归之简介
1 课程概览
本课介绍逻辑回归的应用场景和基本原理。逻辑回归是有监督学习,适用于二分类问题(如新冠阳性/阴性、贷款放/不放、情感正面/负面、广告点击/不点击)。讲解Sigmoid函数(S型函数/激活函数)的作用:将预测值映射到0-1之间的概率,结合阈值划分正负样本。
2 核心概念与定义
- 逻辑回归:有监督学习,标签离散,适用于二分类。
- Sigmoid函数:S型函数/激活函数,将值映射到0-1之间。
- 阈值:划分正负样本的标准(默认0.5)。
- 正样本:概率 ≥ 阈值(如 ≥ 0.5)。
- 负样本:概率 < 阈值(如 < 0.5)。
- 单调递增函数:Sigmoid是单调递增函数。
- 拐点:Sigmoid的拐点在(0, 0.5)。
3 算法与模型详解
3.1 逻辑回归应用场景
| 场景 | 二分类 |
|---|---|
| 新冠检测 | 阳性 / 阴性 |
| 银行贷款 | 放 / 不放 |
| 情感分析 | 正面 / 负面 |
| 广告点击 | 点击 / 不点击 |
| 表白 | 同意 / 拒绝 |
| 考试 | 过 / 不过 |
| 找工作 | 要 / 不要 |
3.2 Sigmoid函数
别名:
- S型函数
- 激活函数
作用:将值映射到0-1之间
公式: $$f(x) = \frac{1}{1 + e^{-x}}$$
特点:
- 单调递增函数
- 拐点在(0, 0.5)
- 输出值在0-1之间
- 形状像S
3.3 逻辑回归原理
流程:
- 线性回归处理数据,得到预测值
- 将预测值传给Sigmoid函数
- Sigmoid将预测值映射到0-1之间的概率
- 结合阈值划分正负样本
公式: $$h_\theta(X) = \sigma(W^TX + B) = \frac{1}{1 + e^{-(W^TX + B)}}$$
3.4 阈值分类
默认阈值:0.5
分类规则:
- 概率 ≥ 0.5:正样本
- 概率 < 0.5:负样本
示例:
- 概率 = 0.8 → 正样本
- 概率 = 0.3 → 负样本
- 概率 = 0.5 → 正样本
3.5 Sigmoid函数的导数
导数公式: $$f'(x) = f(x) \cdot (1 - f(x))$$
说明:先求倒数,再求导
3.6 Sigmoid函数的作用
作用:把负无穷到正无穷的值映射到0-1之间
输入:线性回归的预测值(可以是任何实数)
输出:0-1之间的概率值
4 数学原理与推导
4.1 Sigmoid函数
$$\sigma(z) = \frac{1}{1 + e^{-z}}$$
4.2 逻辑回归模型
$$h_\theta(X) = \frac{1}{1 + e^{-(W^TX + B)}}$$
4.3 Sigmoid导数
$$\sigma'(z) = \sigma(z) \cdot (1 - \sigma(z))$$
4.4 分类决策
$$\text{预测} = \begin{cases} \text{正样本}, & h_\theta(X) \geq \text{阈值} \ \text{负样本}, & h_\theta(X) < \text{阈值} \end{cases}$$
5 代码示例
import numpy as np
import matplotlib.pyplot as plt
# Sigmoid函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 绘制Sigmoid函数
z = np.linspace(-10, 10, 100)
y = sigmoid(z)
plt.figure(figsize=(10, 6))
plt.plot(z, y, color='blue', linewidth=2, label='Sigmoid')
plt.axhline(y=0.5, color='red', linestyle='--', label='阈值=0.5')
plt.axhline(y=0, color='gray', linestyle='-', alpha=0.3)
plt.axhline(y=1, color='gray', linestyle='-', alpha=0.3)
plt.axvline(x=0, color='gray', linestyle='-', alpha=0.3)
# 标注拐点
plt.plot(0, 0.5, 'ro', markersize=8, label='拐点(0, 0.5)')
plt.xlabel('z (预测值)')
plt.ylabel('σ(z) (概率)')
plt.title('Sigmoid函数')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
# Sigmoid导数
def sigmoid_derivative(z):
s = sigmoid(z)
return s * (1 - s)
# 验证导数
print("Sigmoid(0) =", sigmoid(0)) # 0.5
print("Sigmoid导数(0) =", sigmoid_derivative(0)) # 0.25
# 逻辑回归分类示例
def logistic_classify(z, threshold=0.5):
"""逻辑回归分类"""
prob = sigmoid(z)
if prob >= threshold:
return "正样本", prob
else:
return "负样本", prob
# 测试
test_values = [-2, -1, 0, 1, 2]
for z in test_values:
result, prob = logistic_classify(z)
print(f"z={z:3d} → 概率={prob:.4f} → {result}")
输出示例:
Sigmoid(0) = 0.5
Sigmoid导数(0) = 0.25
z= -2 → 概率=0.1192 → 负样本
z= -1 → 概率=0.2689 → 负样本
z= 0 → 概率=0.5000 → 正样本
z= 1 → 概率=0.7311 → 正样本
z= 2 → 概率=0.8808 → 正样本
6 重难点与易错提醒
- ❗重点:逻辑回归适用于二分类。
- ❗重点:Sigmoid将值映射到0-1之间。
- ❗重点:默认阈值0.5,≥0.5为正样本,<0.5为负样本。
- ❗重点:Sigmoid是单调递增函数,拐点在(0, 0.5)。
- ⚠️易错:认为逻辑回归是回归任务(实际是分类)。
- ⚠️易错:阈值设置不当影响分类效果。
- 💡深入理解:逻辑回归 = 线性回归 + Sigmoid + 阈值判断。
7 课堂问答精选
Q: 逻辑回归的应用场景有哪些?
A: 逻辑回归适用于二分类场景:
- 新冠检测:阳性/阴性
- 银行贷款:放/不放
- 情感分析:正面/负面
- 广告点击:点击/不点击
- 表白:同意/拒绝
- 考试:过/不过
Q: Sigmoid函数的作用是什么?
A: Sigmoid函数(S型函数/激活函数)的作用是将负无穷到正无穷的值映射到0-1之间的概率。它是单调递增函数,拐点在(0, 0.5)。结合阈值(默认0.5)可以划分正负样本。
8 本课小结
- 逻辑回归:有监督学习,二分类。
- 应用场景:新冠检测、贷款、情感分析、广告点击等。
- Sigmoid:S型函数,映射到0-1概率。
- 阈值:默认0.5,划分正负样本。
- 原理:线性回归 → Sigmoid → 概率 → 阈值判断。
9 延伸思考与实践
- 实践:绘制Sigmoid函数曲线。
- 预习:概率相关知识。
- 思考:为什么Sigmoid适合做分类?