机器学习算法和函数整理——助力快速查阅

损失函数

  1. 0-1 损失函数

    公式:L(Y,f(x))={1,Y≠f(x)0,Y=f(x)L(Y, f(x)) = \begin{cases} 1, & Y \neq f(x) \\ 0, & Y = f(x) \end{cases}L(Y,f(x))={1,0,Y=f(x)Y=f(x)

    这是最直观的分类损失函数,仅关注预测结果是否正确。如果预测类别与真实类别一致,损失为0;否则为1。虽然它直接对应分类准确率,但由于它是非连续、非凸且不可导的离散函数,无法直接使用梯度下降法进行优化,因此在实际训练深层模型时,通常使用对数损失或Hinge损失等作为其代理函数。

  2. 绝对损失函数

    公式:L(Y,f(x))=∣Y−f(x)∣L(Y, f(x)) = |Y - f(x)|L(Y,f(x))=∣Y−f(x)∣

    计算预测值与真实值之间差值的绝对值。与平方损失相比,绝对值损失不会对较大的误差进行平方放大,因此对数据中的异常值具有更好的鲁棒性。它的梯度是恒定的(除了零点不可导),这意味着无论误差大小,参数更新的步长相对稳定,适合处理含有噪声的数据集。

  3. 平方损失函数

    公式:L(Y,f(x))=(Y−f(x))2L(Y, f(x)) = (Y - f(x))^2L(Y,f(x))=(Y−f(x))2

    通过计算误差的平方来衡量差异。平方操作使得较大的误差会被显著放大,这促使模型在训练过程中优先修正那些偏离严重的样本。该函数是连续可导的凸函数,拥有全局最优解,数学性质非常优良。但在数据包含大量异常值时,模型容易受到干扰而产生过拟合。

  4. 指数损失函数

    公式:L(Y,f(x))=e−Yf(x)L(Y, f(x)) = e^{-Y f(x)}L(Y,f(x))=e−Yf(x)

    主要用于集成学习中的 Boosting 算法(如 AdaBoost)。当预测值与真实标签符号相反(即分类错误)时,指数项会迅速增大,导致损失急剧上升。这种特性使得算法在迭代过程中会赋予被错分的样本更高的权重,迫使后续的弱分类器更加关注这些"难分"样本,从而不断提升整体模型的准确率。

  5. Hinge 损失函数

    公式:L(Y,f(x))=max⁡(0,1−Yf(x))L(Y, f(x)) = \max(0, 1 - Y f(x))L(Y,f(x))=max(0,1−Yf(x))

    不仅要求样本被正确分类,还要求分类的置信度足够大。当样本被正确分类且距离决策边界足够远时,损失为0;否则产生线性惩罚。这种机制使得支持向量机能够最大化分类间隔,从而获得更好的泛化能力。只有靠近边界的样本(支持向量)才会对损失产生贡献。

  6. 对数损失函数

    公式:L(Y,P(Y∣X))=−log⁡P(Y∣X)L(Y, P(Y|X)) = -\log P(Y|X)L(Y,P(Y∣X))=−logP(Y∣X)

    基于极大似然估计推导而来,用于衡量预测概率分布与真实分布的差异。它要求模型输出的不仅仅是类别,而是属于该类别的概率。当预测概率接近真实标签时,损失趋近于0;反之,如果预测概率与真实标签背道而驰,损失将趋向于无穷大,从而对错误的预测施加严厉惩罚。

  7. 交叉熵损失

    公式:C=−1n∑[ylog⁡(y^)+(1−y)log⁡(1−y^)]C = -\frac{1}{n} \sum [y \log(\hat{y}) + (1-y) \log(1-\hat{y})]C=−n1∑[ylog(y^)+(1−y)log(1−y^)]

    这是信息论中衡量两个概率分布差异的指标,在二分类问题中应用极广。其中 yyy 是真实标签(0或1),y^\hat{y}y^ 是模型预测为正类的概率。交叉熵损失本质上与对数损失一致,它能够很好地配合 Sigmoid 或 Softmax 激活函数,在梯度下降时避免出现梯度消失的问题,加速模型收敛。

  8. L1 损失

    公式:loss(x,y)=1n∑i=1n∣yi−f(xi)∣\text{loss}(x, y) = \frac{1}{n} \sum_{i=1}^{n} |y_i - f(x_i)|loss(x,y)=n1∑i=1n∣yi−f(xi)∣

    即所有样本绝对误差的平均值,也就是平均绝对误差。它反映了预测值与真实值之间误差的实际情况。由于没有平方项,L1 损失对异常值不敏感,具有稀疏性解的特性(常配合正则化使用)。但在 y=f(x)y=f(x)y=f(x) 处导数不连续,优化时可能需要使用次梯度方法。

  9. L2 损失

    公式:loss(x,y)=1n∑i=1n(yi−f(xi))2\text{loss}(x, y) = \frac{1}{n} \sum_{i=1}^{n} (y_i - f(x_i))^2loss(x,y)=n1∑i=1n(yi−f(xi))2

    即所有样本平方误差的平均值,也就是均方误差的一种形式。L2 损失函数处处可导且光滑,便于使用梯度下降等优化算法求解。它假设误差服从高斯分布,但在面对非高斯分布或含有离群点的数据时,由于平方项放大了大误差的影响,模型的稳定性不如 L1 损失。

  10. 均方误差

    公式:J(w,b)=12m∑i=1m(ai−yi)2J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (a_i - y_i)^2J(w,b)=2m1∑i=1m(ai−yi)2

    这是线性回归中常用的目标函数形式。其中 aia_iai 为预测值,yiy_iyi 为真实值,mmm 为样本总数。公式前的系数 12\frac{1}{2}21 是为了在求导时,利用幂函数的求导法则抵消平方项产生的系数 2,从而简化梯度的表达式,使参数更新公式更加整洁,不影响优化的最终结果。

求解算法

  1. 梯度下降法

    公式:∇L(w,b)=(∂L∂w,∂L∂b)\nabla L(w, b) = (\frac{\partial L}{\partial w}, \frac{\partial L}{\partial b})∇L(w,b)=(∂w∂L,∂b∂L)

    这是最基础的迭代优化算法。形象地说,就像一个人被困在山上(损失函数的高点),为了最快下山(找到最小值),他每一步都沿着当前位置最陡峭的方向(负梯度方向)走。根据每次更新使用的样本量不同,可分为批量梯度下降、随机梯度下降和小批量梯度下降。

  2. 牛顿法

    公式(Hessian 矩阵):H(f)=∇2f(x)=[∂2f∂x12⋯∂2f∂x1∂xn⋮⋱⋮∂2f∂xn∂x1⋯∂2f∂xn2]H(f) = \nabla^2 f(x) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix}H(f)=∇2f(x)= ∂x12∂2f⋮∂xn∂x1∂2f⋯⋱⋯∂x1∂xn∂2f⋮∂xn2∂2f

    牛顿法不仅利用了梯度(一阶导数,切线斜率),还利用了 Hessian 矩阵(二阶导数,曲率信息)。它通过二阶泰勒展开来拟合目标函数,相当于用曲面去逼近函数。因此,牛顿法通常比梯度下降收敛速度更快(二次收敛),但计算 Hessian 矩阵及其逆矩阵的开销非常大。

  3. 阻尼牛顿法

    这是对经典牛顿法的改进。经典牛顿法在步长选择不当时可能导致函数值不降反升。阻尼牛顿法在牛顿方向确定后,引入了一维搜索来确定最佳步长,或者加入一个阻尼因子,确保每次迭代都能使目标函数值下降,从而提高了算法的全局收敛性和稳定性。

  4. 拟牛顿法

    为了解决牛顿法计算 Hessian 矩阵及其逆矩阵成本过高的问题,拟牛顿法(如 BFGS、L-BFGS)通过构造一个正定矩阵来近似 Hessian 矩阵的逆。它只需要利用一阶导数信息,就能达到接近牛顿法的收敛速度,同时大大降低了计算复杂度,是实际应用中非常高效的优化算法。

线性回归

  1. 普通线性回归

    公式(R-squared):Score=1−∑(yi−y^i)2∑(yi−yˉ)2Score = 1 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2}Score=1−∑(yi−yˉ)2∑(yi−y^i)2

    R2R^2R2 决定了系数,用于评估回归模型的拟合优度。分子是残差平方和(模型未能解释的变异),分母是总离差平方和(数据本身的总变异)。R2R^2R2 越接近 1,说明模型解释了数据中大部分的波动,拟合效果越好;越接近 0,说明模型拟合效果越差。

  2. Lasso 回归

    公式(正则项):α∥w∥1,α≥0\alpha \|w\|_1, \alpha \ge 0α∥w∥1,α≥0

    Lasso 在普通线性回归的损失函数中加入了权重向量的 L1 范数作为惩罚项。L1 正则化的特性是倾向于产生稀疏解,即它可以将许多不重要的特征对应的权重压缩为严格的 0。因此,Lasso 回归不仅可以防止过拟合,还能进行特征选择,自动筛选出对预测最有用的特征。

  3. 岭回归

    公式(正则项):α∥w∥22,α≥0\alpha \|w\|_2^2, \alpha \ge 0α∥w∥22,α≥0

    岭回归在损失函数中加入了权重向量的 L2 范数平方作为惩罚项。它通过限制权重的大小,防止模型参数过大导致的过拟合。与 Lasso 不同,岭回归会将权重压缩得很小但不会为 0,因此它保留了所有特征,适合处理特征之间存在多重共线性的问题,能提高模型的稳定性。

  4. 弹性网络回归

    公式(正则项):αρ∥w∥1+α(1−ρ)2∥w∥22,α≥0,1≥ρ≥0\alpha \rho \|w\|_1 + \frac{\alpha(1-\rho)}{2} \|w\|_2^2, \alpha \ge 0, 1 \ge \rho \ge 0αρ∥w∥1+2α(1−ρ)∥w∥22,α≥0,1≥ρ≥0

    弹性网络结合了 Lasso 和岭回归的优点。它同时包含 L1 和 L2 正则项,通过超参数 ρ\rhoρ 来调节两者的比例。当特征数量远大于样本数量,或者特征之间存在强相关性时,弹性网络通常比单独使用 Lasso 或岭回归表现更好,既能进行特征选择,又能保持模型的稳定性。

聚类分析

一种无监督学习方法,目标是将数据划分为若干个簇。其核心思想是使得同一簇内的样本相似度高,而不同簇之间的样本相似度低。常见的聚类算法包括 K-Means、层次聚类等,常用于市场细分、社交网络分析等。

  1. 欧氏距离

    公式:d=∑k=1n(x1k−x2k)2=(α⃗−β⃗)(α⃗−β⃗)Td = \sqrt{\sum_{k=1}^{n} (x_{1k} - x_{2k})^2} = \sqrt{(\vec{\alpha} - \vec{\beta})(\vec{\alpha} - \vec{\beta})^T}d=∑k=1n(x1k−x2k)2 =(α −β )(α −β )T

    最常见的距离度量,即空间中两点间的直线距离。它计算的是各维度数值差的平方和的平方根,符合人们对几何距离的直观认知。

  2. 标准化欧氏距离

    公式(标准化):X∗=X−μSX^* = \frac{X - \mu}{S}X∗=SX−μ d=∑k=1n(x1k−x2kSk)2d = \sqrt{\sum_{k=1}^{n} ({\frac{x_{1k} - x_{2k}}{S_k}})^2}d=∑k=1n(Skx1k−x2k)2

    针对普通欧氏距离受量纲影响的缺点,先将数据标准化(减去均值除以标准差)再计算距离。这种方法消除了不同维度量纲和方差的影响,使得各个特征在距离计算中具有平等的地位。

  3. 曼哈顿距离

    公式:d=∑k=1n∣x1k−x2k∣d = \sum_{k=1}^{n} |x_{1k} - x_{2k}|d=∑k=1n∣x1k−x2k∣

    也称为城市街区距离。它计算的是在标准坐标系上,两点在各个维度上绝对轴距的总和。想象你在棋盘式的城市街道中从一个路口走到另一个路口,只能沿街道直角转弯行走,所经过的最短路径长度就是曼哈顿距离。

  4. 切比雪夫距离

    公式:d=max⁡i(∣x1i−x2i∣)=lim⁡k→∞(∑i=1n∣x1i−x2i∣k)1kd = \max_{i} (|x_{1i} - x_{2i}|) = \lim_{k \to \infty} (\sum_{i=1}^{n} |x_{1i} - x_{2i}|^k)^{\frac{1}{k}}d=maxi(∣x1i−x2i∣)=limk→∞(∑i=1n∣x1i−x2i∣k)k1

    各坐标数值差的最大值。在国际象棋中,国王从一个格子走到另一个格子所需的最少步数就是切比雪夫距离,因为国王可以向周围8个方向移动。它关注的是维度间差异最大的那个分量。

  5. 闵可夫斯基距离

    公式:d=∑k=1n(x1k−x2k)ppd = \sqrt[p]{\sum_{k=1}^{n} (x_{1k} - x_{2k})^p}d=p∑k=1n(x1k−x2k)p

    这是一组距离的通用定义,不是指某一个特定的距离。通过调整参数 ppp 的值,它可以演变成不同的距离度量:当 p=1p=1p=1 时为曼哈顿距离;当 p=2p=2p=2 时为欧氏距离;当 p=3p=3p=3 时,则为切比雪夫距离。

  6. 余弦距离

    公式:cos⁡θ=A⃗⋅B⃗∥A⃗∥∥B⃗∥=∑k=1nx1kx2k∑k=1nx1k2∑k=1nx2k2\cos\theta = \frac{\vec{A} \cdot \vec{B}}{\|\vec{A}\| \|\vec{B}\|} = \frac{\sum_{k=1}^{n} x_{1k} x_{2k}}{\sqrt{\sum_{k=1}^{n} x_{1k}^2} \sqrt{\sum_{k=1}^{n} x_{2k}^2}}cosθ=∥A ∥∥B ∥A ⋅B =∑k=1nx1k2 ∑k=1nx2k2 ∑k=1nx1kx2k

    通过计算两个向量夹角的余弦值来衡量相似度。余弦值越接近 1,夹角越小,相似度越高。与欧氏距离关注数值大小的差异不同,余弦距离更关注向量在方向上的差异,常用于文本分类、信息检索中衡量文档的相似性。

  7. 马氏距离

    公式:D(x)=(x−μ)TS−1(x−μ)D(x) = \sqrt{(x-\mu)^T S^{-1} (x-\mu)}D(x)=(x−μ)TS−1(x−μ) D(xi⃗,xj⃗)=(xi⃗−xj⃗)TS−1(xi⃗−xj⃗)D(\vec{x_i}, \vec{x_j}) = \sqrt{(\vec{x_i} - \vec{x_j})^T S^{-1} (\vec{x_i} - \vec{x_j})}D(xi ,xj )=(xi −xj )TS−1(xi −xj )

    一种考虑了数据分布特性的距离度量。其中 SSS 是协方差矩阵。马氏距离排除了变量之间相关性的干扰,并且不受量纲(单位)的影响。它表示一个点与一个分布中心的距离,常用于异常点检测和分类任务。

  8. 海明距离

    公式:dH(x,y)=∑i=1n[xi≠yi]d_H(x, y) = \sum_{i=1}^{n} [x_i \neq y_i]dH(x,y)=∑i=1n[xi=yi]

    主要用于衡量两个等长字符串(通常是二进制串)之间的差异。它定义为将一个字符串变换成另一个字符串所需要替换的字符个数。例如,1011101 和 1001001 的海明距离是 2。在编码理论和信息论中应用广泛。

  9. 杰卡德距离

    公式(杰卡德相似系数):J(A,B)=∣A∩B∣∣A∪B∣J(A, B) = \frac{|A \cap B|}{|A \cup B|}J(A,B)=∣A∪B∣∣A∩B∣

    公式(杰卡德距离):J′(A,B)=1−J(A,B)=∣A∪B∣−∣A∩B∣∣A∪B∣J'(A, B) = 1 - J(A, B) = \frac{|A \cup B| - |A \cap B|}{|A \cup B|}J′(A,B)=1−J(A,B)=∣A∪B∣∣A∪B∣−∣A∩B∣

    基于杰卡德相似系数。相似系数是两个集合交集大小与并集大小的比值。杰卡德距离则用 1 减去相似系数,用来衡量两个集合的不相似度。它非常适合处理符号度量或布尔值度量的数据,如计算两个用户购买商品的集合差异。

  10. 相关距离

    公式(相关系数):ρXY=Cov(X,Y)D(X)D(Y)=E{[X−E(X)][Y−E(Y)]}D(X)D(Y)\rho_{XY} = \frac{Cov(X, Y)}{\sqrt{D(X)}\sqrt{D(Y)}} = \frac{E\{[X-E(X)][Y-E(Y)]\}}{\sqrt{D(X)}\sqrt{D(Y)}}ρXY=D(X) D(Y) Cov(X,Y)=D(X) D(Y) E{[X−E(X)][Y−E(Y)]}

    公式(相关距离):DXY=1−ρXYD_{XY} = 1 - \rho_{XY}DXY=1−ρXY

    基于皮尔逊相关系数。相关系数衡量的是两个变量之间的线性相关程度,取值在 [-1, 1] 之间。相关距离通过 1−ρ1 - \rho1−ρ 将相关性转化为距离度量。如果两个变量完全正相关,距离为 0;如果完全不相关或负相关,距离则较大。

  11. 信息熵

    公式:Entropy(X)=−∑i=1npilog⁡piEntropy(X) = -\sum_{i=1}^{n} p_i \log p_iEntropy(X)=−∑i=1npilogpi

    信息熵是衡量系统不确定性或混乱程度的指标。熵越大,系统的不确定性越高,包含的信息量越大;熵越小,系统越有序。在决策树算法中,通过计算信息增益(熵的减少量)来选择最优的特征进行分裂。

卷积神经网络卷积后尺寸计算

公式:Output=Input−Kernel+2×PaddingStride+1Output = \frac{Input - Kernel + 2 \times Padding}{Stride} + 1Output=StrideInput−Kernel+2×Padding+1

是计算卷积层输出特征图尺寸的通用公式。其中 Input 为输入图像的尺寸,Kernel 为卷积核的尺寸,Padding 为在输入边缘填充的像素层数,Stride 为卷积核滑动的步长。该公式确保了在网络设计时,能够精确控制每一层输出数据的维度。

相关推荐
jiushiapwojdap1 小时前
LU分解法求解线性方程组Matlab实现
数据结构·其他·算法·matlab
jinanwuhuaguo2 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
BU摆烂会噶2 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
笨笨饿2 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-04-26
人工智能·经验分享·深度学习·百度·产品运营
绛橘色的日落(。・∀・)ノ2 小时前
机器学习 单变量线性回归模型
人工智能·机器学习
Vane12 小时前
从零开发一个AI插件,经历了什么?
人工智能·后端
70asunflower2 小时前
2026年前沿人工智能语言模型评估:基于任务驱动的最佳模型选择路径
人工智能·语言模型·自然语言处理
geneculture2 小时前
《智能通信速分多次传输技术(VDMT)》专利文件的全文汉英双语对照版本
服务器·网络·人工智能·融智学的重要应用·哲学与科学统一性·融智时代(杂志)·人机间性