社交网站的优点和缺点,深圳网站制作公司讯,网页的源代码的开始和结束标签必须是,新沂网站设计deepseek.com:逻辑回归的目标函数#xff0c;损失函数#xff0c;梯度下降 标量和矩阵形式的数学推导#xff0c;pytorch真实能跑的代码案例以及模型,数据#xff0c;预测结果的可视化展示#xff0c; 模型应用场景和优缺点#xff0c;及如何改进解决及改进方法数据推导。…deepseek.com:逻辑回归的目标函数损失函数梯度下降 标量和矩阵形式的数学推导pytorch真实能跑的代码案例以及模型,数据预测结果的可视化展示 模型应用场景和优缺点及如何改进解决及改进方法数据推导。
逻辑回归全面解析
一、数学推导
模型定义 逻辑回归模型为概率预测模型输出 P ( y 1 ∣ x ) σ ( w ⊤ x b ) P(y1 \mid \mathbf{x}) \sigma(\mathbf{w}^\top \mathbf{x} b) P(y1∣x)σ(w⊤xb)其中 σ ( z ) 1 1 e − z \sigma(z) \frac{1}{1e^{-z}} σ(z)1e−z1。 1. 目标函数与损失函数 损失函数交叉熵 单个样本的损失 L ( y , y ^ ) − y log ( y ^ ) − ( 1 − y ) log ( 1 − y ^ ) \mathcal{L}(y, \hat{y}) -y \log(\hat{y}) - (1-y) \log(1-\hat{y}) L(y,y^)−ylog(y^)−(1−y)log(1−y^) 其中 y ^ σ ( w ⊤ x b ) \hat{y} \sigma(\mathbf{w}^\top \mathbf{x} b) y^σ(w⊤xb)。 所有样本的平均损失标量形式 J ( w , b ) − 1 N ∑ i 1 N [ y i log ( y ^ i ) ( 1 − y i ) log ( 1 − y ^ i ) ] J(\mathbf{w}, b) -\frac{1}{N} \sum_{i1}^N \left[ y_i \log(\hat{y}_i) (1-y_i) \log(1-\hat{y}_i) \right] J(w,b)−N1i1∑N[yilog(y^i)(1−yi)log(1−y^i)] 矩阵形式 X \mathbf{X} X为设计矩阵 y \mathbf{y} y为标签向量 J ( w , b ) − 1 N [ y ⊤ log ( σ ( X w b ) ) ( 1 − y ) ⊤ log ( 1 − σ ( X w b ) ) ] J(\mathbf{w}, b) -\frac{1}{N} \left[ \mathbf{y}^\top \log(\sigma(\mathbf{X}\mathbf{w} b)) (1-\mathbf{y})^\top \log(1-\sigma(\mathbf{X}\mathbf{w} b)) \right] J(w,b)−N1[y⊤log(σ(Xwb))(1−y)⊤log(1−σ(Xwb))] 2. 梯度下降推导 标量形式梯度 对 w j w_j wj求偏导 ∂ L ∂ w j ( y ^ − y ) x j \frac{\partial \mathcal{L}}{\partial w_j} (\hat{y} - y) x_j ∂wj∂L(y^−y)xj 对 b b b求偏导 ∂ L ∂ b y ^ − y \frac{\partial \mathcal{L}}{\partial b} \hat{y} - y ∂b∂Ly^−y 矩阵形式梯度 梯度矩阵为 ∇ w J 1 N X ⊤ ( σ ( X w b ) − y ) \nabla_{\mathbf{w}} J \frac{1}{N} \mathbf{X}^\top (\sigma(\mathbf{X}\mathbf{w} b) - \mathbf{y}) ∇wJN1X⊤(σ(Xwb)−y) ∂ J ∂ b 1 N ∑ i 1 N ( y ^ i − y i ) \frac{\partial J}{\partial b} \frac{1}{N} \sum_{i1}^N (\hat{y}_i - y_i) ∂b∂JN1i1∑N(y^i−yi) 损失函数的设计是机器学习模型的核心环节它决定了模型如何衡量预测值与真实值的差异并指导参数优化方向。逻辑回归的损失函数交叉熵设计并非偶然而是基于概率建模、数学优化和信息论的深刻原理。以下从多个角度详细解释其设计逻辑 一、损失函数的设计逻辑
1. 概率建模的视角
逻辑回归的目标是预测样本属于某一类的概率二分类。 假设数据服从伯努利分布 对单个样本标签 y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1}模型预测的概率为 { P ( y 1 ∣ x ) y ^ σ ( w ⊤ x b ) , P ( y 0 ∣ x ) 1 − y ^ . \begin{cases} P(y1 \mid \mathbf{x}) \hat{y} \sigma(\mathbf{w}^\top \mathbf{x} b), \\ P(y0 \mid \mathbf{x}) 1 - \hat{y}. \end{cases} {P(y1∣x)y^σ(w⊤xb),P(y0∣x)1−y^. 样本的联合似然函数为 L ( w , b ) ∏ i 1 N y ^ i y i ( 1 − y ^ i ) 1 − y i . L(\mathbf{w}, b) \prod_{i1}^N \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i}. L(w,b)i1∏Ny^iyi(1−y^i)1−yi. 最大化对数似然 为了便于优化对似然函数取负对数将乘法转为加法凸函数性质不变 − log L ( w , b ) − ∑ i 1 N [ y i log y ^ i ( 1 − y i ) log ( 1 − y ^ i ) ] . -\log L(\mathbf{w}, b) -\sum_{i1}^N \left[ y_i \log \hat{y}_i (1 - y_i) \log (1 - \hat{y}_i) \right]. −logL(w,b)−i1∑N[yilogy^i(1−yi)log(1−y^i)]. 最小化该式等价于最大化似然函数此即 交叉熵损失。
2. 信息论视角
交叉熵Cross-Entropy衡量两个概率分布 P P P真实分布和 Q Q Q预测分布的差异 H ( P , Q ) − E P [ log Q ] . H(P, Q) -\mathbb{E}_{P}[\log Q]. H(P,Q)−EP[logQ]. 对于二分类问题
真实分布 P P P标签 y y y是确定的0或1可视为一个 Dirac delta分布。预测分布 Q Q Q模型输出的概率 y ^ \hat{y} y^。 交叉熵的表达式与负对数似然一致因此最小化交叉熵等价于让预测分布逼近真实分布。
3. 优化视角梯度性质 交叉熵 vs 均方误差MSE 若使用 MSE 损失 L 1 2 ( y − y ^ ) 2 \mathcal{L} \frac{1}{2}(y - \hat{y})^2 L21(y−y^)2其梯度为 ∂ L ∂ w j ( y − y ^ ) ⋅ y ^ ( 1 − y ^ ) ⋅ x j . \frac{\partial \mathcal{L}}{\partial w_j} (y - \hat{y}) \cdot \hat{y} (1 - \hat{y}) \cdot x_j. ∂wj∂L(y−y^)⋅y^(1−y^)⋅xj. 当 y ^ \hat{y} y^接近 0 或 1 时预测置信度高梯度中的 y ^ ( 1 − y ^ ) \hat{y}(1 - \hat{y}) y^(1−y^)趋近于 0导致 梯度消失参数更新缓慢。 交叉熵的梯度为 ∂ L ∂ w j ( y ^ − y ) x j . \frac{\partial \mathcal{L}}{\partial w_j} (\hat{y} - y) x_j. ∂wj∂L(y^−y)xj. 梯度直接正比于误差 ( y ^ − y ) (\hat{y} - y) (y^−y)无论预测值大小梯度始终有效优化更高效。
4. 数学性质
凸性交叉熵损失函数在逻辑回归中是凸函数Hessian矩阵半正定保证梯度下降能找到全局最优解。概率校准性交叉熵强制模型输出具有概率意义需配合 sigmoid 函数而 MSE 无此特性。 二、为什么不是其他损失函数
1. 均方误差MSE的缺陷
梯度消失问题如上述。对概率的惩罚不对称 当 y 1 y1 y1时预测 y ^ 0.9 \hat{y}0.9 y^0.9的 MSE 损失为 0.01 0.01 0.01而交叉熵损失为 − log ( 0.9 ) ≈ 0.105 -\log(0.9) \approx 0.105 −log(0.9)≈0.105。 交叉熵对错误预测如 y ^ 0.1 \hat{y}0.1 y^0.1时 y 1 y1 y1的惩罚更严厉 − log ( 0.1 ) ≈ 2.3 -\log(0.1) \approx 2.3 −log(0.1)≈2.3符合分类任务需求。
2. 其他替代损失函数
Hinge LossSVM使用 适用于间隔最大化但对概率建模不直接且优化目标不同。Focal Loss 改进交叉熵解决类别不平衡问题但需额外调整超参数。 三、交叉熵的数学推导
1. 从伯努利分布到交叉熵
假设样本独立标签 y ∼ Bernoulli ( y ^ ) y \sim \text{Bernoulli}(\hat{y}) y∼Bernoulli(y^)其概率质量函数为 P ( y ∣ y ^ ) y ^ y ( 1 − y ^ ) 1 − y . P(y \mid \hat{y}) \hat{y}^y (1 - \hat{y})^{1 - y}. P(y∣y^)y^y(1−y^)1−y. 对数似然函数为 log P ( y ∣ y ^ ) y log y ^ ( 1 − y ) log ( 1 − y ^ ) . \log P(y \mid \hat{y}) y \log \hat{y} (1 - y) \log (1 - \hat{y}). logP(y∣y^)ylogy^(1−y)log(1−y^). 最大化对数似然等价于最小化其负数即交叉熵损失。
2. 梯度推导矩阵形式
设设计矩阵 X ∈ R N × D \mathbf{X} \in \mathbb{R}^{N \times D} X∈RN×D权重 w ∈ R D \mathbf{w} \in \mathbb{R}^D w∈RD偏置 b ∈ R b \in \mathbb{R} b∈R预测值 y ^ σ ( X w b ) \hat{\mathbf{y}} \sigma(\mathbf{X}\mathbf{w} b) y^σ(Xwb)。 交叉熵损失 J ( w , b ) − 1 N [ y ⊤ log y ^ ( 1 − y ) ⊤ log ( 1 − y ^ ) ] . J(\mathbf{w}, b) -\frac{1}{N} \left[ \mathbf{y}^\top \log \hat{\mathbf{y}} (1 - \mathbf{y})^\top \log (1 - \hat{\mathbf{y}}) \right]. J(w,b)−N1[y⊤logy^(1−y)⊤log(1−y^)]. 梯度计算 ∂ J ∂ w 1 N X ⊤ ( y ^ − y ) , \frac{\partial J}{\partial \mathbf{w}} \frac{1}{N} \mathbf{X}^\top (\hat{\mathbf{y}} - \mathbf{y}), ∂w∂JN1X⊤(y^−y), ∂ J ∂ b 1 N ∑ i 1 N ( y ^ i − y i ) . \frac{\partial J}{\partial b} \frac{1}{N} \sum_{i1}^N (\hat{y}_i - y_i). ∂b∂JN1i1∑N(y^i−yi). 四、实际应用中的设计原则
任务需求匹配分类任务需概率输出回归任务用 MSE。优化效率梯度应稳定且易于计算。概率解释性损失函数需与概率模型一致如交叉熵配 sigmoid。鲁棒性对异常值的敏感程度交叉熵比 MSE 更敏感需数据清洗。 五、总结
逻辑回归的交叉熵损失函数是通过以下步骤设计的
概率假设假设数据服从伯努利分布。最大似然估计将参数估计问题转化为优化问题。数学简化取负对数似然得到交叉熵形式。优化验证选择梯度性质更优的损失函数。
这种设计使得逻辑回归在二分类任务中高效、稳定且输出具有概率意义成为基础且强大的模型。
二、PyTorch 代码案例
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification# 生成数据
X, y make_classification(n_samples1000, n_features2, n_redundant0, n_clusters_per_class1)
X torch.tensor(X, dtypetorch.float32)
y torch.tensor(y, dtypetorch.float32).view(-1, 1)# 定义模型
class LogisticRegression(nn.Module):def __init__(self, input_dim):super().__init__()self.linear nn.Linear(input_dim, 1)def forward(self, x):return torch.sigmoid(self.linear(x))model LogisticRegression(2)
criterion nn.BCELoss()
optimizer torch.optim.SGD(model.parameters(), lr0.1)# 训练
losses []
for epoch in range(100):y_pred model(X)loss criterion(y_pred, y)loss.backward()optimizer.step()optimizer.zero_grad()losses.append(loss.item())# 可视化损失曲线
plt.plot(losses)
plt.title(Training Loss)
plt.show()# 决策边界可视化
w model.linear.weight.detach().numpy()[0]
b model.linear.bias.detach().numpy()x_min, x_max X[:, 0].min() - 1, X[:, 0].max() 1
y_min, y_max X[:, 1].min() - 1, X[:, 1].max() 1
xx, yy np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100))
Z model(torch.tensor(np.c_[xx.ravel(), yy.ravel()], dtypetorch.float32)).detach().numpy()
Z Z.reshape(xx.shape)plt.contourf(xx, yy, Z, alpha0.8)
plt.scatter(X[:, 0], X[:, 1], cy.squeeze(), edgecolorsk)
plt.title(Decision Boundary)
plt.show()三、可视化展示
数据分布二维散点图展示类别分离情况。损失曲线训练过程中损失值下降曲线。决策边界等高线图显示模型预测分界线。 四、应用场景与优缺点 应用场景 信用评分、垃圾邮件检测、疾病预测线性可分问题。 优点 计算高效适合大规模数据。输出概率解释性强。 缺点 无法直接处理非线性关系。对多重共线性敏感。 五、改进方法与数学推导 正则化 L2正则化目标函数变为 J reg J ( w , b ) λ 2 ∥ w ∥ 2 J_{\text{reg}} J(\mathbf{w}, b) \frac{\lambda}{2} \|\mathbf{w}\|^2 JregJ(w,b)2λ∥w∥2 梯度更新 w ← w − η ( ∇ w J λ w ) \mathbf{w} \leftarrow \mathbf{w} - \eta \left( \nabla_{\mathbf{w}} J \lambda \mathbf{w} \right) w←w−η(∇wJλw) 特征工程 添加多项式特征 x 1 2 , x 2 2 , x 1 x 2 x_1^2, x_2^2, x_1x_2 x12,x22,x1x2等将数据映射到高维空间。 核方法 通过核技巧隐式映射到高维空间需结合其他模型如SVM。 六、总结
逻辑回归通过概率建模解决二分类问题代码简洁高效但需注意其线性假设的限制。通过正则化、特征工程等手段可显著提升模型性能。