本内容是博主自学机器学习总结的。由于博主水平有限,内容可能有些许错误。如有错误,请发在评论区。
逻辑回归(Logistic Regression)是一种用于分类问题的统计模型。它通过建立一个逻辑函数模型来预测某个事件属于某一类的概率,通常用于二元分类问题。逻辑回归输出的是概率值,值域介于0到1之间。模型最终通过设定一个阈值(如0.5),将连续的概率值转换为离散的分类标签(如0或1)。
逻辑回归的核心在于使用Sigmoid函数(逻辑函数)来将线性组合的结果映射为一个概率值。其公式如下:
P ( y = 1 ∣ X ) = 1 1 + e − ( θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n ) P(y=1|X) = \frac{1}{1 + e^{-(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n)}} P(y=1∣X)=1+e−(θ0+θ1x1+θ2x2+⋯+θnxn)1
尽管逻辑回归与线性回归都属于回归模型,但它们在用途和方法上有显著区别:
输出类型不同:
目标函数不同:
模型输出的范围:
适用场景:
逻辑回归广泛应用于需要分类的领域,尤其是二分类问题。以下是常见应用场景:
逻辑回归在这些领域因其解释性强、计算效率高、且易于实现,被广泛采用。
逻辑回归是一种用于二分类问题的统计模型,旨在预测某个事件发生的概率。模型假设因变量 y y y 是二元的(即 y ∈ { 0 , 1 } y \in \{0, 1\} y∈{0,1}),并通过输入变量(特征) x x x的线性组合来估计事件属于某一类别的概率。模型的形式为:
P ( y = 1 ∣ x ) = 1 1 + e − ( θ 0 + θ 1 x 1 + ⋯ + θ n x n ) P(y=1|x) = \frac{1}{1 + e^{-(\theta_0 + \theta_1 x_1 + \dots + \theta_n x_n)}} P(y=1∣x)=1+e−(θ0+θ1x1+⋯+θnxn)1
用更简洁的符号表示为:
P ( y = 1 ∣ x ) = σ ( θ T x ) P(y=1|x) = \sigma(\theta^T x) P(y=1∣x)=σ(θTx)
其中:
Sigmoid函数(也称为逻辑函数)是逻辑回归的核心,用来将线性回归模型的输出映射为一个0到1之间的概率。其数学表达式为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
其中, z = θ 0 + θ 1 x 1 + ⋯ + θ n x n z = \theta_0 + \theta_1 x_1 + \dots + \theta_n x_n z=θ0+θ1x1+⋯+θnxn是输入变量的线性组合。
Sigmoid函数的输出在0到1之间,表示事件发生的概率。它具有以下特性:
这种性质使得Sigmoid函数非常适合用于二分类问题中的概率预测。
决策边界是逻辑回归模型用于划分类别的阈值,通常为0.5。根据Sigmoid函数的性质,逻辑回归模型通过设定一个阈值来判断输入数据属于哪一类。
h θ ( x ) h_\theta(x) hθ(x) 是逻辑回归模型的预测函数,它基于输入特征$ x $ 和模型参数$ \theta $ 来预测样本属于正类(例如,标签为1)的概率。在逻辑回归中,这个预测函数通常采用Sigmoid函数,其数学表达式如下:
h θ ( x ) = σ ( θ T x ) = 1 1 + e − θ T x h_\theta(x) = \sigma(\boldsymbol{\theta}^T x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=σ(θTx)=1+e−θTx1
这里, θ T x \boldsymbol{\theta}^T x θTx 表示参数向量 θ \boldsymbol{\theta} θ 和特征向量 x x x 的点积,即:
θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n \boldsymbol{\theta}^T x = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \ldots + \theta_n x_n θTx=θ0+θ1x1+θ2x2+…+θnxn
其中, θ 0 \theta_0 θ0 是偏置项(bias term), x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,…,xn是样本的特征值。注意:特征是 x x x,特征值是 x i x_i xi。
Sigmoid函数将任意实数值映射到(0, 1)区间内,这使得 h θ ( x ) h_\theta(x) hθ(x)的输出可以被解释为样本属于正类的概率。在二分类问题中,我们通常将这个概率与一个阈值(如0.5)进行比较,以决定最终的分类结果:
这种基于概率的预测方法不仅提供了分类结果,还给出了分类的置信度,这在许多应用场景中是非常有用的。例如,在医学诊断中,我们可能更关心测试结果的置信度,而不仅仅是一个简单的是或否的答案。
逻辑回归的输出是事件发生的概率,而不是直接的分类标签。输出概率可以解释为某个事件属于类1的可能性。例如:
这一概率解释是逻辑回归的一个重要特点,它不仅给出一个分类结果,还提供了分类的置信度,从而能够在决策过程中提供更多信息。例如,在某些应用中,可以根据应用场景调整决策阈值,而不仅仅依赖默认的0.5阈值。
在逻辑回归中,模型通过最大化训练数据的似然函数来估计参数。由于直接最大化似然函数在数学上不方便处理,通常会最小化负的对数似然函数,也称为交叉熵损失。
对于逻辑回归,似然函数定义为给定输入特征 x x x 和对应标签 y y y,模型预测所有样本的概率的乘积。假设有 n n n个样本,定义如下:
L ( θ ) = ∏ i = 1 n P ( y i ∣ x i ) L(\theta) = \prod_{i=1}^{n} P(y^i|x^i) L(θ)=∏i=1nP(yi∣xi)
其中: P ( y i ∣ x i ) P(y^i|x^i) P(yi∣xi)是第 i i i 个样本的预测概率。
为了便于优化,我们通常采用负对数似然作为损失函数,公式为:
J ( θ ) = − ∑ i = 1 n [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] 公式 ( 1 ) J(\theta) = -\sum_{i=1}^{n}\left[ y^i log(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))\right] 公式(1) J(θ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]公式(1)
其中, h θ ( x ) h_\theta(x) hθ(x)是样本 x i x^i xi属于正类的概率。
解释:
公式推导:
公式(1):
对于二项分布公式,可以得出: P ( y i ∣ x i ) = h θ ( x i ) y i ( 1 − h θ ( x i ) ) 1 − y i P(y^i|x^i) =h_\theta(x^i)^{y^i}(1-h_\theta(x^i))^{1-y^i} P(yi∣xi)=hθ(xi)yi(1−hθ(xi))1−yi
所以:
L ( θ ) = ∏ i = 1 n P ( y i ∣ x i ) = ∏ i = 1 n h θ ( x i ) y i ( 1 − h θ ( x i ) ) 1 − y i L(\theta) = \prod_{i=1}^{n} P(y^i|x^i)=\prod_{i=1}^{n}h_\theta(x^i)^{y^i}(1-h_\theta(x^i))^{1-y^i} L(θ)=∏i=1nP(yi∣xi)=∏i=1nhθ(xi)yi(1−hθ(xi))1−yi
对它求对数,得到对数似然函数:
l ( θ ) = l o g ( L ( θ ) ) = ∑ i = 1 n y i l o g ( h θ ( x i ) ) + ∑ i = 1 n ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) l(\theta)=log(L(\theta))=\sum_{i=1}^{n} y^i log(h_\theta(x^i))+\sum_{i=1}^{n}(1-y^i)log(1-h_\theta(x^i)) l(θ)=log(L(θ))=∑i=1nyilog(hθ(xi))+∑i=1n(1−yi)log(1−hθ(xi))
l ( θ ) l(\theta) l(θ)可以作为逻辑回归的损失函数,但当损失函数是一个凸函数时,具备最小值。所以设定 J ( θ ) = − l ( θ ) J(\theta)=-l(\theta) J(θ)=−l(θ),即
J ( θ ) = − ∑ i = 1 n [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] J(\theta) = -\sum_{i=1}^{n}\left[ y^i log(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))\right] J(θ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]
注:
梯度下降法(Gradient Descent)是逻辑回归模型中常用的优化算法之一,用于最小化损失函数,找到能够最小化损失函数的参数值 β \beta β。其基本思想是沿着损失函数的负梯度方向更新模型参数,逐步接近最优解。
梯度下降法的参数更新公式为:
θ j = θ j − α ∂ J ( θ ) ∂ θ j \theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} θj=θj−α∂θj∂J(θ)
其中:
每次迭代时,模型的参数根据损失函数的梯度进行调整,直到损失函数收敛到最小值。
优化过程:
计算梯度:
计算损失函数关于所有参数的梯度:
∇ J ( θ ) = ∂ J ( θ ) ∂ θ = ∑ i = 1 m ( h θ ( x i ) − y i ) x i \nabla J(\theta)=\frac{\partial J(\theta)}{\partial\theta}=\sum_{i=1}^m (h_\theta(x^i)-y^i)x^i ∇J(θ)=∂θ∂J(θ)=∑i=1m(hθ(xi)−yi)xi
将其转换成向量的形式:
∇ J ( θ ) = ∑ i = 1 m ( h θ ( x i ) − y i ) x i = [ x 1 x 2 . . . x n ] [ ( h θ ( x 1 ) − y 1 ( h θ ( x 2 ) − y 2 . . . ( h θ ( x m ) − y m ] = X T ( h θ ( X ) − Y ) \nabla J(\theta) = \sum_{i=1}^m (h_\theta(x^i)-y^i)x^i=\begin{bmatrix}x_1 &x_2&...&x_n \end{bmatrix}\begin{bmatrix}(h_\theta(x^1)-y^1 \\(h_\theta(x^2)-y^2 \\ ...\\(h_\theta(x^m)-y^m \end{bmatrix}=X^T (h_\theta(X) - Y) ∇J(θ)=∑i=1m(hθ(xi)−yi)xi=[x1x2...xn] (hθ(x1)−y1(hθ(x2)−y2...(hθ(xm)−ym =XT(hθ(X)−Y)
其中:
X X X 是包含所有样本特征的矩阵, θ \boldsymbol{\theta} θ 是参数向量, h θ ( X ) h_\theta(X) hθ(X)是所有样本的预测概率向量, Y Y Y是所有样本的实际标签向量
因为 θ \boldsymbol{\theta} θ 和 x x x 维度相同,所以当 x x x 有 m m m维的时候, θ \boldsymbol{\theta} θ同样有 m m m维,此时 J ( θ ) J(\theta) J(θ)的求导也变成了对 θ \boldsymbol{\theta} θ的每一个维度求导:
∂ J ( θ ) ∂ θ j = ∑ i = 1 m ( h θ ( x i ) − y i ) x j i \frac{\partial J(\theta)}{\partial\theta_j}=\sum_{i=1}^m (h_\theta(x^i)-y^i)x^i_j ∂θj∂J(θ)=∑i=1m(hθ(xi)−yi)xji
更新参数:
接下来,我们根据梯度和学习率 α \alpha α 来更新每个参数。学习率是一个超参数,它控制了每次更新参数时步长的大小。参数更新的公式为:
θ j = θ j − α ∂ J ( θ ) ∂ θ j \theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} θj=θj−α∂θj∂J(θ)
重复迭代:
我们重复步骤1和2,直到满足某个停止条件。停止条件可以是:
伪代码:
# 初始化参数
theta = np.array([0.0, 0.0, 0.0]) # 包括偏置项theta_0
# 设置学习率和迭代次数
alpha = 0.01
iterations = 1000
# 特征矩阵X和标签向量Y
X = np.array([[1, 1, 2], [1, 2, 3], [1, 3, 4], [1, 4, 5]]) # 添加偏置项
Y = np.array([0, 1, 1, 0])
# 梯度下降
for i in range(iterations):
# 预测
predictions = 1 / (1 + np.exp(-np.dot(X, theta)))
#np.dot(X, theta)计算了特征矩阵X和参数向量theta的点积,得到每个样本的线性组合。然后,对这个线性组合取负值,通过np.exp计算其指数,得到一个接近0或正无穷的值。
# 计算梯度
gradient = np.dot(X.T, (predictions - y)) / len(y)
#(predictions - y)计算了预测概率和实际标签之间的差异。然后,np.dot(X.T, ...)将这个差异与特征矩阵X的转置相乘,得到梯度向量
# 更新参数
theta -= alpha * gradient
# 输出最终的参数
print(theta)
梯度下降法实现相对简单,但其收敛速度较慢。在较小值附近,梯度下降法会以一种曲折的慢速方式来逼近最小点,此时可以考虑采用牛顿法和拟牛顿法。
1. 牛顿法:
牛顿法通过使用二阶导数(即 Hessian 矩阵)来找到损失函数的最小值。更新公式为:
θ k + 1 = θ k − H ( θ k ) − 1 ∇ f ( θ k ) \theta_{k+1} = \theta_k - H(\theta_k)^{-1} \nabla f(\theta_k) θk+1=θk−H(θk)−1∇f(θk)
其中:
牛顿法通常收敛速度更快,因为它利用了二阶信息,可以更精确地找到损失函数的最优解。然而,计算 Hessian 矩阵在高维数据上代价较高,因此牛顿法更适用于中小型数据集。
公式推导:
在泰勒展开式中,对于函数 f ( x ) f(x) f(x),当 x x x在 x 0 x_0 x0附近时可以使用如下展开式来逼近 f ( x ) f(x) f(x):
f ( x ) = f ( a ) + f ′ ( a ) ( x − a ) + f ′ ′ ( a ) 2 ! ( x − a ) 2 + f ′ ′ ′ ( a ) 3 ! ( x − a ) 3 + ⋯ + f ( n ) ( a ) n ! ( x − a ) n + R n ( x ) f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \frac{f'''(a)}{3!}(x-a)^3 + \cdots + \frac{f^{(n)}(a)}{n!}(x-a)^n + R_n(x) f(x)=f(a)+f′(a)(x−a)+2!f′′(a)(x−a)2+3!f′′′(a)(x−a)3+⋯+n!f(n)(a)(x−a)n+Rn(x)
在牛顿法中,我们使用逐步逼近的方法来求解参数 θ \theta θ。这里我们用下标 k k k标识在第 k k k步的诸标量值。例如,用 θ k \theta_k θk表示第 k k k步的 θ \theta θ值。在第 k k k步,我们有当前估计 θ k \theta_k θk,就可以将 f ( θ ) f(\theta) f(θ)(损失函数)用在其在 θ k \theta_k θk处的二阶泰勒展开式来近似:
f ( θ ) ≈ f ( θ k ) + ∇ f ( θ k ) T ( θ − θ k ) + 1 2 ( θ − θ k ) T H ( θ k ) ( θ − θ k ) f(\theta) \approx f(\theta_k) + \nabla f(\theta_k)^T (\theta - \theta_k) + \frac{1}{2} (\theta - \theta_k)^T H(\theta_k) (\theta - \theta_k) f(θ)≈f(θk)+∇f(θk)T(θ−θk)+21(θ−θk)TH(θk)(θ−θk)
这里:
在牛顿法中,我们希望找到下一个点 θ k + 1 \theta_{k+1} θk+1,使得 f ( θ k + 1 ) f(\theta_{k+1}) f(θk+1)尽可能小。所以对 f ( θ ) f(\theta) f(θ)进行求导,并将导数置为0:
∂ f ( θ ) ∂ θ = f ( θ k ) + ∇ f ( θ k ) T ( θ − θ k ) + 1 2 ( θ − θ k ) T H ( θ k ) ( θ − θ k ) ∂ θ = ∇ f ( θ k ) T + ( θ − θ k ) H ( θ k ) = 0 \frac{\partial f(\theta)}{\partial \theta}=\frac{f(\theta_k) + \nabla f(\theta_k)^T (\theta - \theta_k) + \frac{1}{2} (\theta - \theta_k)^T H(\theta_k) (\theta - \theta_k)}{\partial \theta}=\nabla f(\theta_k)^T+(\theta - \theta_k) H(\theta_k)=0 ∂θ∂f(θ)=∂θf(θk)+∇f(θk)T(θ−θk)+21(θ−θk)TH(θk)(θ−θk)=∇f(θk)T+(θ−θk)H(θk)=0
解上述方程得到:
( θ − θ k ) T H ( θ k ) = − ∇ f ( θ k ) T (\theta - \theta_k)^T H(\theta_k) = -\nabla f(\theta_k)^T (θ−θk)TH(θk)=−∇f(θk)T
由于 H ( θ k ) H(\theta_k) H(θk)是一个方阵,我们可以将两边乘以 H ( θ k ) H(\theta_k) H(θk) 的逆矩阵:
θ − θ k = − H ( θ k ) − 1 ∇ f ( θ k ) \theta - \theta_k = -H(\theta_k)^{-1} \nabla f(\theta_k) θ−θk=−H(θk)−1∇f(θk)
因此:
θ = θ k − H ( θ k ) − 1 ∇ f ( θ k ) \theta = \theta_k - H(\theta_k)^{-1} \nabla f(\theta_k) θ=θk−H(θk)−1∇f(θk)
将 θ \theta θ更新为 θ k + 1 \theta_{k+1} θk+1:
θ k + 1 = θ k − H ( θ k ) − 1 ∇ f ( θ k ) \theta_{k+1} = \theta_k - H(\theta_k)^{-1} \nabla f(\theta_k) θk+1=θk−H(θk)−1∇f(θk)
2. 逻辑回归的牛顿法求解
θ k + 1 = θ k − H ( θ k ) − 1 ∇ J ( θ k ) \theta_{k+1} = \theta_k - H(\theta_k)^{-1} \nabla J(\theta_k) θk+1=θk−H(θk)−1∇J(θk)
梯度:
∇ J ( θ ) = X T ( h θ ( X ) − Y ) \nabla J(\theta) =X^T (h_\theta(X) - Y) ∇J(θ)=XT(hθ(X)−Y)
海森矩阵:
H ( θ ) = X T S X H(\theta) = X^T SX H(θ)=XTSX
其中: S S S 为对角矩阵,其第 i i i个对角元素为 h θ ( x i ) ( 1 − h θ ( x i ) ) h_\theta(x_i)(1 - h_\theta(x_i)) hθ(xi)(1−hθ(xi))。对于一个包含 m m m 个样本的数据集, S S S 的矩阵形式是:
S = [ h θ ( x 1 ) ( 1 − h θ ( x 1 ) ) 0 ⋯ 0 0 h θ ( x 2 ) ( 1 − h θ ( x 2 ) ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ h θ ( x m ) ( 1 − h θ ( x m ) ) ] S = \begin{bmatrix} h_\theta(x_1)(1 - h_\theta(x_1)) & 0 & \cdots & 0 \\ 0 & h_\theta(x_2)(1 - h_\theta(x_2)) & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & h_\theta(x_m)(1 - h_\theta(x_m)) \end{bmatrix} S= hθ(x1)(1−hθ(x1))0⋮00hθ(x2)(1−hθ(x2))⋮0⋯⋯⋱⋯00⋮hθ(xm)(1−hθ(xm))
牛顿法的迭代步骤
初始化参数:选择初始参数 θ 0 \theta_0 θ0,通常设为 0 向量。
计算预测概率:根据当前参数 θ \theta θ,计算预测的概率 h θ ( x ) = σ ( θ T x ) h_\theta(x) = \sigma(\theta^Tx) hθ(x)=σ(θTx)。
计算梯度和 Hessian:
计算梯度 g ( θ ) = X T ( h θ ( x ) − Y ) g(\theta) = X^T (h_\theta(x)-Y) g(θ)=XT(hθ(x)−Y)。
计算 Hessian 矩阵 H ( θ ) = X T S X H(\theta) = X^T S X H(θ)=XTSX,其中 S S S 为对角矩阵。
更新参数:根据牛顿法的公式更新参数:
θ k + 1 = θ k + 1 − H ( θ ) − 1 g ( θ ) \theta_{k+1} = \theta_{k+1} - H(\theta)^{-1} g(\theta) θk+1=θk+1−H(θ)−1g(θ)
检查收敛:判断参数更新后的变化量 ∥ θ k + 1 − θ k ∥ \|\theta_{k+1} - \theta_{k}\| ∥θk+1−θk∥ 是否小于设定的阈值 ϵ \epsilon ϵ,如果是,则停止迭代,否则返回步骤 2 继续迭代。
输出结果:当满足收敛条件时,输出最优的参数 θ \theta θ。
在实践中,由于黑塞矩阵 H ( θ ) H(θ) H(θ)是正定的,它的逆可以保证存在,并且这个更新公式可以有效地用于求解逻辑回归问题。然而,计算黑塞矩阵及其逆在计算上可能很昂贵,特别是对于大型数据集。因此,通常使用更高效的优化算法,如梯度下降法或拟牛顿法。
由于牛顿法需要计算海森矩阵的逆,因此计算量较大。随着未知数维度 D D D的增大,海森矩阵( D × D D\times D D×D)也会增大,需要的存储空间增多,计算量增大,有时候甚至会大到不可计算。
拟牛顿法(Quasi-Newton Methods)是一类用于求解无约束优化问题的迭代方法,它是对经典牛顿法的改进。与牛顿法不同,**拟牛顿法不需要直接计算 Hessian 矩阵的逆,而是通过逐步构造近似 Hessian 矩阵的方式来进行优化。**这使得拟牛顿法在高维问题中更加高效,且减少了计算成本。
**BFGS(Broyden-Fletcher-Goldfarb-Shanno)**方法是拟牛顿法中的一种常用算法,用于解决无约束优化问题。它通过迭代逐步逼近目标函数的Hessian矩阵,避免了直接计算Hessian矩阵的复杂性,并保持较高的收敛效率。以下是BFGS方法的关键原理和步骤。
1.基本思想
BFGS方法的核心在于利用迭代过程中得到的梯度信息,逐步更新近似的Hessian矩阵 B k B_k Bk(或它的逆矩阵 D k = B k − 1 D_k = B_k^{-1} Dk=Bk−1),而不是显式计算目标函数的Hessian矩阵。每次迭代时,更新的近似矩阵能够反映目标函数的局部曲率,从而加速收敛。
2.BFGS算法步骤
2.1 初始条件
2.2 迭代步骤
计算搜索方向:
在每次迭代中,计算当前迭代点的搜索方向 $ p_k $:
p k = − D k ∇ f ( θ k ) p_k = -D_k \nabla f(\theta_k) pk=−Dk∇f(θk)
其中: ∇ f ( θ k ) \nabla f(\theta_k) ∇f(θk)是在点 θ k \theta_k θk处目标函数的梯度, D k D_k Dk 是近似的Hessian矩阵的逆矩阵。该搜索方向通常是下降方向。
线搜索:
进行线搜索的目的是寻找合适的步长 α k \alpha_k αk,以确保在每次迭代中沿着当前的搜索方向 p k p_k pk 进行更新时,目标函数 f ( θ ) f(\theta) f(θ) 取得充分的下降。
θ k + 1 = θ k + α k p k \theta_{k+1} = \theta_k + \alpha_k p_k θk+1=θk+αkpk
其中:步长 α k \alpha_k αk不能随意选取,通常通过满足Wolfe条件或Armijo条件来确定。
更新参数:
计算两个向量:
更新近似的Hessian矩阵的逆矩阵 D k D_k Dk:
根据以下更新公式更新 $D_k $:
D k + 1 = ( I − s k y k T y k T s k ) D k ( I − y k s k T y k T s k ) + s k s k T y k T s k D_{k+1} = \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) D_k \left( I - \frac{y_k s_k^T}{y_k^T s_k} \right) + \frac{s_k s_k^T}{y_k^T s_k} Dk+1=(I−ykTskskykT)Dk(I−ykTskykskT)+ykTskskskT
该公式能保持 D k + 1 D_{k+1} Dk+1的正定性和对称性,同时逐步逼近真实的Hessian矩阵。
判断收敛:
若梯度的范数 ∥ ∇ f ( θ k + 1 ) ∥ \|\nabla f(\theta_{k+1})\| ∥∇f(θk+1)∥ 小于设定的收敛容差 ϵ \epsilon ϵ,则迭代终止;否则继续进行下一次迭代。
3.L-BFGS:BFGS的改进版本
在处理大规模问题时,BFGS方法由于需要存储和更新完整的Hessian矩阵,可能会消耗过多内存。为此,引入了L-BFGS(Limited-memory BFGS)方法,它只存储少量的历史信息,用于更新Hessian矩阵的近似,显著减少了内存需求,适用于大规模优化问题。
正则化是一种防止模型过拟合的技术。过拟合是指模型在训练数据上表现良好,但在新数据上表现较差。通过在损失函数中加入正则项,可以对模型参数施加约束,避免过拟合。
L1正则化(Lasso):
L1正则化通过在损失函数中加入模型参数的绝对值之和来约束参数。L1正则化的损失函数为:
J ( θ ) = − ∑ i = 1 n [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] + λ ∑ j = 1 m ∣ θ i ∣ J(\theta) = -\sum_{i=1}^{n}\left[ y^i log(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))\right] + \lambda \sum_{j=1}^{m} |\theta_i| J(θ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+λ∑j=1m∣θi∣
其中, λ \lambda λ是正则化系数,控制正则化的强度。
效果:L1正则化会将一些不重要的参数缩小到零,从而进行特征选择,使模型稀疏化。
L2正则化(Ridge):
L2正则化通过在损失函数中加入参数平方之和来约束参数。L2正则化的损失函数为:
J θ ) = − ∑ i = 1 n [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] + λ ∑ j = 1 m θ j 2 J\theta) = -\sum_{i=1}^{n}\left[ y^i log(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))\right] + \lambda \sum_{j=1}^{m} \theta_j^2 Jθ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+λ∑j=1mθj2
效果:L2正则化将较大的参数缩小,但不会将参数缩小到零,因此它有助于防止模型过度复杂化,而不会完全消除某些特征。
Elastic Net:
Elastic Net 是 L1 和 L2 正则化的组合,它结合了两者的优点,既能实现稀疏化,又能防止过拟合。其损失函数为:
J ( θ ) = − ∑ i = 1 n [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] + λ 1 ∑ j = 1 m ∣ θ j ∣ + λ 2 ∑ j = 1 m θ j 2 J(\theta) = -\sum_{i=1}^{n}\left[ y^i log(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))\right] + \lambda_1 \sum_{j=1}^{m} |\theta_j| + \lambda_2 \sum_{j=1}^{m} \theta_j^2 J(θ)=−∑i=1n[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+λ1∑j=1m∣θj∣+λ2∑j=1mθj2
其中, λ 1 \lambda_1 λ1 和 λ 2 \lambda_2 λ2 控制 L1 和 L2 正则化的强度。
在多分类问题中,常见的分类策略包括“一对多(One-vs-All)”、“一对一(One-vs-One)”以及多标签分类。以下是对这些策略的详细解释:
一对多策略又称为“一个对所有(One-vs-Rest)”,其基本思路是为每个类别训练一个二分类器。对于每个类别 k k k:
在预测时,对于输入样本,计算所有 K K K 个分类器的输出概率,选择概率最高的分类器作为最终的预测结果。这种方法的优点是实现简单且容易扩展到多个类别,但可能在类别不平衡时表现不佳。
一对一策略的基本思路是为每一对类别训练一个分类器。对于 K K K 个类别,训练 K ( K − 1 ) 2 \frac{K(K-1)}{2} 2K(K−1) 个分类器。每个分类器只区分两个类别。例如,假设有三个类别 A、B 和 C:
在预测时,所有分类器进行投票,每个分类器将其预测结果投给所区分的类别,选择获得最多投票的类别作为最终结果。这种方法通常可以提高分类的准确性,但随着类别数量的增加,分类器的数量会迅速增加,计算成本较高。
多标签分类问题与多分类问题不同,在多标签分类中,每个样本可以同时属于多个类别。常见的应用场景包括文本分类(例如一篇文章可以同时被标记为“科技”和“健康”)、图像标注(例如一张图片可能同时标注为“海洋”、“沙滩”、“日落”等)。
在多标签分类中,通常有以下几种处理方式:
概率论是研究随机事件发生规律的数学分支。它的核心概念是“事件发生的可能性”,用概率来衡量某个事件的发生。概率的基本性质包括:
条件概率表示在事件 B B B已经发生的前提下,事件 A A A 发生的概率,记作 P ( A ∣ B ) P(A|B) P(A∣B)。条件概率的公式为:
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A|B) = \frac{P(A \cap B)}{P(B)} P(A∣B)=P(B)P(A∩B)
条件概率刻画了两个事件之间的关联性,是理解许多概率概念的基础。它也用于逻辑回归中的似然估计,帮助我们在已知条件下评估某一事件的概率。
贝叶斯定理是条件概率的一个重要结果,提供了如何通过逆向思维来计算事件的概率。其公式为:
P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)⋅P(A)
这里:
贝叶斯定理的重要性在于它通过已有数据和先验信息,帮助我们更新对某事件的预测。它在逻辑回归模型的解释中也常用到,特别是当我们处理具有先验概率的信息时。
概率分布描述了随机变量取不同值的概率。对于逻辑回归,常用的分布是二项分布,它用于表示只有两个可能结果的随机事件。
二项分布描述了在 n n n次独立的伯努利试验(即每次试验只有两个可能结果,如“成功”或“失败”)中,成功发生 k k k次的概率。其概率质量函数为:
P ( X = k ) = ( n k ) p k ( 1 − p ) n − k P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k} P(X=k)=(kn)pk(1−p)n−k
其中:
在逻辑回归中,目标变量通常是二元的(如0或1),因此其结果常被认为是来自二项分布。在模型拟合过程中,逻辑回归通过最大化二项分布的似然函数来找到最佳参数估计值。