机器学习05-最小二乘法VS梯度求解

机器学习05-最小二乘法VS梯度求解

文章目录

  • 机器学习05-最小二乘法VS梯度求解
    • 0-核心知识点梳理
    • 1-最小二乘法和梯度求解算法什么关系
      • 最小二乘法
      • 梯度求解算法
      • 两者的关系
    • 2-最小二乘法可以求解非线性回归吗
    • 3-最小二乘法不使用梯度求解算法,给出一个简单的示例,说明计算过程
      • 最小二乘法公式
      • 示例
    • 4-python不使用梯度求解,直接计算线性方程的解
      • 普通最小二乘法
      • 计算步骤
      • 解方程组
      • 验证
      • 总结
      • 代码实现
      • 注意事项
    • 5-怎么去除最小二乘法中的噪声部分
      • 1. 数据预处理
      • 2. 模型选择
      • 3. 加权最小二乘法 (WLS)
      • 4. 使用鲁棒回归方法
      • 5. 增加数据量
      • 6. 特征工程
      • 示例:使用正则化减少噪声
    • 6-带约束的最小二乘法是什么概念,具体是解决什么问题,是解决噪声问题吗?
      • 带约束的最小二乘法的概念
      • 解决的问题
      • 案例解释
        • 案例:非负最小二乘法(NNLS)
        • 另一个案例:固定比例约束
    • 7-机器学习在线性模型的最小二乘法,没有出现梯度下降求解算法之前,使用什么方法求解方程

0-核心知识点梳理

  • 1)机器学习目前没有能力求解【非线性方程】,只能用【线性方程(神经网络)】+【非线性变换(激活函数)】近似求解去求解问题

  • 2)高中时学习过【线性方程(神经网络)求解】不过那时不叫这个名字,高中叫做【多元线性方程求解】但是高中时认为可能有【零解】+【唯一解】+【多种解】+【无限解】

  • 3)计算进行运算的时候(此时还不考虑【梯度求解】,只使用传统的数学求导的计算方式),认为只要照顾到大概率(最小二乘就是计算解好坏的一种方式)的数据就认为【有解】,直接求导一下就把结果算出来了,不禁赞叹【很棒!!!】

  • 4)但是【传统的数学求导+最小二乘法】的计算方式在【随着数据量增大】的过程中计算效率逐渐降低,有个大佬想出了一个更好的计算方法【梯度提升算法GBM】通过逐渐的修正权重去接近正式值,而不是一步到位的直接求导计算

  • 5)细细想一下,全部数据都参数计算一定会有【噪声】,怎么解决【噪声问题】


1-最小二乘法和梯度求解算法什么关系

最小二乘法(Least Squares Method)和梯度求解算法(Gradient Descent Algorithm)都是用于优化问题的方法,但它们在具体的应用场景和技术实现上有所不同。让我们分别简要介绍这两种方法,并探讨它们之间的关系。

最小二乘法

最小二乘法是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。在回归分析中,它常被用来估计线性模型的参数,即找到一条直线或超平面,使得所有观测点到这条直线或超平面上对应点的距离(残差)的平方和最小。这种方法简单、直观,并且在很多情况下可以得到解析解,这意味着可以通过直接计算获得最优解,而不需要迭代过程。

梯度求解算法

梯度下降是一种迭代优化算法,通常用于最小化(或最大化)一个给定的目标函数。它通过沿着目标函数梯度(对于最小化来说是负梯度)的方向更新参数,逐步逼近最优解。梯度下降广泛应用于机器学习和深度学习中,尤其是在处理复杂模型时,这些模型可能没有闭式解或者闭式解难以计算。

两者的关系

  1. 目标相同:两者都可以用来解决同样的问题,比如线性回归中的参数估计。最小二乘法试图直接找到使误差平方和最小的参数值,而梯度下降则是通过迭代过程逐渐接近这个最优解。

  2. 适用范围不同:最小二乘法适用于能够以封闭形式解决的问题,而对于复杂的非线性模型或者当特征数量非常大时,最小二乘法可能不再适用,这时梯度下降等迭代方法就显得更为合适。

  3. 计算复杂度:最小二乘法可以直接给出解,但在高维数据或大型数据集上计算成本较高;梯度下降虽然需要多次迭代才能收敛到最优解,但对于大规模数据集来说,每次迭代的成本较低,因此总体上可能更有效率。

  4. 灵活性:梯度下降可以更容易地扩展到各种不同的损失函数和约束条件,以及结合正则化项来防止过拟合等问题。

总之,最小二乘法和梯度下降都是重要的优化工具,选择使用哪一个取决于具体的问题特性、数据规模和个人偏好等因素。


2-最小二乘法可以求解非线性回归吗

最小二乘法(Least Squares Method)最初是为了解决线性回归问题而设计的,它通过最小化观测值与预测值之间差异的平方和来寻找最佳拟合直线或超平面。然而,最小二乘法也可以用于非线性回归问题,但这需要一定的条件和方法调整。

对于非线性回归,最小二乘法的目标仍然是最小化误差平方和,但模型不再是参数的线性函数。解决非线性最小二乘问题通常有两种主要途径:

  1. 非线性最小二乘法:当模型不是关于参数的线性函数时,可以直接使用非线性最小二乘法。这通常涉及到迭代优化算法,如梯度下降、高斯-牛顿法、Levenberg-Marquardt算法等,以找到使误差平方和最小化的参数值。这些方法从一个初始猜测开始,逐步调整参数直到满足收敛条件。

  2. 线性化处理:有时可以通过对变量进行变换将非线性关系转换为线性关系,然后应用标准的最小二乘法。例如,在指数增长模型 y = a e b x y = ae^{bx} y=aebx 中,通过对两边取自然对数可以得到 ln ⁡ ( y ) = ln ⁡ ( a ) + b x \ln(y) = \ln(a) + bx ln(y)=ln(a)+bx 的形式,从而将其转化为线性回归问题。需要注意的是,并不是所有的非线性模型都可以通过简单的变换线性化。

因此,虽然最小二乘法本身主要用于线性模型,但它可以通过上述两种方式应用于非线性回归问题。选择哪种方法取决于具体的应用场景以及数据的特点。在实践中,非线性最小二乘法更常用于处理复杂的非线性关系,因为它不需要对原始方程进行任何假设性的变换。


3-最小二乘法不使用梯度求解算法,给出一个简单的示例,说明计算过程

好的,我将给出一个简单的线性回归示例,使用最小二乘法直接计算而不需要梯度求解算法。这个例子将展示如何通过解析解找到最佳拟合直线的参数。

假设我们有一组数据点 ( x i , y i ) (x_i, y_i) (xi,yi),其中 i = 1 , 2 , . . . , n i = 1, 2, ..., n i=1,2,...,n 表示观测点的数量。我们的目标是找到一条直线 y = m x + b y = mx + b y=mx+b,使得这条直线尽可能好地拟合这些数据点。这里 m m m 是斜率, b b b 是截距。

最小二乘法公式

为了找到最佳拟合直线,我们需要最小化误差平方和(RSS, Residual Sum of Squares),即所有观测值与预测值之间差异的平方和。对于每一个数据点 ( x i , y i ) (x_i, y_i) (xi,yi),预测值为 y i ′ = m x i + b y_i' = mx_i + b yi=mxi+b。因此,误差平方和可以表示为:

R S S = ∑ i = 1 n ( y i − ( m x i + b ) ) 2 RSS = \sum_{i=1}^{n}(y_i - (mx_i + b))^2 RSS=i=1n(yi(mxi+b))2

为了最小化RSS,我们可以对 m m m b b b 求偏导数,并令它们等于0,从而得到两个方程。这两个方程可以通过代数方法解出 m m m b b b 的最优值。最终的公式如下:

m = n ∑ x y − ∑ x ∑ y n ∑ x 2 − ( ∑ x ) 2 m = \frac{n\sum xy - \sum x \sum y}{n\sum x^2 - (\sum x)^2} m=nx2(x)2nxyxy

b = ∑ y − m ∑ x n b = \frac{\sum y - m\sum x}{n} b=nymx

示例

假设有以下四个数据点: ( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 5 ) , ( 4 , 4 ) (1, 2), (2, 3), (3, 5), (4, 4) (1,2),(2,3),(3,5),(4,4)

  • n = 4 n = 4 n=4 (样本数量)
  • ∑ x = 1 + 2 + 3 + 4 = 10 \sum x = 1 + 2 + 3 + 4 = 10 x=1+2+3+4=10
  • ∑ y = 2 + 3 + 5 + 4 = 14 \sum y = 2 + 3 + 5 + 4 = 14 y=2+3+5+4=14
  • ∑ x y = ( 1 ∗ 2 ) + ( 2 ∗ 3 ) + ( 3 ∗ 5 ) + ( 4 ∗ 4 ) = 2 + 6 + 15 + 16 = 39 \sum xy = (1*2) + (2*3) + (3*5) + (4*4) = 2 + 6 + 15 + 16 = 39 xy=(12)+(23)+(35)+(44)=2+6+15+16=39
  • ∑ x 2 = 1 2 + 2 2 + 3 2 + 4 2 = 1 + 4 + 9 + 16 = 30 \sum x^2 = 1^2 + 2^2 + 3^2 + 4^2 = 1 + 4 + 9 + 16 = 30 x2=12+22+32+42=1+4+9+16=30

根据上述公式,我们可以计算斜率 m m m 和截距 b b b

m = 4 ∗ 39 − 10 ∗ 14 4 ∗ 30 − 1 0 2 = 156 − 140 120 − 100 = 16 20 = 0.8 m = \frac{4*39 - 10*14}{4*30 - 10^2} = \frac{156 - 140}{120 - 100} = \frac{16}{20} = 0.8 m=4301024391014=120100156140=2016=0.8

b = 14 − 0.8 ∗ 10 4 = 14 − 8 4 = 6 4 = 1.5 b = \frac{14 - 0.8*10}{4} = \frac{14 - 8}{4} = \frac{6}{4} = 1.5 b=4140.810=4148=46=1.5

因此,最佳拟合直线的方程为 y = 0.8 x + 1.5 y = 0.8x + 1.5 y=0.8x+1.5

这个过程没有用到梯度下降或任何迭代优化算法,而是通过直接计算得到了最小二乘解。这是最小二乘法的一个优点——当模型是线性的并且问题规模较小时,可以直接通过数学公式快速获得解。


4-python不使用梯度求解,直接计算线性方程的解


假设有四个点:(1,2),(3,5),(6,7),(8,9),想要找到一条直线最好地拟合这些点。这通常被称为线性回归问题,其中我们试图找到一条直线 $ y = mx + c $,使得这条直线尽可能接近所有的数据点。

虽然梯度下降是一种常用的优化方法来求解这类问题,但您提到不使用梯度求解,而是直接计算解。对于线性回归问题,确实存在直接求解的方法,这通常称为普通最小二乘法(Ordinary Least Squares, OLS)。

普通最小二乘法

在普通最小二乘法中,我们的目标是最小化预测值和实际值之间的平方误差之和。对于给定的数据点 ( x i , y i ) (x_i, y_i) (xi,yi),我们有:

S = ∑ i = 1 n ( y i − ( m x i + c ) ) 2 S = \sum_{i=1}^{n} (y_i - (mx_i + c))^2 S=i=1n(yi(mxi+c))2

我们的目标是找到 $ m $ 和 $ c $ 的值,使得 $ S $ 最小。

为了找到最小值,我们可以对 $ m $ 和 $ c $ 求偏导数,并设置它们为零。

首先,计算对 $ m $ 的偏导数:

∂ S ∂ m = − 2 ∑ i = 1 n x i ( y i − ( m x i + c ) ) = 0 \frac{\partial S}{\partial m} = -2 \sum_{i=1}^{n} x_i (y_i - (mx_i + c)) = 0 mS=2i=1nxi(yi(mxi+c))=0

然后,计算对 $ c $ 的偏导数:

∂ S ∂ c = − 2 ∑ i = 1 n ( y i − ( m x i + c ) ) = 0 \frac{\partial S}{\partial c} = -2 \sum_{i=1}^{n} (y_i - (mx_i + c)) = 0 cS=2i=1n(yi(mxi+c))=0

这两个方程可以重写为:

  1. ∑ i = 1 n x i y i = m ∑ i = 1 n x i 2 + c ∑ i = 1 n x i \sum_{i=1}^{n} x_i y_i = m \sum_{i=1}^{n} x_i^2 + c \sum_{i=1}^{n} x_i i=1nxiyi=mi=1nxi2+ci=1nxi

  2. ∑ i = 1 n y i = m ∑ i = 1 n x i + c n \sum_{i=1}^{n} y_i = m \sum_{i=1}^{n} x_i + c n i=1nyi=mi=1nxi+cn

这是一个线性方程组,可以表示为矩阵形式:

[ ∑ x i 2 ∑ x i ∑ x i n ] [ m c ] = [ ∑ x i y i ∑ y i ] \begin{bmatrix} \sum x_i^2 & \sum x_i \\ \sum x_i & n \end{bmatrix} \begin{bmatrix} m \\ c \end{bmatrix}= \begin{bmatrix} \sum x_i y_i \\ \sum y_i \end{bmatrix} [xi2xixin][mc]=[xiyiyi]

通过求解这个方程组,我们可以得到 $ m $ 和 $ c $ 的值。

计算步骤

首先,我们需要计算以下 summations:

  • ∑ x i \sum x_i xi

  • ∑ y i \sum y_i yi

  • ∑ x i 2 \sum x_i^2 xi2

  • ∑ x i y i \sum x_i y_i xiyi

给定数据点:

  • (1,2)

  • (3,5)

  • (6,7)

  • (8,9)

计算这些 summations:

∑ x i = 1 + 3 + 6 + 8 = 18 \sum x_i = 1 + 3 + 6 + 8 = 18 xi=1+3+6+8=18

∑ y i = 2 + 5 + 7 + 9 = 23 \sum y_i = 2 + 5 + 7 + 9 = 23 yi=2+5+7+9=23

∑ x i 2 = 1 2 + 3 2 + 6 2 + 8 2 = 1 + 9 + 36 + 64 = 110 \sum x_i^2 = 1^2 + 3^2 + 6^2 + 8^2 = 1 + 9 + 36 + 64 = 110 xi2=12+32+62+82=1+9+36+64=110

∑ x i y i = ( 1 ∗ 2 ) + ( 3 ∗ 5 ) + ( 6 ∗ 7 ) + ( 8 ∗ 9 ) = 2 + 15 + 42 + 72 = 131 \sum x_i y_i = (1*2) + (3*5) + (6*7) + (8*9) = 2 + 15 + 42 + 72 = 131 xiyi=(12)+(35)+(67)+(89)=2+15+42+72=131

现在,我们可以设置方程组:

{ 110 m + 18 c = 131 18 m + 4 c = 23 \begin{cases} 110 m + 18 c = 131 \\ 18 m + 4 c = 23 \end{cases} {110m+18c=13118m+4c=23

我们需要解这个方程组来找到 $ m $ 和 $ c $。

解方程组

我们可以使用多种方法解这个方程组,比如代入法、消元法或者使用矩阵 inverse。这里,我将使用矩阵 inverse 的方法。

首先,表示为矩阵形式:

A ⋅ [ m c ] = B A \cdot \begin{bmatrix} m \\ c \end{bmatrix} = B A[mc]=B

其中,

A = [ 110 18 18 4 ] , B = [ 131 23 ] A = \begin{bmatrix} 110 & 18 \\ 18 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 131 \\ 23 \end{bmatrix} A=[11018184],B=[13123]

然后,

[ m c ] = A − 1 ⋅ B \begin{bmatrix} m \\ c \end{bmatrix} = A^{-1} \cdot B [mc]=A1B

首先,计算矩阵 $ A $ 的逆矩阵 $ A^{-1} $。

矩阵 $ A $ 的逆矩阵公式为:

A − 1 = 1 det ⁡ ( A ) [ d − b − c a ] A^{-1} = \frac{1}{\det(A)} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} A1=det(A)1[dcba]

其中,$ a = 110 $, $ b = 18 $, $ c = 18 $, $ d = 4 $,行列式 $ \det(A) = a d - b c = 1104 - 1818 = 440 - 324 = 116 $

所以,

A − 1 = 1 116 [ 4 − 18 − 18 110 ] = [ 4 / 116 − 18 / 116 − 18 / 116 110 / 116 ] = [ 0.0345 − 0.1552 − 0.1552 0.9483 ] A^{-1} = \frac{1}{116} \begin{bmatrix} 4 & -18 \\ -18 & 110 \end{bmatrix} = \begin{bmatrix} 4/116 & -18/116 \\ -18/116 & 110/116 \end{bmatrix} = \begin{bmatrix} 0.0345 & -0.1552 \\ -0.1552 & 0.9483 \end{bmatrix} A1=1161[41818110]=[4/11618/11618/116110/116]=[0.03450.15520.15520.9483]

然后,

[ m c ] = [ 0.0345 − 0.1552 − 0.1552 0.9483 ] ⋅ [ 131 23 ] \begin{bmatrix} m \\ c \end{bmatrix} = \begin{bmatrix} 0.0345 & -0.1552 \\ -0.1552 & 0.9483 \end{bmatrix} \cdot \begin{bmatrix} 131 \\ 23 \end{bmatrix} [mc]=[0.03450.15520.15520.9483][13123]

计算:

m = 0.0345 ∗ 131 + ( − 0.1552 ) ∗ 23 = 4.5195 − 3.5700 = 0.9495 m = 0.0345 * 131 + (-0.1552) * 23 = 4.5195 - 3.5700 = 0.9495 m=0.0345131+(0.1552)23=4.51953.5700=0.9495

c = ( − 0.1552 ) ∗ 131 + 0.9483 ∗ 23 = − 20.3712 + 21.8109 = 1.4397 c = (-0.1552) * 131 + 0.9483 * 23 = -20.3712 + 21.8109 = 1.4397 c=(0.1552)131+0.948323=20.3712+21.8109=1.4397

所以,直线方程为:

y = 0.9495 x + 1.4397 y = 0.9495 x + 1.4397 y=0.9495x+1.4397

验证

为了验证这个结果,我们可以将每个数据点代入方程,看看预测的 $ y $ 值与实际值的差异。

例如,对于 $ x = 1 $:

y = 0.9495 ∗ 1 + 1.4397 = 2.3892 ( 实际值 = 2 ) y = 0.9495 * 1 + 1.4397 = 2.3892 \quad (\text{实际值} = 2) y=0.94951+1.4397=2.3892(实际值=2)

对于 $ x = 3 $:

y = 0.9495 ∗ 3 + 1.4397 = 2.8485 + 1.4397 = 4.2882 ( 实际值 = 5 ) y = 0.9495 * 3 + 1.4397 = 2.8485 + 1.4397 = 4.2882 \quad (\text{实际值} = 5) y=0.94953+1.4397=2.8485+1.4397=4.2882(实际值=5)

对于 $ x = 6 $:

y = 0.9495 ∗ 6 + 1.4397 = 5.697 + 1.4397 = 7.1367 ( 实际值 = 7 ) y = 0.9495 * 6 + 1.4397 = 5.697 + 1.4397 = 7.1367 \quad (\text{实际值} = 7) y=0.94956+1.4397=5.697+1.4397=7.1367(实际值=7)

对于 $ x = 8 $:

y = 0.9495 ∗ 8 + 1.4397 = 7.596 + 1.4397 = 9.0357 ( 实际值 = 9 ) y = 0.9495 * 8 + 1.4397 = 7.596 + 1.4397 = 9.0357 \quad (\text{实际值} = 9) y=0.94958+1.4397=7.596+1.4397=9.0357(实际值=9)

可以看到,预测值与实际值比较接近,说明这个线性拟合是比较好的。

总结

通过普通最小二乘法,我们直接计算得到了线性回归方程 $ y = 0.9495 x + 1.4397 $,而没有使用梯度下降等迭代方法。这种方法适用于数据量不大且特征不太多的情况,因为它需要计算矩阵的逆,而大规模矩阵的逆计算可能比较耗时。但在小规模数据集上,这是一种快速有效的求解方法。

代码实现

如果您想用 Python 实现这个过程,可以使用 numpy 库来进行矩阵运算。以下是一个简单的代码示例:

import numpy as np

# 数据点
X = np.array([1, 3, 6, 8])
Y = np.array([2, 5, 7, 9])

# 计算 summations
sum_x = np.sum(X)
sum_y = np.sum(Y)
sum_x2 = np.sum(X**2)
sum_xy = np.sum(X*Y)
n = len(X)

# 矩阵 A 和 B
A = np.array([[sum_x2, sum_x], [sum_x, n]])
B = np.array([sum_xy, sum_y])

# 求解 m 和 c
solution = np.linalg.solve(A, B)
m, c = solution[0], solution[1]

print(f"斜率 m: {m}")
print(f"截距 c: {c}")

运行这段代码,您将得到类似的 $ m $ 和 $ c $ 值。

注意事项

  • 数据预处理:在实际应用中,可能需要对数据进行标准化或归一化处理,以提高计算的稳定性。

  • 多重共线性:在多变量线性回归中,如果自变量之间存在高度相关性,可能导致矩阵 $ A $ 奇异或近乎奇异,从而无法求逆。这时可能需要使用其他方法,如岭回归或主成分分析。

  • 过拟合与欠拟合:简单的线性模型可能无法捕捉复杂的数据关系,导致欠拟合。相反,如果模型过于复杂,可能过度拟合数据,泛化能力差。

希望这个回答对您有帮助!如果您还有其他问题,欢迎继续提问。


5-怎么去除最小二乘法中的噪声部分

去除最小二乘法中的噪声部分是一个常见的需求,尤其是在处理实际数据时。噪声可能来源于测量误差、系统误差或其它外部因素,它们会干扰模型的准确性。为了减少噪声对最小二乘法的影响,可以采取多种策略和技术。以下是几种常用的方法:

1. 数据预处理

  • 过滤异常值:识别并移除或调整那些明显偏离其他观测值的数据点(即异常值)。可以使用统计方法(如Z分数、箱线图)来检测异常值。

  • 平滑技术:应用移动平均、指数平滑等方法对数据进行平滑处理,以减少短期波动的影响。

2. 模型选择

  • 选择合适的模型复杂度:确保所选模型不会过于复杂以至于过拟合数据中的噪声。对于非线性关系,考虑使用多项式回归或其他非线性模型,但要避免高阶项过多。

  • 正则化:引入Lasso(L1正则化)、Ridge(L2正则化)或Elastic Net等正则化技术,以惩罚较大的系数,从而防止过拟合,并有助于降低噪声影响。

3. 加权最小二乘法 (WLS)

  • 如果你知道不同观测值的噪声水平不同,可以采用加权最小二乘法,给每个观测值赋予不同的权重。通常,噪声越小的观测值会被给予更高的权重,这样可以使估计更加精确。

4. 使用鲁棒回归方法

  • 鲁棒回归:如M估计、Huber回归等,这些方法旨在减轻异常值对参数估计的影响,从而提高模型的稳定性和可靠性。

5. 增加数据量

  • 收集更多的训练样本可以帮助模型更好地学习潜在模式而不是偶然的噪声特征。大量数据通常能够提供更可靠的统计特性,使得噪声的影响相对减小。

6. 特征工程

  • 特征选择和降维:通过主成分分析(PCA)、因子分析等方式减少不必要的特征,集中于最能解释响应变量变化的重要特征。

示例:使用正则化减少噪声

假设我们有一个线性回归问题,想要通过Ridge回归来减少噪声的影响。Ridge回归在普通最小二乘的基础上添加了一个正则化项,其目标函数变为:

RSS + α ∑ j = 1 p β j 2 \text{RSS} + \alpha\sum_{j=1}^{p}\beta_j^2 RSS+αj=1pβj2

这里 α \alpha α 是一个控制正则化强度的超参数,而 β j \beta_j βj 表示模型中第 j j j 个特征的系数。通过调整 α \alpha α 的值,可以在偏差和方差之间找到一个平衡点,从而有效地减少噪声对模型的影响。

总之,去除最小二乘法中的噪声部分需要结合具体的应用场景和数据特点,选择合适的技术组合。上述提到的方法并不是孤立使用的,而是可以根据实际情况综合应用,以达到最佳效果。


6-带约束的最小二乘法是什么概念,具体是解决什么问题,是解决噪声问题吗?

带约束的最小二乘法(Constrained Least Squares, CLS)是一种在标准最小二乘法基础上添加了额外约束条件的方法。它不仅要求找到使误差平方和最小化的参数估计值,还要满足特定的约束条件。这些约束可以是等式约束、不等式约束或两者结合。CLS并不是专门用来解决噪声问题的,而是为了解决一些实际应用中对模型参数有特定限制的问题。

带约束的最小二乘法的概念

在标准最小二乘法中,我们试图最小化残差平方和(RSS),即:

minimize  R S S = ∑ i = 1 n ( y i − f ( x i ; β ) ) 2 \text{minimize } RSS = \sum_{i=1}^{n}(y_i - f(x_i; \beta))^2 minimize RSS=i=1n(yif(xi;β))2

其中 f ( x i ; β ) f(x_i; \beta) f(xi;β) 是由参数向量 β \beta β 定义的预测函数。而在带约束的最小二乘法中,我们在优化目标的同时加入了一些约束条件 g ( β ) ≤ 0 g(\beta) \leq 0 g(β)0 h ( β ) = 0 h(\beta) = 0 h(β)=0,使得解必须同时满足这些条件。例如,可能需要保证某些参数非负,或者某些参数之间的比例固定不变。

解决的问题

带约束的最小二乘法主要用于以下几种情况:

  • 物理或逻辑限制:当模型参数应遵循一定的物理规律或业务规则时,比如浓度不能为负、概率必须介于0到1之间等。
  • 结构化假设:有时我们希望施加某种结构上的假设,如稀疏性(只有少数几个参数是非零的)、正交性(不同特征之间相互独立)等。
  • 先验信息:如果我们已经有了关于参数的一些先验知识,可以通过约束来利用这些信息。

案例解释

案例:非负最小二乘法(NNLS)

考虑一个简单的例子,在化学分析中测量样品中各种成分的浓度。我们知道每种成分的实际浓度应该是非负的,但直接使用普通最小二乘法可能会得到负数的浓度估计值,这是不合实际的。

假设我们有一个线性模型 y = X β + ϵ y = X\beta + \epsilon y=+ϵ,其中 X X X 是设计矩阵, β \beta β 是未知参数向量(表示各成分的浓度),而 ϵ \epsilon ϵ 是随机误差项。为了确保所有估计的浓度都是非负的,我们可以使用非负最小二乘法(Non-negative Least Squares, NNLS),其数学形式为:

minimize  ∥ y − X β ∥ 2 2 \text{minimize } \|y - X\beta\|^2_2 minimize y22

subject to  β j ≥ 0 , ∀ j \text{subject to } \beta_j \geq 0, \forall j subject to βj0,j

在这个案例中,我们通过引入非负约束解决了物理上不合理的结果问题,而不是直接针对噪声进行处理。尽管如此,适当的约束可以帮助提高模型的稳定性和解释力,间接地有助于减少由于噪声引起的异常结果。

另一个案例:固定比例约束

再举一个例子,假设你正在做一个经济学的研究,想要估计两个经济变量之间的关系,并且根据理论预期这两个变量应该保持一个固定的比率。在这种情况下,你可以设置一个等式约束来强制这个比率在你的最小二乘估计过程中保持不变。

例如,如果变量 x 1 x_1 x1 x 2 x_2 x2 应该始终保持比例为 k k k,则可以在最小二乘法中添加如下约束:

β 1 β 2 = k \frac{\beta_1}{\beta_2} = k β2β1=k

这将确保最终得到的参数估计符合预先设定的比例关系,从而更好地反映实际情况。

综上所述,带约束的最小二乘法不是专门为了解决噪声问题设计的,但它确实能够帮助构建更加合理和稳定的模型,尤其是在存在明确的物理、逻辑或先验约束的情况下。


7-机器学习在线性模型的最小二乘法,没有出现梯度下降求解算法之前,使用什么方法求解方程

在机器学习中,特别是在线性模型(如线性回归)的背景下,最小二乘法是一种常用的方法来估计模型参数。在梯度下降算法流行之前,甚至是现在,对于小规模数据集或者特征维度不高的情况,通常使用解析解(也称为闭式解或直接解法)来求解最小二乘问题。

解析解是通过数学公式直接计算出最佳拟合直线的系数,而不是通过迭代逼近的方式。对于一个简单的线性回归问题,我们可以写出最小二乘问题的目标函数,并通过对目标函数求导数,令导数等于零找到最优解。具体来说,对于线性回归中的最小二乘法,我们可以通过以下步骤得到解析解:

假设有一个线性模型 y = X β + ϵ y = X\beta + \epsilon y=+ϵ,其中:

  • y y y 是 n 维响应变量向量,
  • X X X 是 n × p 设计矩阵,包含了 n 个样本点和 p 个特征,
  • β \beta β 是 p 维未知参数向量,
  • ϵ \epsilon ϵ 是 n 维误差向量。

最小二乘法旨在最小化残差平方和 (RSS):
R S S ( β ) = ( y − X β ) T ( y − X β ) RSS(\beta) = (y - X\beta)^T(y - X\beta) RSS(β)=(y)T(y)

为了找到使 RSS 最小化的 β \beta β 值,我们对 β \beta β 求偏导,并将结果设为0:
∂ R S S ∂ β = − 2 X T ( y − X β ) = 0 \frac{\partial RSS}{\partial \beta} = -2X^T(y - X\beta) = 0 βRSS=2XT(y)=0

解这个方程可以得到 β \beta β 的解析表达式:
β ^ = ( X T X ) − 1 X T y \hat{\beta} = (X^TX)^{-1}X^Ty β^=(XTX)1XTy

这里 β ^ \hat{\beta} β^ 表示我们估计的参数值。这个公式被称为正规方程(Normal Equation),它提供了直接计算最小二乘估计的方法,不需要进行迭代优化。

需要注意的是,当设计矩阵 X X X 非常大时,计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 可能会变得非常昂贵,甚至不可行。在这种情况下,梯度下降等迭代方法可能会更加有效。此外,如果 X T X X^TX XTX 不是满秩矩阵(例如,存在多重共线性),那么它的逆矩阵不存在,此时可能需要采用其他技术,如岭回归(Ridge Regression)来解决问题。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

maven的简单介绍

目录 1、maven简介2、maven 的主要特点3、maven的下载与安装4、修改配置文件5、私服(拓展) 1、maven简介 Maven 是一个广泛使用的项目管理和构建工具,主要应用于 Java 项目。Maven 由 Apache 软件基金会开发和维护,它提供了一种简洁且一致的方法来构建、…

C++ 基础思维导图(三)异常-STL

1、异常 异常举例 BankAccount.h #ifndef BANK_ACCOUNT_H #define BANK_ACCOUNT_H#include <iostream> #include <stdexcept>class InsufficientFundsException : public std::runtime_error { public:InsufficientFundsException() : std::runtime_error("I…

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…

人工智能之数学基础:函数间隔和几何间隔

本文重点 在机器学习领域,尤其是支持向量机(SVM)算法中,函数间隔(Functional Margin)和几何间隔(Geometric Margin)是两个至关重要的概念。它们不仅用于描述数据点到超平面的距离,还直接影响到分类器的性能与泛化能力。本文将详细介绍这两个概念,并探讨它们之间的区…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”&#xff0c;然后在弹出的对话框中选择项目文件&#xff08;通常是以.uproject为后缀的文件&#xff09; 选择目标平台&#xff1a; 在 UE5 主界面中&#xff0c;找到 “平台”&#xff08;Platforms&#xff09;。根据…

.NET framework、Core和Standard都是什么?

对于这些概念一直没有深入去理解&#xff0c;以至于经过.net这几年的发展进化&#xff0c;概念越来越多&#xff0c;越来越梳理不容易理解了。内心深处存在思想上的懒惰&#xff0c;以为自己专注于Unity开发就好&#xff0c;这些并不属于核心范畴&#xff0c;所以对这些概念总是…

《python》——jieba库

jieba库 jieba简介 jieba 是一个非常受欢迎的中文分词库 中文分词&#xff1a;这是 jieba 库最主要的功能。它能够将一段中文文本按照词语进行切分。例如&#xff0c;对于句子 “我爱自然语言处理”&#xff0c;jieba 分词后可以得到 [“我”, “爱”, “自然语言”, “处理”…

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

【理论】测试框架体系TDD、BDD、ATDD、MBT、DDT介绍

一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…

详细全面讲解C++中重载、隐藏、覆盖的区别

文章目录 总结1、重载示例代码特点1. 模板函数和非模板函数重载2. 重载示例与调用规则示例代码调用规则解释3. 特殊情况与注意事项二义性问题 函数特化与重载的交互 2. 函数隐藏&#xff08;Function Hiding&#xff09;概念示例代码特点 3. 函数覆盖&#xff08;重写&#xff…

计算机系统组成(计算机组成原理 基础)

文章目录&#xff1a; 一&#xff1a;体系结构 1.系统组成 1.1 硬件系统 1.2 软件系统 2.工作原理 2.1 冯诺依曼体系 2.2 指令和指令系统 3.性能指标 二&#xff1a;硬件系统 1.主机 1.1 CPU 1.2 内存 2.外设 2.1 外存 2.2 输入设备 2.3 输出设备 2.4 适配器 …

STM32 : 波特率发生器

波特率发生器 1. 发送器和接收器的波特率 波特率寄存器 (BRR): 在串行通信中&#xff0c;发送器和接收器的波特率是由波特率寄存器&#xff08;BRR&#xff09;中的一个值 DIV 来确定的。 2. 计算公式 计算公式: 详细解释 1. 波特率寄存器 (BRR) BRR: 波特率寄存器是一…

全新市场阶段, Plume 生态不断壮大的 RWAfi 版图

加密市场在 2024 年迎来了新的里程碑。BTC 不仅成功推出 ETF&#xff0c;以 BTC 为代表的主流加密货币还在一系列传统金融机构的推动下逐步与主流金融市场接轨。与此同时&#xff0c;随着特朗普成功当选下一任美国总统&#xff0c;他承诺推出一系列友好的加密政策&#xff0c;并…

MySQL的小问题

编码问题 不管官方使用什么编码&#xff1a;latin1、gbk、utf8、utfmb4。统一使用utfmb4 MySQL中的utf8并不是utf-8&#xff0c;它省略了一个字节&#xff0c;只是用三个字节存储所有的符号&#xff0c;utfmb4才是utf-8 远程登录问题&#xff1a; MySQL官方默认没有启动远程…

单片机(MCU)-简单认识

简介&#xff1a; 内部集成了CPU&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口等一系列电脑的常用硬件功能。 单片机的任务是信息采集&#xff08;依靠传感器&#xff09;&#xff0c;处理&#xff08;依靠CPU&#xff09;&…

金融项目实战 01|功能测试分析与设计

前置内容&#xff1a;金融项目准备的内容笔记可直接看如下笔记 只看&#xff1a;一、投资专业术语 和 二、项目简介 两部分文章浏览阅读2.3k次&#xff0c;点赞70次&#xff0c;收藏67次。安享智慧理财金融系统测试项目&#xff0c;测试用例&#xff0c;接口测试&#xff0c;金…

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…

5个不同类型的数据库安装

各种社区版本下载官方地址&#xff1a;MySQL :: MySQL Community Downloads 一、在线YUM仓库&#xff08;Linux&#xff09; 选择 MySQL Yum Repository 选择对应版本下载仓库安装包&#xff08;No thanks, just start my download.&#xff09; 下载方法1&#xff1a;下载到本…

《CPython Internals》阅读笔记:p97-p117

《CPython Internals》学习第 7 天&#xff0c;p97-p117 总结&#xff0c;总计 21 页。 一、技术总结 1.词法分析(lexical analysis) 根据《Compilers-Principles, Techniques, and Tools》(《编译原理》第2版)第 5 页&#xff1a;The first phase of a compiler is called …