一、核心原理与模型结构
-
从线性回归到概率映射
逻辑回归通过 Sigmoid函数 将线性预测值映射到 (0,1) 区间,输出概率值:
σ(z)=11+e−z其中 z=wTx+bσ(z)=1+e−z1其中 z=wTx+b
输出 p(y=1∣x)=σ(z)p(y=1∣x)=σ(z) 表示样本属于正类的概率。 -
对数几率解释
逻辑回归建立 对数几率与线性预测值 的关系:
ln(p1−p)=wTx+bln(1−pp)=wTx+b
权重变化直接影响概率优势,例如 wjwj 增加 1 单位,概率优势扩大 ewjewj 倍。
二、数学推导与优化方法
-
极大似然估计
目标是最小化 交叉熵损失函数:
J(w)=−1m∑i=1m[yilnσ(zi)+(1−yi)ln(1−σ(zi))]J(w)=−m1∑i=1m[yilnσ(zi)+(1−yi)ln(1−σ(zi))]
通过最大化对数似然函数 L(w)L(w) 求解最优参数。 -
梯度计算与参数更新
权重梯度公式(矩阵形式):
∇wJ=1mXT(σ(z)−Y)∇wJ=m1XT(σ(z)−Y)
使用梯度下降法更新参数:
w:=w−α∇wJ(α 为学习率)w:=w−α∇wJ(α 为学习率) -
正则化
- L1正则化:增加 λ∥w∥1λ∥w∥1,促进稀疏解。
- L2正则化:增加 λ2∥w∥222λ∥w∥22,抑制过拟合。
三、多分类扩展:Softmax回归
-
模型结构
对 KK 个类别,使用 Softmax函数 计算概率分布:
p(y=k∣x)=ewkTx∑j=1KewjTxp(y=k∣x)=∑j=1KewjTxewkTx
输出每个类别的概率,总和为 1。 -
损失函数
多分类交叉熵损失:
J(W)=−1m∑i=1m∑k=1Kyi,klnp(y=k∣xi)J(W)=−m1∑i=1m∑k=1Kyi,klnp(y=k∣xi)
其中 yi,kyi,k 为第 ii 个样本在类别 kk 的标签。
四、实战案例:鸢尾花分类(Python代码)
1. 数据准备与模型训练
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练多分类逻辑回归模型
model = LogisticRegression(multi_class='multinomial', solver='lbfgs', penalty='l2', C=1.0)
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
print(f"准确率:{accuracy_score(y_test, y_pred):.2f}") # 输出:准确率:1.00:ml-citation{ref="3,6" data="citationList"}
2. 自定义逻辑回归实现(核心代码)
import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
class LogisticRegression:
def __init__(self, lr=0.01, epochs=1000):
self.lr = lr
self.epochs = epochs
def fit(self, X, y):
m, n = X.shape
self.w = np.zeros(n)
self.b = 0
for _ in range(self.epochs):
z = np.dot(X, self.w) + self.b
p = sigmoid(z)
grad_w = np.dot(X.T, (p - y)) / m
grad_b = np.mean(p - y)
self.w -= self.lr * grad_w
self.b -= self.lr * grad_b
def predict(self, X):
z = np.dot(X, self.w) + self.b
return (sigmoid(z) > 0.5).astype(int):ml-citation{ref="4,6" data="citationList"}
五、关键总结
场景 | 方法 | 注意事项 |
---|---|---|
二分类(用户购买预测) | Sigmoid函数 + 交叉熵损失 | 特征标准化、处理类别不平衡 |
多分类(鸢尾花分类) | Softmax函数 + L2正则化 | 选择 solver='lbfgs' 加速收敛 |
高维稀疏数据 | L1正则化 + SGD优化 | 稀疏特征需压缩存储 |
六、扩展学习
- 特征工程:类别特征需编码(如One-Hot),数值特征需标准化。
- 模型评估:除准确率外,关注混淆矩阵、ROC-AUC曲线。
- 部署优化:使用
joblib
保存模型,或转换为C++代码提升推理速度。 - 推荐书籍:《统计学习基础》《Python机器学习实战》
通过理论推导与代码实践结合,逻辑回归可灵活应用于分类任务,并为理解更复杂模型(如神经网络)奠定基础。