机器学习/算法工程师面试题目与答案-数学基础部分

news2024/10/7 18:32:03

机器学习/算法工程师面试题目--数学基础部分

  • 一、数学基础
    • 1、微积分
      • SGD,Momentum,Adagard,Adam原理
      • L1不可导的时候该怎么办
      • sigmoid函数特性
    • 2、统计学,概率论
      • 求 Max(a, b) 期望
      • 拿更长的玫瑰花的最好策略
      • 最大化工作天数的员工数
      • 切比雪夫不等式
      • 随机截成三段组成三角形的概率
      • 最大似然估计和最大后验概率的区别
      • 什么是共轭先验分布
      • 概率和似然的区别
      • 频率学派和贝叶斯学派的区别
      • 从均匀分布变换到标准正态分布
      • Lasso的损失函数
      • Sfit特征提取和匹配的具体步骤
    • 3、线性代数
      • 求mk矩阵A和nk矩阵的欧几里得距离?
      • PCA中第一主成分是第一的原因?
      • 欧拉公式
      • 矩阵正定性的判断,Hessian矩阵正定性在梯度下降中的应用
      • 概率题:抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数
      • 讲一下PCA
      • 拟牛顿法的原理
      • 编辑距离

请添加图片描述

一、数学基础

1、微积分

SGD,Momentum,Adagard,Adam原理

  • SGD
    -原理: SGD 是最简单的优化方法之一,它通过计算损失函数相对于参数的梯度来更新模型的参数。每次更新时,SGD 选择一个随机的样本或一小批样本来计算梯度,而不是整个数据集的梯度,这样可以显著减少计算成本。
    -更新规则: θ = θ − η ∇ θ J ( θ ; x ( i ) , y ( i ) ) \theta = \theta - \eta \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) θ=θηθJ(θ;x(i),y(i)), 其中, η \eta η 是学习率

  • Momentum
    -Momentum 方法借鉴了物理中的动量概念,帮助SGD在相关方向上加速SGD并抑制震荡,通过引入“惯性”来更快地收敛。
    -更新规则:引入变量 𝑣 代表动量,更新规则为 v ← γ v + η ∇ θ J ( θ ) v \leftarrow \gamma v + \eta \nabla_{\theta} J(\theta) vγv+ηθJ(θ), 然后 θ ← θ − v \theta \leftarrow \theta - v θθv, 其中, η \eta η 是学习率, γ \gamma γ 是动量系数,通常设置为接近 1 的值(例如 0.9)以保持之前梯度的贡献。

  • Adagard
    -原理: Adagrad 自适应地调整每个参数的学习率,对于出现频率较低的特征给予更大的学习率,适合处理稀疏数据。
    -更新规则: θ = θ − η G t + ϵ ⊙ ∇ θ J ( θ ) \theta = \theta - \frac{\eta}{\sqrt{G_t + \epsilon}} \odot \nabla_{\theta} J(\theta) θ=θGt+ϵ ηθJ(θ), 其中, η \eta η 是初始学习率, ϵ \epsilon ϵ 是一个很小的数(例如 1 0 − 8 10^{-8} 108)以避免除以零, G t G_t Gt 是一个对角矩阵,其对角线元素等于参数的梯度平方的累积,即 G t = G t − 1 + ∇ θ J ( θ ; x ( i ) , y ( i ) ) ⊗ ∇ θ J ( θ ; x ( i ) , y ( i ) ) G_t = G_{t-1} + \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) \otimes \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) Gt=Gt1+θJ(θ;x(i),y(i))θJ(θ;x(i),y(i))

  • Adam
    -原理: Adam(Adaptive Moment Estimation)结合了Momentum和RMSprop(一种自适应学习率方法)的思想,不仅考虑了梯度的一阶矩估计(即均值,Momentum)也考虑了二阶矩估计(即未根号的方差,RMSprop)。
    -更新规则: Adam 更新规则复杂一些,包括偏差校正和自适应学习率。主要步骤为计算梯度的一阶矩和二阶矩的指数移动平均,然后对这些矩估计进行偏差校正,最后用校正后的值更新参数。即:
    First Moment Estimation: m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ θ J ( θ ; x ( i ) , y ( i ) ) m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}) mt=β1mt1+(1β1)θJ(θ;x(i),y(i))
    Second Moment Estimation: v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∇ θ J ( θ ; x ( i ) , y ( i ) ) ) 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla_{\theta} J(\theta; x^{(i)}, y^{(i)}))^2 vt=β2vt1+(1β2)(θJ(θ;x(i),y(i)))2
    Bias Correction: m ^ t = m t 1 − β 1 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1β1tmt, v ^ t = v t 1 − β 2 t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1β2tvt (由于 m t , v t m_t,v_t mt,vt是从初始化为0的向量开始的,它们会偏向于0,特别是在初始阶段。因此,需要进行偏差修正,以得到更准确的估计。)
    参数更新: θ = θ − η v ^ t + ϵ m ^ t \theta = \theta - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t θ=θv^t +ϵηm^t
    其中, η \eta η 是学习率, β 1 \beta_1 β1 β 2 \beta_2 β2 是衰减率通常分别设为 0.9 和 0.999, ϵ \epsilon ϵ 是一个很小的数(例如 1 0 − 8 10^{-8} 108),以避免除以零的情况。

L1不可导的时候该怎么办

L1 正则化由于在 θ = 0 \theta=0 θ=0 处不可导,常常在优化过程中带来问题。解决这个问题的常用方法是使用次梯度(subgradient)方法:

  • 次梯度: 在不可导点,L1正则化的次梯度可以定义为符号函数,即 sgn( θ \theta θ), 当 θ ≠ 0 \theta \neq 0 θ=0 时,有 sgn ⁡ ( θ ) = θ ∣ θ ∣ \operatorname{sgn}(\theta) = \frac{\theta}{|\theta|} sgn(θ)=θθ, 当 θ = 0 \theta = 0 θ=0 时,次梯度的取值范围为 [ − 1 , 1 ] [-1, 1] [1,1]

sigmoid函数特性

Sigmoid 函数定义为: σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
该函数具有以下特性:

  • 输出范围:Sigmoid 函数的输出始终在 ( 0 , 1 ) (0, 1) (0,1) 之间,适用于将任意实数映射到概率区间,常用于二分类问题。

  • S 形曲线:Sigmoid 函数是一个 S 形的曲线,能够从 0 平滑过渡到 1

  • 非线性:作为一个非线性函数,Sigmoid 可用于神经网络中的激活函数,帮助网络学习复杂的模式。

  • 导数:Sigmoid 函数的导数可以用其自身表示: σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ(x)=σ(x)(1σ(x)),这一性质使得在梯度计算中非常方便。

  • 饱和性:当输入 x x x 非常大或非常小时,Sigmoid 函数的导数接近于 0,可能导致梯度消失问题,这会使得网络训练中的权重更新非常缓慢。

  • 虽然 Sigmoid 函数在早期的神经网络模型中被广泛使用,但由于易于饱和和梯度消失的问题,现代深度学习通常更倾向于使用 ReLU 及其变种作为激活函数。

2、统计学,概率论

求 Max(a, b) 期望

a,b~U[0,1],互相独立,求Max(a,b)期望
a , b a, b a,b 独立且均匀分布于 [ 0 , 1 ] [0, 1] [0,1]。设 Z = max ⁡ ( a , b ) Z = \max(a, b) Z=max(a,b)。概率 P ( Z ≤ z ) P(Z \leq z) P(Zz) 表示 a ≤ z a \leq z az b ≤ z b \leq z bz 的概率,因为 a a a b b b 独立,所以: P ( Z ≤ z ) = P ( a ≤ z ) P ( b ≤ z ) = z 2 P(Z \leq z) = P(a \leq z)P(b \leq z) = z^2 P(Zz)=P(az)P(bz)=z2
概率密度函数 f Z ( z ) f_Z(z) fZ(z) P ( Z ≤ z ) P(Z \leq z) P(Zz) 的导数: f Z ( z ) = 2 z f_Z(z) = 2z fZ(z)=2z
期望 E ( Z ) E(Z) E(Z) 为: E ( Z ) = ∫ 0 1 z ⋅ 2 z   d z = 2 ∫ 0 1 z 2   d z = 2 ⋅ 1 3 = 2 3 E(Z) = \int_0^1 z \cdot 2z \, dz = 2 \int_0^1 z^2 \, dz = 2 \cdot \frac{1}{3} = \frac{2}{3} E(Z)=01z2zdz=201z2dz=231=32

拿更长的玫瑰花的最好策略

一个活动,n个女生手里拿着长短不一的玫瑰花,无序的排成一排,一个男生从头走到尾,试图拿更长的玫瑰花,一旦拿了一朵就不能再拿其他的,错过了就不能回头,问最好的策略?
最优策略通常是“分段选择法”。具体地,可以设定一个阈值,例如只在前 k k k 朵中观察而不选择,然后从第 k + 1 k+1 k+1 朵开始,选择第一朵比之前所有 k k k 朵都要长的玫瑰花。这里 k k k 的最优选择通常依赖于总数 n n n 的一个函数,如 k ≈ n / e k \approx n/e kn/e

最大化工作天数的员工数

问题:某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天。但在其余时候,所有员工都没有假期,必须正常上班。这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大?
这个问题可以转化为求解最大化非休息天数的期望值。每个员工生日独立,每天有员工过生日的概率是 1 − ( 364 / 365 ) n 1 - (364/365)^n 1(364/365)n。总工作天数的期望值是 365 × k × ( 364 / 365 ) n 365\times k \times (364/365)^n 365×k×(364/365)n。通过求导找到此函数的最大值即可,求导设为0,得求解得到答案为365。

切比雪夫不等式

切比雪夫不等式提供了任意随机变量 X X X 的概率上界,其数学形式是:
P ( ∣ X − μ ∣ ≥ k σ ) ≤ 1 k 2 P(|X - \mu| \geq k\sigma) \leq \frac{1}{k^2} P(Xμ)k21
其中 μ \mu μ X X X 的均值, σ \sigma σ 是标准差, k k k 是任意正数。

随机截成三段组成三角形的概率

一根绳子,随机截成3段,可以组成一个三角形的概率有多大
这个经典问题的答案是 1 4 \frac{1}{4} 41。简单解释是,只有当三段中的每一段都小于另外两段之和时,才能形成三角形。在均匀随机切割的情况下,这一条件的概率是 1 4 \frac{1}{4} 41

最大似然估计和最大后验概率的区别

最大似然估计和最大后验概率的区别?
最大似然估计(MLE):估计参数以最大化观测数据的似然函数。
最大后验概率(MAP):除了似然函数,还考虑了参数的先验分布,估计参数以最大化后验概率

什么是共轭先验分布

在贝叶斯分析中,如果后验分布和先验分布属于同一类分布族,则称这两个分布为共轭分布。共轭先验使得数学处理和分析变得更加简便。

概率和似然的区别

概率:描述了在给定参数的情况下观测到某数据的可能性。
似然:在给定观测数据的情况下,描述不同参数可能性的函数。

频率学派和贝叶斯学派的区别

频率学派:将概率理解为长期频率,假设参数是固定的未知量,重点在于通过数据推断。
贝叶斯学派:将概率理解为对不确定性的度量,参数是随机变量,使用先验分布和数据来更新对参数的信念。

从均匀分布变换到标准正态分布

0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器
假设变量 U U U 服从均匀分布 U ∼ Uniform ( 0 , 1 ) U \sim \text{Uniform}(0,1) UUniform(0,1)。要将 U U U 变换为标准正态分布 Z ∼ N ( 0 , 1 ) Z \sim N(0,1) ZN(0,1),我们可以使用逆变换法。具体步骤如下:

  1. 定义变量:设 U U U 是在区间 ( 0 , 1 ) (0,1) (0,1) 上均匀分布的随机变量。
  2. 用逆变换:计算 Z = Φ − 1 ( U ) Z = \Phi^{-1}(U) Z=Φ1(U),其中 Φ − 1 \Phi^{-1} Φ1 是标准正态分布的逆累积分布函数。

这里的 Φ − 1 \Phi^{-1} Φ1 通常无法用封闭形式表达,但可以通过数值方法如查表或特定的数学软件函数(如 MATLAB 的 norminv 或 Python 的 scipy.stats.norm.ppf)来实现。

标准正态分布的累积分布函数 Φ ( z ) \Phi(z) Φ(z) 定义为:
Φ ( z ) = 1 2 π ∫ − ∞ z e − t 2 2   d t \Phi(z) = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^z e^{-\frac{t^2}{2}} \, dt Φ(z)=2π 1ze2t2dt,因此,逆变换 Φ − 1 ( u ) \Phi^{-1}(u) Φ1(u) 是求解 u = Φ ( z ) u = \Phi(z) u=Φ(z) z z z 的解。

Lasso的损失函数

Lasso回归的损失函数是线性回归损失与 L ( β ) L(\beta) L(β) 正则化项的组合:
L ( β ) = ∥ Y − X β ∥ 2 + λ ∥ β ∥ 1 L(\beta) = \lVert Y - X\beta \rVert^2 + \lambda \lVert \beta \rVert_1 L(β)=Y2+λβ1
其中:
- Y Y Y 是响应变量向量,
- X X X 是设计矩阵,
- β \beta β 是系数向量,
- λ \lambda λ 是正则化参数,用于控制系数的稀疏性。

Sfit特征提取和匹配的具体步骤

  1. 尺度空间极值检测
    构建尺度空间:这是通过对图像使用高斯模糊并逐步增加模糊程度来完成的,每个新图像都是在前一个图像的基础上进一步模糊得到的。
    查找尺度空间极值:在尺度空间中,每个像素都与它的邻居(同尺度的8个邻居和相邻尺度的18个邻居,共26个邻居)比较,以找到局部最大值和最小值,这些极值点是潜在的关键点。
  2. 精确定位关键点
    关键点定位:对尺度空间的极值点进行精确定位。这一步包括通过拟合三维二次函数来确定关键点的位置、尺度和比例。
    消除边缘响应:因为边缘的响应值比角点的大,所以需要消除稳定性差的边缘响应点。
  3. 关键点方向赋值
    方向赋值:每个关键点根据其局部图像性质赋予一个或多个方向,这使得 SIFT 描述符不受图像旋转的影响。
    计算梯度和方向:在关键点的邻域内计算图像梯度和方向,基于这些梯度分布,每个关键点被赋予主方向。
  4. 生成关键点描述符
    关键点描述:在每个关键点周围的区域内,根据关键点的尺度,选取相应的区域,然后在这个区域内创建描述符。描述符是通过计算图像梯度方向直方图来生成的,通常形成一个包含多个方向的直方图。
  5. 关键点匹配
    特征匹配:两幅图像中的 SIFT 特征通过比较它们的描述符来进行匹配。最常用的方法是寻找最近邻描述符,通常使用欧氏距离来度量。
    比例测试:为了提高匹配的可靠性,可以采用 Lowe 的比例测试,即保留那些比第二近邻距离小很多的匹配点(例如,最近邻距离是第二近邻距离的50%)。
    这些步骤概述了 SIFT 算法的核心过程,从特征提取到特征描述再到特征匹配。在计算机视觉应用中,这些步骤广泛用于图像识别、机器人导航、3D 建模等多种场景。

3、线性代数

求mk矩阵A和nk矩阵的欧几里得距离?

若要求两个矩阵 𝐴 和 𝐵 的欧几里得距离,首先需要注意的是,矩阵 𝐴 和 𝐵 必须具有相同的维度。假设矩阵 𝐴 是m×k 维度,矩阵 𝐵必须也是 m×k 维度。如果 𝐵是 n×k 维度,且 𝑛 ≠ 𝑚,那么直接求这两个矩阵的欧几里得距离是不合适的,因为它们的形状不一致。但如果确实有 m=n,则两个矩阵 𝐴 和 𝐵 的欧几里得距离可以通过以下方式计算:
dist ( A , B ) = ∑ i = 1 m ∑ j = 1 k ( A i j − B i j ) 2 \text{dist}(A, B) = \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{k} (A_{ij} - B_{ij})^2} dist(A,B)=i=1mj=1k(AijBij)2
当 𝑛 ≠ 𝑚,替代方法有:

  • 填充
    如果可能,重新定义问题或调整数据,使两个矩阵具有相同的维度。例如,可以通过添加额外的零行或列来对较小的矩阵进行“填充”,使其尺寸与较大的矩阵匹配。
  • 使用不同的相似性/距离度量
    采用适用于不同维度数据的度量方式,例如:
    最大均值差异(Maximum Mean Discrepancy, MMD):这是一种衡量两个概率分布差异的方法,可以通过在两个矩阵的行上计算应用,尤其是在机器学习中用于比较样本分布。
    曼哈顿距离 或 余弦相似性:这些度量可以在某种程度上调整应用于不同维度的数据,特别是在处理文本或频率数据时。
  • 特征提取或降维
    对两个矩阵应用特征提取或降维技术(如主成分分析(PCA),自动编码器等),以生成具有相同维度的新表示,然后再计算这些新表示之间的欧几里得距离。
  • 核方法
    使用核技术将原始空间映射到一个更高维的特征空间,在这个新空间中可能更容易比较不同维度的数据。

PCA中第一主成分是第一的原因?

在PCA中,每个主成分都是正交的(互相垂直),并且每个新的主成分都捕获了剩余数据中最大的方差。因此,第一主成分是最重要的,因为它单独包含了最大的信息量。
PCA 目标: max ⁡ ∥ v ∥ = 1 { v T Σ v } \quad \max_{\|v\| = 1} \{ v^T \Sigma v \} maxv=1{vTΣv}
第一主成分: PC1 = X v 1 \quad \text{PC1} = X v_1 PC1=Xv1

欧拉公式

e i x = cos ⁡ ( x ) + i sin ⁡ ( x ) e^{ix} = \cos(x) + i\sin(x) eix=cos(x)+isin(x)
其中 e 是自然对数的底数(大约等于 2.71828), i i i 是虚数单位(满足 i 2 = − 1 i^2=-1 i2=1).
欧拉公式提供了一个强大的连接,将指数函数(通常在实数域中定义)扩展到复数域。这个公式可以用于将复指数函数表示为正弦和余弦函数的和,这在分析振动或波动现象时非常有用。
特殊情况:欧拉恒等式
x = π x=π x=π 时,欧拉公式变为著名的欧拉恒等式:
e i π + 1 = 0 e^{i\pi} + 1 = 0 e+1=0
这个恒等式被称为“数学中最漂亮的公式”,因为它简洁地联系了五个基本数学常数.

矩阵正定性的判断,Hessian矩阵正定性在梯度下降中的应用

  • 矩阵正定性的判断
    一个实对称矩阵 ( A ) 被称为正定的,如果对所有非零向量 ( x ),都有 ( x^T A x > 0 )。判断一个矩阵是否正定可以通过以下方法:
    -特征值:一个实对称矩阵是正定的当且仅当它的所有特征值都是正的。
    -主子式:矩阵的所有主子式(从左上角开始的子矩阵的行列式)必须为正。
    -Cholesky 分解:如果一个矩阵可以进行 Cholesky 分解(即 ( A = LL^T ) 其中 ( L ) 是下三角矩阵),那么这个矩阵是正定的。
  • Hessian 矩阵正定性在梯度下降中的应用
    在优化问题中,Hessian 矩阵是目标函数的二阶导数矩阵。它描述了目标函数的局部曲率,对算法的收敛速度和稳定性有重要影响。
    -正定性的意义
    正定 Hessian 矩阵:如果在某点的 Hessian 矩阵是正定的,那么该点是局部最小点。在这种情况下,梯度下降或牛顿方法等优化算法可以有效地收敛到最小点。
    负定或非正定:如果 Hessian 矩阵在某点非正定(包括负定或有零特征值),那么该点可能是局部最大点或鞍点,梯度下降法在这些点可能会遇到问题,如收敛缓慢或根本不收敛。
    -牛顿方法中的应用
    在牛顿方法中,更新规则为: x k + 1 = x k − H − 1 ∇ f ( x k ) x_{k+1} = x_k - H^{-1} \nabla f(x_k) xk+1=xkH1f(xk)
    其中, H H H 是在 x k x_k xk 处计算的 Hessian 矩阵, ∇ f ( x k ) \nabla f(x_k) f(xk) 是梯度。如果 H H H 是正定的,那么 H − 1 H^{-1} H1 也是正定的,这保证了搜索方向是下降方向,有助于快速收敛。
    -实际应用中的挑战
    在实际应用中,Hessian 矩阵可能非常大且计算成本高,同时其正定性也不总是保证的。因此,实际算法中常用的是梯度下降法的变体(如Adam、RMSprop等),或者在牛顿法中使用对Hessian矩阵的近似(如拟牛顿法)来提高效率和稳定性。

总结而言,Hessian 矩阵的正定性在优化问题中非常关键,特别是在使用基于二阶导数的方法时,如牛顿法。理解并计算 Hessian 矩阵的正定性可以显著影响算法选择和优化过程的效率。

概率题:抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数

设有蓝球和红球,蓝球数量为 ( b ),红球数量为 ( r )。游戏规则如下:每次随机抽取一个球,如果抽到蓝球,则游戏结束;如果抽到红球,则将红球放回后继续抽取。我们的目标是计算游戏结束的平均抽取次数。
设 ( E(b, r) ) 表示当有 ( b ) 个蓝球和 ( r ) 个红球时,游戏结束的平均抽取次数。可以建立以下递归关系:
E ( b , r ) = 1 × b b + r + ( 1 + E ( b , r ) ) × r b + r E(b, r) = 1 \times \frac{b}{b+r} + (1 + E(b, r)) \times \frac{r}{b+r} E(b,r)=1×b+rb+(1+E(b,r))×b+rr
这个方程表明,如果第一次抽到蓝球(概率为 b b + r \frac{b}{b+r} b+rb),游戏立即结束;如果抽到红球(概率为 r b + r \frac{r}{b+r} b+rr)则继续游戏,此时期望抽取次数增加 E(b, r)。
化简上述方程得到:
E ( b , r ) = 1 + r b + r E ( b , r ) E(b, r) = 1 + \frac{r}{b+r} E(b, r) E(b,r)=1+b+rrE(b,r)
E ( b , r ) ( 1 − r b + r ) = 1 E(b, r) \left(1 - \frac{r}{b+r}\right) = 1 E(b,r)(1b+rr)=1
E ( b , r ) b b + r = 1 E(b, r) \frac{b}{b+r} = 1 E(b,r)b+rb=1
E ( b , r ) = b + r b E(b, r) = \frac{b+r}{b} E(b,r)=bb+r
因此,当有 ( b ) 个蓝球和 ( r ) 个红球时,游戏结束的平均抽取次数 E(b, r) 为 b + r b \frac{b+r}{b} bb+r。这表明平均抽取次数与蓝球的数量成反比,与总球数成正比。

讲一下PCA

PCA是一种常用的数据降维技术,它通过线性变换将原始数据转化为一组各维度线性无关的表示,称为主成分。PCA 主要用于提取数据中的重要特征,通过这些特征可以捕捉大部分数据集的方差。
工作原理:
标准化数据:使得每个特征均值为0,方差为1。
构建协方差矩阵:反映特征间的相关性。
特征分解:计算协方差矩阵的特征值和特征向量。
选择主成分:基于特征值大小,选取最重要的特征向量。
数据投影:将原数据映射到选定的特征向量上,实现降维。
优缺点:
优点:有效去除数据冗余和噪声,提升解释性。
缺点:仅适用于线性关系,对异常值敏感,需要数据标准化。

拟牛顿法的原理

拟牛顿法是一种用于寻找多变量函数的局部最小值的优化算法,属于无约束优化问题的求解方法。这类方法是牛顿法的改进版本,旨在通过近似牛顿法中的Hessian矩阵(二阶导数矩阵)或其逆矩阵来减少计算量和提高算法的稳定性。
核心原理
拟牛顿法使用一个矩阵 B k B_k Bk 来近似Hessian矩阵的逆。通过更新 B k B_k Bk,算法在迭代中逐步逼近函数的最小值。更新公式通常基于以下条件:
B k + 1 ( x k + 1 − x k ) = ∇ f ( x k + 1 ) − ∇ f ( x k ) B_{k+1} (x_{k+1} - x_k) = \nabla f(x_{k+1}) - \nabla f(x_k) Bk+1(xk+1xk)=f(xk+1)f(xk)
这称为拟牛顿条件,确保 B k B_k Bk 的更新能保持对梯度变化的有效逼近。

常用算法
DFP(Davidon-Fletcher-Powell)算法
BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法
这两种算法通过不同的方式更新矩阵 B k B_k Bk,以保持或提高优化的效率和稳定性。

优点
不需要计算Hessian矩阵,减少了计算量。
特别适合于大规模优化问题。
拟牛顿法通过近似二阶导数信息,提供了一种在不牺牲太多精确度的情况下加速收敛的方法。它在机器学习和深度学习等领域的参数优化中非常有用。

编辑距离

编辑距离(Edit Distance),又称莱文斯坦距离(Levenshtein Distance),是一种衡量两个字符串之间差异的度量。它定义为将一个字符串转换成另一个字符串所需的最少单字符编辑操作的数量。常用的编辑操作包括插入(insertion)、删除(deletion)和替换(substitution)。
计算两个字符串之间的编辑距离的常用算法是动态规划。设有两个字符串 A 和 B ,其长度分别为 m 和 n 。创建一个大小为 ( m + 1 ) × ( n + 1 ) (m+1) \times (n+1) (m+1)×(n+1) 的矩阵D,其中 D [ i ] [ j ] D[i][j] D[i][j] 表示字符串 A 的前 i 个字符与字符串 B 的前 j 个字符之间的编辑距离。
初始化
D [ i ] [ 0 ] = i D[i][0] = i D[i][0]=i ( i 从 0 到 m )
D [ 0 ] [ j ] = j D[0][j] = j D[0][j]=j( j 从 0 到 n)

填充矩阵
对于每个 i(从 1 到 m )和每个 j(从 1 到 n ):
D [ i ] [ j ] = min ⁡ ( D [ i − 1 ] [ j ] + 1 ,  // 删除操作 D [ i ] [ j − 1 ] + 1 ,  // 插入操作 D [ i − 1 ] [ j − 1 ] + cost // 替换操作 ) D[i][j] = \min \left( \begin{array}{l} D[i-1][j] + 1, \text{ // 删除操作} \\ D[i][j-1] + 1, \text{ // 插入操作} \\ D[i-1][j-1] + \text{cost} \text{ // 替换操作} \end{array} \right) D[i][j]=min D[i1][j]+1, // 删除操作D[i][j1]+1, // 插入操作D[i1][j1]+cost // 替换操作
其中,如果 A [ i ] = B [ j ] A[i] = B[j] A[i]=B[j] 则 cost = 0,否则 cost = 1。

结果
最终的编辑距离是矩阵 D 中 D [ m ] [ n ] D[m][n] D[m][n] 的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1630177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MSP430F249的电子钟仿真(源码+仿真)

目录 1、前言 2、仿真 3、程序 资料下载地址&#xff1a;基于MSP430F249的电子钟仿真(源码仿真&#xff09; 1、前言 基于MSP430F249的电子钟仿真&#xff0c;数码管显示时分秒&#xff0c;并可以通过按键调节时间。 2、仿真 3、程序 #include <MSP430x24x.h> #def…

Jenkins集成Terraform实现阿里云CDN自动刷新

在互联网业务中&#xff0c;CDN的应用已经成了普遍&#xff0c;SRE的日常需求中&#xff0c;CDN的刷新在前端需求逐渐中占了很大比例&#xff0c;并且比较琐碎。做为合格的SRE&#xff0c;把一切自动化是终极使命&#xff0c;而今天就分享通过JenkinsTerraform实现阿里云的CDN自…

java-动态代理

为什么需要代理&#xff1f; 如何创建代理 注意&#xff1a;实现类和代理需要实现同一个接口 接口 public interface Star {String sing(String song);void dance(); }实现类 public class BigStar implements Star {private String name;public BigStar(String name) {this.…

2024Mac系统热门游戏排行榜 Mac支持的网络游戏有哪些?mac能玩哪些大型网游 苹果电脑Mac游戏资源推荐 Mac玩Windows游戏

“游戏是这个世界上唯一能和女性争夺男朋友的东西&#xff08;/滑稽&#xff0c;有不少女生也喜欢玩游戏&#xff09;。” 虽然只是一句玩笑话&#xff0c;不过也可以看出游戏对大多数男生来说是必不可少的一项娱乐活动了。而网络游戏是游戏中的一大分支&#xff0c;能让玩家们…

uniapp问题归类

最近使用uniapp中&#xff0c;遇到了一些问题&#xff0c;这边mark下。 1. 启动页变形 设置启动页的时候发现在部分android手机上启动页被拉伸了&#xff0c;最后看了下官方建议使用9.png图 生成9.png地址&#xff0c;推荐图片大小为1080x2340 uniapp推荐官方地址传送门 我…

Thread类的基本用法

1.线程创建 这里介绍线程创建常用的五种方法 1.继承Thread&#xff0c;重写run class MyThread extends Thread{public void run(){//这里写的代码就是线程要完成的任务while (true){System.out.println("hello thread");try {Thread.sleep(1000);//线程会休眠一秒…

Springboot+Vue项目-基于Java+MySQL的家政服务平台系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

FreeRTOS:3.信号量

FreeRTOS信号量 参考链接&#xff1a;FreeRTOS-信号量详解_freertos信号量-CSDN博客 目录 FreeRTOS信号量一、信号量是什么二、 FreeRTOS信号量1、二值信号量1、获取信号量2、释放信号量 2、计数信号量3、互斥信号量1、优先级反转2、优先级继承3、源码解析1、互斥量创建2、获取…

[蓝桥杯2024]-PWN:fd解析(命令符转义,标准输出重定向)

查看保护 查看ida 这里有一次栈溢出&#xff0c;并且题目给了我们system函数。 这里的知识点没有那么复杂 完整exp&#xff1a; from pwn import* pprocess(./pwn) pop_rdi0x400933 info0x601090 system0x400778payloadb"ca\\t flag 1>&2" print(len(paylo…

2024.04.28 Typecho管理视频文件,出现预览功能

需求原因原版的Typecho不支持在线视频预览,只有一个图片预览功能, 所以为了实现可以在线预览视频功能, 修改 typecho/admin/media.php 在大概19行的时候,追加如下内容 <?php if ($attachment->attachment->isImage): ?><p><img src"<?php $att…

装饰器模式【结构型模式C++】

1.概述 装饰器模式是一种结构型设计模式&#xff0c; 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08;Concre…

关于文档中心的英文快捷替换方案

背景&#xff1a;文档中心需要接入国际化&#xff0c;想节省时间做统一英文方案处理&#xff1b; 文档中心是基于vuepress框架编写的&#xff1b; 1、利用百度翻译 API 的接口去做底层翻译处理&#xff0c;https://api.fanyi.baidu.com/需要在该平台上注册账号&#xff0c;个人…

决策树学习笔记

一、衡量标准——熵 随机变量不确定性的度量 信息增益&#xff1a;表示特征X使得类Y的不确定性减少的程度。 二、数据集 14天的打球情况 特征&#xff1a;4种环境变化&#xff08;天气、温度等等&#xff09; 在上述数据种&#xff0c;14天中打球的天数为9天&#xff1b;不…

docker部署的nacos2.2x开启鉴权功能

注意在2.2.0版本之后如果不开启鉴权&#xff0c;那么默认不需要登录就可以访问 所以我们需要手动开启鉴权&#xff0c;nacos启动好以后来到容器内部修改 docker exec -it nacos /bin/shvim conf/application.properties在第34行下面添加 nacos.core.auth.enabledtrue nacos.cor…

编译GTSAM库时报错undefined reference to `_dl_vsym@GLIBC_PRIVATE‘

/home/alex/miniforge3/envs/ros_py39_env/bin/ld: /home/alex/miniforge3/envs/ros_py39_env/bin/../x86_64-conda-linux-gnu/sysroot/lib64/libdl.so.2: undefined reference to _dl_vsymGLIBC_PRIVATE SOLUTION&#xff1a;在CMakeLists.txt里加入&#xff1a; set (CMAKE…

信号分解 | RLMD(鲁棒性局部均值分解)-Matlab

分解效果 RLMD(鲁棒性局部均值分解) RLMD(鲁棒性局部均值分解)-Matlab 代码实现 % %% 清除所有变量 关闭窗口 clc clear all close all%% 导入数据 % data = xlsread(Data.xlsx);%% 输入信号%% RLMD分解 %参数进行设置 % options.display =

OPPO Reno10Pro/Reno11/K10手机强解BL刷root权限KSU内核抓包刷机救砖

OPPO Reno10Pro/Reno11/K10手机虽然发布时间并不久&#xff0c;但由于天玑处理器的体质&#xff0c;已经支持强制解锁BL了&#xff0c;该漏洞来自第三方工具适配&#xff0c;支持OPPO天机8100/8200刷机救砖解锁BL不需要等待官方深度测试直接实现。解锁BL后的OPPO Reno10Pro/Ren…

会声会影2024Win版64位电脑下载及系统配置要求

会声会影是一款专业的视频编辑软件&#xff0c;至今也推出了多版软件&#xff0c;深受用户的喜爱&#xff0c;这不&#xff0c;最近会声会影又要出2024版了&#xff0c;相信有很多用户都想知道新版本有哪些变化&#xff0c;新增了什么功能。下面我就为大家带来会声会影2024美颜…

web前端学习笔记4

4. 盒子模型 4.0 代码地址 https://gitee.com/qiangge95243611/java118/tree/master/web/day044.1 什么是盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,…

MySQL双层游标嵌套循环方法

文章目录 1、需求描述2、思路3、创建存储过程 1、需求描述 1、在项目中&#xff0c;需要将A表中主键id&#xff0c;逐个取出&#xff0c;作为条件&#xff0c;在B表中去逐一查询&#xff0c;将B表查询到的结果集&#xff08;A表B表关系&#xff1a;一对多&#xff09;&#xf…