当前位置: 首页 > news >正文

机械学习算法思想和数学思想汇总

一、线性回归:找一条"最像"的直线

核心思想(一句话)

你有一堆散点,想画一条直线穿过它们,让所有点到这条直线的垂直距离之和尽量小

通俗理解

想象你在墙上钉了一堆钉子,现在要用一根橡皮筋尽量贴近所有钉子。你不能让橡皮筋随意弯曲(那是后面的非线性模型),只能拉直。那怎么算"最贴近"?

最自然的想法:测量每个钉子到橡皮筋的垂直距离,把这些距离加起来,找使总和最小的那条橡皮筋。

数学思想(大白话版)

模型公式

翻译成人话:预测值 = 每个因素乘以一个重要性权重,再加一个基准值

比如预测房价:

目标函数(最小二乘法)

人话:真实值和预测值的差距,平方后全部加起来。为什么要平方?

  • 不加绝对值是因为平方好求导(数学上光滑)

  • 平方会惩罚大误差——差1厘米罚1分,差10厘米罚100分,这样模型就不敢对某些点偏差太大

正规方程(一步到位求最优解)

人话:把所有数据排成一个大方阵,通过矩阵运算直接算出最优权重。就像解一个线性方程组,只不过未知数很多。

梯度下降(一步一步爬下山)

人话:如果直接求逆矩阵算不出来(数据太大或矩阵不可逆),那就一步一步调整权重。想象你在山上,每次往最陡的下坡方向走一步,步长是 η (学习率)。走多了,就走到山底(误差最小处)。


二、逻辑回归:不是回归,是"概率分类器"

核心思想(一句话)

先用线性回归算出一个分数,再用一个"S型函数"把这个分数压缩成0到1之间的概率,然后按概率分类。

通俗理解

逻辑回归解决的是分类问题(比如"这封邮件是不是垃圾邮件"),但它名字里带"回归"是因为内部先做了一个线性打分

你可以把它想象成一个概率转换器

  1. 先把各种特征(邮件里"免费""中奖"等词的出现次数)加权求和,得到一个原始分数(比如 +3.5 或 -1.2)

  2. 这个分数范围是 (−∞,+∞) ,但概率必须在 (0,1) 之间

  3. 所以用一个"S型曲线"(Sigmoid)把它压扁到0-1之间

数学思想(大白话版)

Sigmoid 函数

人话:无论 z 是多大或多小的数字,输出永远在0和1之间。z=0 时输出0.5;z 越大越接近1;z 越小越接近0。

预测概率

人话:给定一组特征,模型算出"这是正类"的概率。

对数几率(Log-odds)

人话:线性回归直接预测数值;逻辑回归预测的是"对数几率"。什么叫几率?就是"发生的概率除以不发生的概率"。对数几率是线性可加的,所以可以用线性模型来拟合。

损失函数(交叉熵)

人话:这是极大似然估计的结果。通俗说——如果真实标签是1(垃圾邮件),模型预测的概率越接近1,损失越小;如果预测成0.1,损失就很大。这个公式就是在惩罚"猜错且猜得很离谱"的情况

梯度

人话:梯度就是"预测值减去真实值"再乘以特征。如果预测比真实大,就把权重往下调;预测小了,就往上调。非常直观。


三、决策树:像玩"20个问题"一样做判断

核心思想(一句话)

通过一系列是非题(比如"年龄是否大于30?")把数据不断分成更纯的小群体,直到每个小群体里的样本差不多是一类人。

通俗理解

想象你在玩"猜人物"游戏。你心里想一个人,我问你:"是男性吗?""身高超过1米7吗?""戴眼镜吗?"——每个问题都把可能性空间切掉一半。

决策树就是这个逻辑:

  • 每个内部节点是一个判断题(某个特征是否满足某条件)

  • 每个分支是"是"或"否"

  • 每个叶子节点是最终判断(分类结果或回归值)

关键问题是:先问哪个问题最好?

数学思想(大白话版)

熵(不确定性度量)

人话:熵描述的是混乱程度

  • 一个盒子里全是红球(p红​=1 ),熵 = 0,完全不混乱,你随便抓都知道是红的。

  • 一半是红一半是蓝,熵 = 1,最混乱,你完全猜不准。

  • 这个公式就是量化这种"猜不准的程度"。

信息增益

人话:问了一个问题后,混乱程度降低了多少?降低越多,这个问题越有价值。决策树每次选信息增益最大的特征来分裂。

基尼指数(CART用)

人话:基尼指数也是衡量纯度的。如果一类占100%,基尼=0(最纯);两类各50%,基尼=0.5(最乱)。基尼计算比熵快一点,所以CART默认用它。

回归树的MSE分裂

人话:对于回归问题,找一个切分点,让左边和右边各自内部差异(方差)最小。就像把一群身高各异的人分成两堆,让每堆内部身高尽量接近。


四、随机森林:"三个臭皮匠顶个诸葛亮"

核心思想(一句话)

建很多棵略有不同的决策树,让它们投票,用群体的智慧抵消个体的错误。

通俗理解

一棵决策树容易过拟合(对训练数据记得太死,新数据一来就傻眼)。但如果我建100棵树,每棵树看的数据略有不同、用的特征也略有不同,然后让它们投票,错误就会被"平均"掉。

这就像让100个专家独立判断一只股票涨跌,虽然每个人可能都有偏见,但综合起来往往比一个人准。

数学思想(大白话版)

Bootstrap采样(有放回抽样): 从原始数据(比如1000条)中随机抽1000条,抽完放回去再抽。这样有些样本会被重复抽到,有些永远抽不到。

人话:抽不到的那些样本(约36.8%)叫OOB样本,可以用来当"考试卷"测试模型,不用额外划分验证集。

两阶段随机性

  1. 样本随机:每棵树用不同的Bootstrap样本训练

  2. 特征随机:每棵树分裂节点时,只从所有特征中随机挑一部分(比如总共50个特征,每次只挑7个来选最佳分裂)

人话:如果所有树长得太像,它们会犯同样的错误,投票就没意义了。特征随机性强迫每棵树"管中窥豹",从不同角度看问题,这样错误就不相关了。

方差降低原理: 假设单棵树的预测方差是 σ2 ,树与树之间的相关性是 ρ ,那么 T 棵树平均后的方差:

人话:树越多(T 大),第二项越小;但如果树之间太像(ρ 接近1),第一项降不下去。所以随机森林的关键不是树要多,而是树之间要"各抒己见"


五、XGBoost:一个"纠错委员会",越纠越准

核心思想(一句话)

按顺序训练多棵树,每棵新树专门学习前面所有树犯过的错误(残差),逐步把预测值修正到真实值。

通俗理解

想象你在教一个学生做题:

  • 第一轮:学生凭直觉做,错了不少

  • 第二轮:你专门教他上一轮错在哪里,他进步了一些

  • 第三轮:再教他前两轮共同剩下的错误

  • ……最后把所有轮次的答案加起来,就是最终答案

XGBoost就是这个逻辑。它不是像随机森林那样"平行投票",而是串行纠错

数学思想(大白话版)

加法模型

人话:最终预测是 T 棵树的预测值加总。每棵树 ft​ 输出一个数(分类问题输出的是log-odds,回归问题直接是数值)。

二阶泰勒展开(XGBoost的神来之笔): 第 t 轮时,已有模型预测 y^​(t−1) ,新树要加 ft​ 。损失函数展开:

人话:泰勒展开就是用抛物线近似曲线。g 是梯度(一阶导,告诉你往哪走),h 是Hessian(二阶导,告诉你走多快会过头)。XGBoost不仅看"往哪走",还看"路有多陡",所以比只用梯度(传统Gradient Boosting)更精准。

目标函数

人话:前两项是"拟合残差"(让新树纠正错误),后两项是惩罚

  • γL :树叶子越多,罚得越重(防止树太深太复杂)

  • λ∑wj2​ :叶子输出值太大也罚(防止某棵树一家独大)

最优叶子权重

人话:每个叶子节点最终输出的数值,等于该叶子上所有样本的梯度之和 Gj​ ,除以二阶梯度之和 Hj​ 加上正则化 λ 。直观上,如果样本梯度很大(错得厉害),叶子输出就大(纠得猛);如果样本很杂(Hj​ 大),就保守一点。

分裂增益

人话:分裂好不好,看"分裂后两边各自的纯度提升"减去"分裂的代价 γ "。只有当增益大于0时才分裂——这就是预剪枝


六、LightGBM:XGBoost的"极速版"

核心思想(一句话)

保留XGBoost的"纠错"数学框架,但用直方图近似按叶子生长梯度采样把速度提升10倍以上。

通俗理解

XGBoost像是一个精益求精的老工匠,每个细节都手工打磨(遍历所有可能的分裂点),但太慢了。LightGBM像是一个聪明的工程师,说:"我们不用精确到毫米,精确到厘米就够了;而且不用每层都长齐,哪片叶子最有潜力就先长哪片。"

数学思想(大白话版)

直方图算法(Histogram): 把连续特征的值分成 k 个桶(比如255个),统计每个桶里有多少样本、梯度总和是多少。

人话:原来找最佳分裂点要遍历所有样本的排序值(比如年龄从18到90岁,每个值都试一遍),现在只试255个桶的边界。精度略有损失,但速度快了几十倍,而且桶的边界本身就有一定的正则化效果(不容易过拟合)。

Leaf-wise vs Level-wise

  • Level-wise(XGBoost默认):树一层一层长,每层所有叶子一起分裂。像修剪灌木,剪得整整齐齐,但有些枝条本来就不需要长。

  • Leaf-wise(LightGBM):每次只挑分裂增益最大的那个叶子分裂。像种果树,哪根枝条挂果潜力大就修哪根,同样数量的叶子能长出更深的有效分支。

人话:假设你只有10次分裂的预算。Level-wise可能把精力浪费在已经挺纯的叶子上;Leaf-wise把钱花在刀刃上,同样复杂度下拟合能力更强

梯度单边采样(GOSS): 保留梯度大的样本(错得离谱的,必须重点教),对梯度小的样本随机采样(已经做对的,少看几个没关系),然后给小梯度样本加权补偿。

人话:班级里有些学生错题很多(大梯度),有些几乎全对(小梯度)。老师不用给全对的学生逐题讲解,随机抽查几个确保没作弊就行,把时间省下来教差生。数据量少了,但信息量没少多少

互斥特征捆绑(EFB): 如果两个特征几乎不会同时出现(比如"是否有游泳池"和"是否是公寓",公寓一般没泳池),就把它们捆成一个特征。

人话:1000个特征里很多是"你出现我就不出现"的死对头,把它们打包,直方图只要建几百个而不是1000个,内存和计算都省了。


总结:一张图看懂六大算法的关系

plain

复制

┌─────────────────────────────────────────────────────────────┐ │ 线性回归 ──→ 逻辑回归 │ │ (直接预测数值) (预测概率,加了个Sigmoid壳) │ │ ↓ │ │ 决策树 ───────────────────────────────────────────┐ │ │ (用是非题切分空间,非线性) │ │ │ ↓ ↓ │ │ 随机森林(Bagging) XGBoost(Boosting)│ │ (多棵树并行投票,降低方差) (多棵树串行纠错) │ │ ↓ ↓ │ │ ─────────────────────────────────────────── LightGBM │ │ (同样的数学思想,但工程上极致优化,更快更省内存) │ └─────────────────────────────────────────────────────────────┘

表格

算法通俗比喻数学核心
线性回归拉一根最贴近钉子的橡皮筋最小化误差平方和
逻辑回归先打分,再用S型曲线转成概率极大似然 + 交叉熵
决策树玩"20个问题"逐步缩小范围信息增益 / 基尼指数 / MSE
随机森林100个专家独立投票Bootstrap + 方差分解
XGBoost纠错委员会,越纠越准二阶泰勒展开 + 正则化结构分数
LightGBM同样的委员会,但开会效率极高直方图近似 + Leaf-wise + GOSS
http://www.jsqmd.com/news/814419/

相关文章:

  • 2026年丽水黄金回收哪家好?福正美能卖高价吗? - 福正美黄金回收
  • Rocketmq学习笔记
  • 国内全自动定量液体灌装机厂家实测排行:技术与交付能力对比 - 速递信息
  • 认真求推荐:2026年工业机器人采购,哪些买卖网站价格透明、服务好? - 品牌推荐大师
  • Flutter Hero 动画完全指南
  • 2026年西安画册印刷厂与活页环装定制深度横评:5大高新技术企业选购指南 - 年度推荐企业名录
  • 告别CNN!用PyG Temporal和GC-LSTM搞定动态社交网络的好友推荐(附完整代码)
  • PEG-b-PLA胶束定制服务:满足多场景纳米载体需求
  • 深度学习大师课 第 1 课:什么是深度学习?纯手写你的第一个神经网络
  • 特色体验拉满!2026安徽漂流推荐排行 四季运营/文化融合/网红打卡 - 极欧测评
  • 八大网盘直链解析完整指南:告别限速困扰,获取真实下载地址
  • 基于Next.js与Supabase构建AI智能体优先的问答竞技平台
  • 唯一客服 SCRM:独立部署的Golang企业微信SCRM源码
  • 魔兽争霸3游戏优化终极指南:3步解决帧率限制与界面显示问题
  • Android开源生态重构:从中心化控制到社区驱动的技术路径与挑战
  • 对接过百个医院项目,告诉你医院污水处理设备厂家怎么挑 - 速递信息
  • Midjourney提示词不再孤岛:如何用Notion AI自动结构化生成+同步至ComfyUI节点图+反向标注至Figma设计系统(含私有化部署避坑清单)
  • 2026年度国内流量计公司推荐权威排行榜:五大头部企业硬核实力全拆解 - 速递信息
  • 微信小程序逆向工程:wxappUnpacker技术深度解析与实战指南
  • 基于MCP协议与Gemini大模型构建智能命令行AI助手
  • 网盘直链下载助手终极指南:一键解锁八大平台高速下载限制
  • 东营油城筑家:郑春红与加西亚质感砖家装之选 - 品牌企业推荐师(官方)
  • 2026亲测!安亭正规美容院大揭秘,效果杠杠滴 - 速递信息
  • FPGA/CPLD调试实战:用嵌入式逻辑分析仪让高速数字信号“慢下来”
  • STM32F407的CAN中断到底怎么用?HAL库实战配置与常见回调函数避坑指南
  • Kubernetes智能运维助手:基于LLM的kube-copilot实战指南
  • Logisim-evolution终极指南:从数字电路新手到硬件设计高手
  • 2026年牛津布厂家推荐:东莞仁泰纺织/PVC/涤纶/尼龙/PU牛津布全品类供应 - 品牌企业推荐师(官方)
  • 在Azure DevOps Server中实现用户端原地址透传(X-Forward-For)
  • 手把手教你用Arduino UNO驱动LD3320语音模块(附完整代码与SPI避坑指南)