机器学习教程【免费下载链接】python-machine-learning-bookThe Python Machine Learning (1st edition) book code repository and info resource项目地址https://gitcode.com/gh_mirrors/py/python-machine-learning-book点击查看免费下载导读本文回答《Python Machine Learning》(第 1 版) 配套问答库中一个高频问题正则化逻辑回归的概率解释是什么我们从最大似然函数出发逐步推导对数似然、负对数似然成本函数并引入 L2 正则项最后揭示正则化在贝叶斯视角下等价于对权重施加先验分布。文中所有公式均可对照 faq/probablistic-logistic-regression.md 原文档及其配图并结合仓库中 scikit-learn 实战代码 与 从零实现的神经网络 给出实现级证据。读完你将理解为什么最大化似然能变成最小化成本为什么加了正则化就找不到全局最小值以及正则化强度参数如 scikit-learn 的C在底层到底如何影响权重。一、为什么逻辑回归需要概率解释逻辑回归之所以叫回归却常被用作分类器核心原因在于sigmoidlogistic函数输出的不是硬分类标签而是条件概率。给定特征 $\mathbf{x}$ 与权重 $\mathbf{w}$模型输出的正是 $p(y1 \mid \mathbf{x}; \mathbf{w})$。因此训练逻辑回归的过程天然是一个概率估计问题——我们不是在拟合一条分类直线而是在估计一个概率分布。这为下面的最大似然推导提供了前提。关于 sigmoid 函数为什么能输出条件概率、它与 odds几率比的关系可进一步阅读仓库中的姊妹问答 faq/logistic-why-sigmoid.md。二、最大似然函数所有样本概率的乘积假设训练集有 $n$ 个样本每个样本 $i$ 的标签为 $y^{(i)} \in {0, 1}$逻辑回归的似然函数写作$$ L(\mathbf{w}) \prod_{i1}^{n} \left[ \phi(z^{(i)}) \right]^{y^{(i)}} \left[ 1 - \phi(z^{(i)}) \right]^{1 - y^{(i)}} $$其中 $\phi$ 就是条件概率即 sigmoidlogistic函数$$ \phi(z) p(y1 \mid \mathbf{x}; \mathbf{w}) \frac{1}{1 e^{-z}} $$而 $z$ 是所谓的net input净输入一个标量$$ z \mathbf{w}^T \mathbf{x} $$理解这个乘积结构是关键当 $y^{(i)}1$ 时似然中只保留 $\phi(z^{(i)})$ 这一项我们希望它接近 1当 $y^{(i)}0$ 时只保留 $1-\phi(z^{(i)})$我们希望它接近 1。所以最大化 $L(\mathbf{w})$ 就是最大化模型在所有样本上输出正确概率的联合概率这正是一个最大似然估计MLE问题。三、从最大似然到最小化成本取对数直接最大化乘积形式的似然函数在求导时很不方便因此先取对数把乘积变成求和这就是原文档强调的 addition trick——在梯度下降 / 随机梯度下降求偏导时对每一项独立求导再相加数学上轻松很多$$ l(\mathbf{w}) \log L(\mathbf{w}) \sum_{i1}^{n} \left[ y^{(i)} \log \phi(z^{(i)}) \left(1 - y^{(i)}\right) \log \left(1 - \phi(z^{(i)})\right) \right] $$由于我们讨论的是成本cost习惯上要把最大化翻转成最小化于是取负号得到绝大多数教材中熟悉的逻辑回归成本函数$$ J(\mathbf{w}) \sum_{i1}^{n} \left[ -y^{(i)} \log \phi(z^{(i)}) - \left(1 - y^{(i)}\right) \log \left(1 - \phi(z^{(i)})\right) \right] $$这就是负对数似然NLL成本函数。它与成本函数 / 损失函数概念的辨析可参考 faq/cost-vs-loss.md。仓库中的 code/ch12/neuralnet.py 给出了这一公式的逐行实现_cost方法第 193–198 行term1 -y_enc * (np.log(output)) term2 (1.0 - y_enc) * np.log(1.0 - output) cost np.sum(term1 - term2) L1_term self._L1_reg(self.l1, w1, w2) L2_term self._L2_reg(self.l2, w1, w2) cost cost L1_term L2_term其中y_enc是 one-hot 编码的标签矩阵output是前向传播_feedforward输出的 sigmoid 激活值该文件同时实现了 L1、L2 正则项恰好对应本文下一节的讨论。此外同文件中的_sigmoid方法第 102–110 行特意使用scipy.special.expit而非1.0 / (1.0 np.exp(-z))注释说明这是为了避免极小输入值导致的溢出错误——这是实现 sigmoid 时一个非常实用的工程细节。四、无正则化向全局成本最小值无节制地增大权重现在想象我们在一个二维数据集上把成本 $J(\mathbf{w})$ 画成关于两个权重 $w_1$、$w_2$ 的函数见上文第一张等高线图。对于无正则化的成本存在一个全局成本最小值图中椭圆中心的圆点对应某一组特定的 $w_1$、$w_2$ 组合。关键点在于为了到达这个全局最小值模型会把权重增大到有必要那么大的程度——特征越多、样本噪声越大权重就越可能被推向极端值从而产生过拟合。这正是引入正则化的动机。关于过拟合的表现与学习曲线分析可参见 faq/overfitting.md。五、L2 正则化成本惩罚与可行域约束现在给成本函数加上一个正则项例如 L2$$ J(\mathbf{w}) \left[ \sum_{i1}^{n} -y^{(i)} \log \phi(z^{(i)}) - \left(1 - y^{(i)}\right) \log \left(1 - \phi(z^{(i)})\right) \right] \lambda |\mathbf{w}|_2^2 $$其中 $|\mathbf{w}|_2^2 \sum_j w_j^2$ 是权重向量的平方欧几里得范数。它的含义非常直观每把某个权重推大一点成本就会因为 $\lambda |\mathbf{w}|_2^2$ 而额外增加因此我们无法再到达原来的全局最小值——那里虽然数据拟合项最小但权重的惩罚太大我们被迫在拟合数据与保持权重较小之间寻找甜蜜点sweet spot即在上文第二张等高线图中被以原点为中心的圆L2 范数约束所限制的区域内的成本最小点。图中圆球的大小由额外的超参数 $\lambda$ 控制$\lambda$ 越大惩罚越重圆越小最优解越被拉向原点权重整体越小。仓库中 code/ch12/neuralnet.py 的_L2_reg与_L1_reg方法第 163–170 行直接实现了这两个正则项def _L2_reg(self, lambda_, w1, w2): Compute L2-regularization cost return (lambda_/2.0) * (np.sum(w1[:, 1:] ** 2) np.sum(w2[:, 1:] ** 2)) def _L1_reg(self, lambda_, w1, w2): Compute L1-regularization cost return (lambda_/2.0) * (np.abs(w1[:, 1:]).sum() np.abs(w2[:, 1:]).sum())两个细节值得注意其一权重矩阵切片从第 1 列开始[:, 1:]偏置单元bias unit不参与正则化——偏置只平移决策边界不直接导致过拟合因此标准的 L2/L1 实现都将其排除在外其二梯度更新时_get_gradient方法第 238–241 行对非偏置权重分别加上self.l2 * wL2 的导数 $2\lambda w$ 与系数合并与self.l1 * np.sign(w)L1 的次梯度与成本函数中的正则项严格自洽。六、scikit-learn 实战C参数与权重收缩路径仓库的 code/optional-py-scripts/ch03.py 展示了 scikit-learn 中的对应操作。第 193 行先以弱正则化训练了一个逻辑回归lr LogisticRegression(C1000.0, random_state0) lr.fit(X_train_std, y_train)然后在 Tackling overfitting via regularization 一节第 213–230 行对正则化强度做了系统扫描weights, params [], [] for c in np.arange(-5.0, 5.0): lr LogisticRegression(C10**c, random_state0) lr.fit(X_train_std, y_train) weights.append(lr.coef_[1]) params.append(10**c)这段代码遍历 $C 10^c$$c$ 从 -5 到 5记录每个模型在鸢尾花数据集上对 petal length 与 petal width 两个特征的权重系数最后以 $C$ 为横轴对数刻度绘制权重系数随正则化强度变化的路径图。运行结果呈现清晰的规律随着 $C$ 减小正则化增强权重系数不断向 0 收缩反之 $C$ 越大权重越接近无正则化时的取值。这也印证了 scikit-learn 中C的语义——C是正则化强度的倒数C越小lambda惩罚越重。完整的实验代码与图表可在 code/ch03/ch03.ipynb 中复现。七、贝叶斯视角正则化 给权重加先验原文档最后给出了一个极具启发性的总结加入正则项就仿佛给权重施加了一个先验prior。回顾整个流程MLE在给定训练数据 $D$ 的条件下最大化 $P(D \mid \mathbf{w})$即最大化似然MAP最大后验估计最大化 $P(\mathbf{w} \mid D) \propto P(D \mid \mathbf{w}) , P(\mathbf{w})$其中 $P(\mathbf{w})$ 是权重的先验。如果我们给每个权重施加一个均值为 0 的高斯先验那么对数后验里会出现 $\sum_j w_j^2$ 项——这正是 L2 正则项同理拉普拉斯Laplace先验对应 L1 正则项。所以无正则化我们最大化给定训练数据的似然有正则化我们在额外信息偏置先验的约束下最大化似然。换句话说正则化逻辑回归本质上是一个 MAP 估计它不仅信任数据还信任权重不应该太大这一先验信念。这个观点同样适用于仓库中 code/ch12/neuralnet.py 的神经网络实现——其l1、l2两个构造参数见该文件第 24–28 行的文档字符串Lambda value for L1-regularization. No regularization if l10.0与本文公式中的 $\lambda$ 一一对应你可以在 code/ch12/ch12.ipynb 中直接实验不同 $\lambda$ 对训练成本曲线的影响。八、延伸阅读原问答入口faq/probablistic-logistic-regression.md以及 FAQ 总目录第 87 行收录了本文主题sigmoid 函数为何能输出条件概率faq/logistic-why-sigmoid.mdL2 正则化对决策边界的可视化对比faq/regularized-logistic-regression-performance.md梯度下降 / 随机梯度下降 / 闭式解的区别faq/closed-form-vs-gd.md成本函数与损失函数的概念辨析faq/cost-vs-loss.md过拟合及其缓解策略总览faq/overfitting.md。一句话总结正则化逻辑回归的概率解释可以浓缩为一条推导链——sigmoid 输出条件概率 → 构造所有样本的似然乘积 → 取对数并取负得到成本函数 → 加上权重范数惩罚L2→ 在贝叶斯视角下等价于对权重施加高斯先验的 MAP 估计而 $\lambda$或 scikit-learn 中与之成反比的C正是控制这个先验强度的旋钮。赞分享机器学习教程【免费下载链接】python-machine-learning-bookThe Python Machine Learning (1st edition) book code repository and info resource项目地址https://gitcode.com/gh_mirrors/py/python-machine-learning-book点击查看免费下载相关推荐RPG-DiffusionMaster社区贡献指南如何参与项目开发与功能扩展RPG DiffusionMaster社区贡献指南如何参与项目开发与功能扩展 RPG DiffusionMaster是一个基于多模态LLM的文本到图像生成框架LingBot-Map流式3D重建的边界在哪里推理范围与状态重置深度讨论LingBot Map流式3D重建的边界在哪里推理范围与状态重置深度讨论 LingBot Map ECCV 2026 Oral是一个前馈式流式3D重建模型人工智能计算机视觉深度学习基础模型3D建模使用CVXPY实现L1正则化逻辑回归的完整指南使用CVXPY实现L1正则化逻辑回归的完整指南 还在为高维数据下的逻辑回归过拟合问题而烦恼本文将为你提供使用CVXPY实现L1正则化逻辑回归的完整解决方案从科学计算上一篇零基础搞定SpiderFoot报告定制3步打造专业HTML/PDF安全审计文档下一篇gh_mirrors/ohmy/ohmyzsh社区贡献者访谈核心开发者的经验分享创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Google Gemini 深度评测与实战:用 TaoToken 统一 Key 打通 API 调用链路 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 23:51:44
免费小游戏平台实测:Poki、itch.io、7k7k哪个更好玩? 很多人一到休息时间就不知道该玩点什么,正经大作玩不动,手机App又总觉得越做越重,光是安装包和注册流程就能劝退一半人。其实我一直觉得,真正适合大多数人消遣的,往往是那些打开就能玩、关掉也不心疼的免费小游戏平台。… · 2026/9/24 0:38:26
联邦学习攻击防御复现:从论文到可运行代码的闭环路径 简介:本资源是一份面向计算机及相关专业本科生的联邦学习安全方向毕业设计实践包,聚焦于论文级攻击防御方案的代码复现与工程落地,适用于毕设选题、课程设计、AI安全入门及科研验证场景。压缩包含184个文件,主体为109个Python源码… · 2026/9/24 0:38:26
C++ std::prev详解:告别`--v.end()`的迭代器安全回退 1. 为什么需要这个函数:从*(--v.end())的隐患说起我之前在review同事代码时看到这样一行:auto it --v.end();他当时想拿vector的最后一个元素,这段代码确实能编译、能运行,在std::vector上表现得很好。我当时问了他一句ÿ… · 2026/9/24 0:38:20
深入解析onblur与onchange:从触发机制到easyui日期控件实战 1. 表单交互的隐形骨架:为什么这两个事件值得单独拎出来讲做前端开发的人,几乎每天都在和表单打交道。输入框、下拉框、日期选择器、文件上传,这些控件构成了用户与系统之间最基础的对话通道。但很多人写了几年业务代码,对onblur和… · 2026/9/24 0:38:20
岩石表面矿物质检测:YOLOv8数据集训练与避坑指南 简介:一套面向岩石表面矿物质检测的YOLO格式目标检测数据集,适合地质学研究者和计算机视觉开发者用于矿物识别、目标检测模型训练与算法验证。资源共2000个文件,压缩包约59.08MB,包含1138个txt标签文件、861张jpg岩石图像和1个Pyt… · 2026/9/24 0:38:20
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44