支持向量机(SVM)的解析与应用:从封闭解到时代演变 (中英双语)

中文版

支持向量机(SVM)的解析与应用:从封闭解到时代演变


什么是支持向量机(SVM)?

支持向量机(Support Vector Machine, SVM)是一种经典的监督学习算法,用于解决分类和回归问题,尤其在小样本、高维数据中表现突出。SVM 的核心思想是寻找一个最优的分隔超平面,将数据分为两个类别,同时使分类的间隔(Margin)最大化。

具体来说,假设我们有一个二分类问题,数据集为 ( D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N ),其中 ( x i ∈ R d x_i \in \mathbb{R}^d xiRd ) 是输入特征,( y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{1,+1} ) 是类别标签。SVM 试图找到一个超平面

w T x + b = 0 , w^T x + b = 0, wTx+b=0,

使得正负类之间的间隔最大。

最大化间隔问题可以表述为一个优化问题:

min ⁡ w , b 1 2 ∥ w ∥ 2 s.t.  y i ( w T x i + b ) ≥ 1 , ∀ i . \min_{w, b} \frac{1}{2} \|w\|^2 \quad \text{s.t. } y_i(w^T x_i + b) \geq 1, \forall i. w,bmin21w2s.t. yi(wTxi+b)1,i.


核函数与高维映射

SVM 的一大亮点是核函数(Kernel Function)的引入。通过核函数,SVM 可以高效地将数据从原始空间映射到高维特征空间,从而在复杂数据分布下找到线性可分的超平面,而不需要显式计算映射后的特征。

核函数 ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ) 的作用是定义一个隐式映射关系:

K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) , K(x_i, x_j) = \phi(x_i)^T \phi(x_j), K(xi,xj)=ϕ(xi)Tϕ(xj),

其中 ( ϕ ( x ) \phi(x) ϕ(x) ) 是将数据从原始空间映射到高维空间的非线性映射。常见核函数包括:

  • 线性核:( K ( x i , x j ) = x i T x j K(x_i, x_j) = x_i^T x_j K(xi,xj)=xiTxj )
  • 多项式核:( K ( x i , x j ) = ( x i T x j + c ) d K(x_i, x_j) = (x_i^T x_j + c)^d K(xi,xj)=(xiTxj+c)d )
  • 高斯核(RBF 核):( K ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(2σ2xixj2) )

通过核函数,优化问题的目标函数转化为仅依赖于核函数矩阵 ( K K K ) 的对偶形式:

max ⁡ α ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) , \max_{\alpha} \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i, x_j), αmaxi=1Nαi21i=1Nj=1NαiαjyiyjK(xi,xj),

s.t.  0 ≤ α i ≤ C , ∑ i = 1 N α i y i = 0. \text{s.t. } 0 \leq \alpha_i \leq C, \sum_{i=1}^N \alpha_i y_i = 0. s.t. 0αiC,i=1Nαiyi=0.

这里的 ( α \alpha α ) 是拉格朗日乘子,( C C C ) 是松弛变量的权重。通过对偶形式的优化,核函数的解析形式使得梯度计算变得简单且高效。


封闭解在梯度计算中的应用

对于核函数矩阵 ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ),由于其解析形式的存在,在对偶问题的求解中可以快速计算目标函数关于 ( α \alpha α ) 的梯度:

∂ L ( α ) ∂ α i = 1 − ∑ j = 1 N α j y i y j K ( x i , x j ) . \frac{\partial L(\alpha)}{\partial \alpha_i} = 1 - \sum_{j=1}^N \alpha_j y_i y_j K(x_i, x_j). αiL(α)=1j=1NαjyiyjK(xi,xj).

这种封闭解的优势在于避免了复杂的数值微分计算,从而显著加快了模型的训练过程,尤其是在小规模数据集上。关于具体例子,请往下翻到:“实例:使用高斯核计算梯度”部分。


SVM 的局限性

虽然 SVM 曾经是机器学习的主力工具,但其在应用中也存在一些局限性:

  1. 计算复杂度高
    当样本数量 ( N N N) 较大时,核函数矩阵 ( K K K ) 是一个 ( N × N N \times N N×N ) 的矩阵,其计算和存储复杂度为 ( O ( N 2 ) O(N^2) O(N2) ),甚至可能达到 ( O ( N 3 ) O(N^3) O(N3) )(如在求解二次规划问题时)。

  2. 缺乏扩展性
    SVM 在处理大规模数据或高维数据时效率较低,尤其在需要多类别分类任务时,往往需要训练多个二分类器进行组合(如一对多、一对一方法)。

  3. 超参数调优困难
    核函数的选择、核参数(如高斯核中的 ( σ \sigma σ ))和正则化参数 ( C C C ) 的调优都需要较多的经验和计算资源。

  4. 无法直接处理非结构化数据
    SVM 需要手工设计特征,无法像深度学习那样从原始数据中自动提取特征。


深度学习时代:SVM 为何逐渐退出舞台?

随着数据量的增大和计算资源的提升,深度学习逐渐取代 SVM 成为主流算法。其优势主要体现在以下几个方面:

  1. 自动特征学习
    深度神经网络能够通过多层非线性结构从数据中自动提取特征,无需人工干预,而 SVM 则依赖于预定义的特征。

  2. 扩展性更强
    深度学习算法可以轻松扩展到数百万甚至数十亿样本的数据集,而 SVM 的训练复杂度在大规模数据集下难以接受。

  3. 非结构化数据的处理能力
    深度学习在图像、文本、语音等非结构化数据上的表现远优于 SVM。

  4. 多任务学习和端到端训练
    深度学习模型可以同时优化多个目标,并能直接从输入到输出进行端到端训练,而 SVM 通常需要额外的后处理步骤。


SVM 的应用与未来

尽管 SVM 在某些场景中被深度学习取代,但它仍然在以下领域中有着重要应用:

  1. 小样本问题:当数据量有限时,SVM 的泛化能力优于深度学习。
  2. 高维数据分类:在文本分类、基因数据分析等高维问题中,SVM 表现依然强劲。
  3. 在线学习:SVM 的一些变体(如在线核 SVM)在动态数据流中依然具有竞争力。

总结

支持向量机作为一种经典的机器学习算法,通过核函数的引入和封闭解的快速计算,在数据量较小和高维问题中表现优异。然而,随着数据规模和模型复杂度的增加,深度学习逐渐占据了主导地位。虽然 SVM 的应用范围缩小,但其理论价值和某些特定场景下的优势,仍使其在机器学习历史中占据重要地位。

英文版

Support Vector Machines (SVMs): From Analytical Solutions to Modern Relevance


What is a Support Vector Machine (SVM)?

A Support Vector Machine (SVM) is a classical supervised learning algorithm primarily used for classification and regression tasks. It excels in small datasets and high-dimensional spaces. The key idea of SVM is to find the optimal hyperplane that separates data points from two classes while maximizing the margin between them.

Given a binary classification problem with a dataset ( D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N ), where ( x i ∈ R d x_i \in \mathbb{R}^d xiRd ) represents the input features and ( y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{1,+1} ) represents the class labels, SVM seeks a hyperplane defined by:

w T x + b = 0 , w^T x + b = 0, wTx+b=0,

that maximizes the margin between the two classes. This optimization problem can be expressed as:

min ⁡ w , b 1 2 ∥ w ∥ 2 s.t.  y i ( w T x i + b ) ≥ 1 , ∀ i . \min_{w, b} \frac{1}{2} \|w\|^2 \quad \text{s.t. } y_i(w^T x_i + b) \geq 1, \forall i. w,bmin21w2s.t. yi(wTxi+b)1,i.


The Role of Kernels

One of the most powerful aspects of SVM is the kernel trick, which enables the algorithm to work efficiently in higher-dimensional spaces without explicitly computing the transformation. Kernels allow SVM to find a separating hyperplane even for data that is not linearly separable in the original feature space.

A kernel function ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ) implicitly defines a mapping ( ϕ ( x ) \phi(x) ϕ(x) ) from the input space to a high-dimensional feature space:

K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) . K(x_i, x_j) = \phi(x_i)^T \phi(x_j). K(xi,xj)=ϕ(xi)Tϕ(xj).

Common kernel functions include:

  • Linear kernel: ( K ( x i , x j ) = x i T x j K(x_i, x_j) = x_i^T x_j K(xi,xj)=xiTxj )
  • Polynomial kernel: ( K ( x i , x j ) = ( x i T x j + c ) d K(x_i, x_j) = (x_i^T x_j + c)^d K(xi,xj)=(xiTxj+c)d )
  • Gaussian (RBF) kernel: ( K ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(2σ2xixj2) )

The dual form of the SVM optimization problem, relying only on ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ), is expressed as:

max ⁡ α ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) , \max_{\alpha} \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i, x_j), αmaxi=1Nαi21i=1Nj=1NαiαjyiyjK(xi,xj),

s.t.  0 ≤ α i ≤ C , ∑ i = 1 N α i y i = 0. \text{s.t. } 0 \leq \alpha_i \leq C, \sum_{i=1}^N \alpha_i y_i = 0. s.t. 0αiC,i=1Nαiyi=0.

Here, ( α \alpha α ) represents Lagrange multipliers, and ( C C C ) is a regularization parameter.


Analytical Solutions in SVM

For kernel-based SVMs, the kernel matrix ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ) has an analytical form, which simplifies gradient computation during optimization. The gradient of the dual objective function with respect to ( α i \alpha_i αi ) is:

∂ L ( α ) ∂ α i = 1 − ∑ j = 1 N α j y i y j K ( x i , x j ) . \frac{\partial L(\alpha)}{\partial \alpha_i} = 1 - \sum_{j=1}^N \alpha_j y_i y_j K(x_i, x_j). αiL(α)=1j=1NαjyiyjK(xi,xj).

This closed-form computation eliminates the need for complex numerical approximations, enabling faster training, especially in small-scale problems.


Limitations of SVM

Despite its effectiveness, SVM has several drawbacks that limit its use in modern machine learning:

  1. High Computational Complexity:
    The kernel matrix ( K K K ) is of size ( N × N N \times N N×N ), where ( N N N ) is the number of samples. Both storage and computation become infeasible for large datasets, as the complexity can grow up to ( O ( N 3 ) O(N^3) O(N3) ).

  2. Scaling Challenges:
    SVM struggles with scalability in large datasets, and multi-class problems often require training multiple classifiers (e.g., one-vs-one or one-vs-all approaches).

  3. Hyperparameter Sensitivity:
    The performance of SVM heavily depends on the choice of kernel function, kernel parameters (e.g., ( σ \sigma σ ) in the RBF kernel), and the regularization parameter ( C C C ). Finding optimal values can be computationally expensive.

  4. Feature Engineering Dependence:
    Unlike modern deep learning models, SVM requires manual feature extraction, making it less effective in tasks like image recognition or natural language processing where raw data can be highly unstructured.


Why SVM Is Replaced by Deep Learning

The rise of deep learning has largely overshadowed SVM due to several key advantages:

  1. Automatic Feature Learning:
    Deep neural networks can automatically extract features from raw data through their layered architecture, removing the need for manual engineering.

  2. Scalability:
    Deep learning models scale effectively with data and hardware, handling millions or billions of samples with ease.

  3. Performance on Unstructured Data:
    Tasks like image, text, and speech processing are dominated by deep learning, thanks to architectures like CNNs, RNNs, and Transformers.

  4. End-to-End Learning:
    Deep learning models can learn directly from input to output, optimizing the entire pipeline jointly, while SVM often requires additional preprocessing or post-processing.


Applications and Future of SVM

Despite its limitations, SVM remains relevant in specific contexts:

  • Small Datasets: SVM outperforms deep learning when data is scarce.
  • High-Dimensional Spaces: For high-dimensional datasets like text classification or gene expression analysis, SVM is still competitive.
  • Online Learning: Variants like online kernel SVMs are suitable for dynamic and streaming data.

Conclusion

SVM has been a cornerstone of classical machine learning, offering a powerful combination of theoretical rigor and practical effectiveness. However, the growing complexity of data and tasks in the deep learning era has shifted the focus toward models that are more flexible and scalable. Nevertheless, SVM’s analytical solutions and efficiency in certain scenarios ensure its place as a valuable tool in the machine learning toolkit.

实例:使用高斯核计算梯度

在支持向量机(SVM)的对偶问题中,核函数矩阵 ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ) 的解析形式是关键所在。解析形式指的是核函数的数学表达式能够直接用于计算,而无需显式构造高维特征映射 ( ϕ ( x ) \phi(x) ϕ(x) )。这使得目标函数关于拉格朗日乘子 ( α \alpha α ) 的梯度能够快速计算,从而大大加速优化过程。


SVM对偶问题的目标函数

SVM 的对偶形式的目标函数为:

L D ( α ) = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) , L_D(\alpha) = \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i, x_j), LD(α)=i=1Nαi21i=1Nj=1NαiαjyiyjK(xi,xj),

其中:

  • ( α i \alpha_i αi ) 是对应样本的拉格朗日乘子。
  • ( y i , y j ∈ { − 1 , + 1 } y_i, y_j \in \{-1, +1\} yi,yj{1,+1} ) 是样本的类别标签。
  • ( K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i, x_j) = \phi(x_i)^T \phi(x_j) K(xi,xj)=ϕ(xi)Tϕ(xj) ) 是核函数,用于计算样本在高维空间的内积。

为了优化 ( L D ( α ) L_D(\alpha) LD(α) ),我们需要计算其关于 ( α k \alpha_k αk ) 的梯度 ( ∂ L D ∂ α k \frac{\partial L_D}{\partial \alpha_k} αkLD )。


梯度的解析解

对 ( L D ( α ) L_D(\alpha) LD(α) ) 求导,得到:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k K ( x i , x k ) . \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k K(x_i, x_k). αkLD=1i=1NαiyiykK(xi,xk).

解析解的计算依赖于以下几点:

  1. 核函数的直接计算
    核函数 ( K ( x i , x k ) K(x_i, x_k) K(xi,xk) ) 根据其定义直接计算,例如:

    • 线性核:( K ( x i , x k ) = x i T x k K(x_i, x_k) = x_i^T x_k K(xi,xk)=xiTxk )。
    • 多项式核:( K ( x i , x k ) = ( x i T x k + c ) d K(x_i, x_k) = (x_i^T x_k + c)^d K(xi,xk)=(xiTxk+c)d )。
    • 高斯核:( K ( x i , x k ) = exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) K(x_i, x_k) = \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right) K(xi,xk)=exp(2σ2xixk2) )。
  2. 核矩阵的预计算
    在优化开始前,核函数矩阵 ( K K K ) 可以预先计算并存储,这使得每次梯度计算只需简单的矩阵操作,而无需重复计算核值。

因此,梯度计算公式可以表示为:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k K i k , \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k K_{ik}, αkLD=1i=1NαiyiykKik,

其中 ( K i k = K ( x i , x k ) K_{ik} = K(x_i, x_k) Kik=K(xi,xk) ) 是核矩阵中的第 ( i , k i, k i,k ) 元素。


优化的意义

由于梯度的解析解形式简单且依赖核矩阵的线性运算,这种方法显著减少了计算复杂度:

  1. 快速梯度计算:无需显式计算高维特征映射,节省内存和计算时间。
  2. 优化过程效率高:梯度可以直接用于梯度下降或二次规划算法中的更新步骤,加速对偶问题的求解。

实例:使用高斯核计算梯度

假设使用高斯核 ( K ( x i , x k ) = exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) K(x_i, x_k) = \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right) K(xi,xk)=exp(2σ2xixk2) ),
则梯度公式为:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) . \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right). αkLD=1i=1Nαiyiykexp(2σ2xixk2).

在实际计算中:

  1. 预先计算并存储所有 ( ∥ x i − x k ∥ 2 \|x_i - x_k\|^2 xixk2 ) 值,构建核矩阵 ( K K K )。
  2. 每次更新时,只需利用核矩阵的第 ( k k k ) 列与当前 ( α \alpha α ) 值做加权求和即可,计算复杂度为 ( O ( N ) O(N) O(N) )。

总结

通过核函数矩阵的解析形式,SVM 的对偶问题的目标函数梯度可以高效计算。这种方法不仅避免了复杂的数值优化过程,还显著提高了算法在高维空间中的效率。解析解是 SVM 在许多小规模或高维数据场景中表现优异的重要原因之一。

Example: Gradient Calculation with Gaussian Kernel

In the dual formulation of Support Vector Machines (SVM), the kernel matrix ( K ( x i , x j ) K(x_i, x_j) K(xi,xj) ) plays a crucial role. The closed-form expression of the kernel function allows us to compute the gradient of the objective function with respect to the Lagrange multipliers ( α \alpha α ) quickly, without explicitly constructing the high-dimensional feature mapping ( ϕ ( x ) \phi(x) ϕ(x) ). This makes the optimization process much faster and more efficient.


Dual Formulation of SVM’s Objective Function

The objective function in the dual form of SVM is:

L D ( α ) = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) , L_D(\alpha) = \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i, x_j), LD(α)=i=1Nαi21i=1Nj=1NαiαjyiyjK(xi,xj),

where:

  • ( α i \alpha_i αi ) are the Lagrange multipliers associated with the samples.
  • ( y i , y j ∈ { − 1 , + 1 } y_i, y_j \in \{-1, +1\} yi,yj{1,+1} ) are the class labels of the samples.
  • ( K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i, x_j) = \phi(x_i)^T \phi(x_j) K(xi,xj)=ϕ(xi)Tϕ(xj) ) is the kernel function, which computes the inner product of the samples in the high-dimensional space.

To optimize ( L D ( α ) L_D(\alpha) LD(α) ), we need to compute the gradient with respect to ( α k \alpha_k αk ):

∂ L D ∂ α k . \frac{\partial L_D}{\partial \alpha_k}. αkLD.


Gradient’s Closed-Form Solution

Differentiating ( L D ( α ) L_D(\alpha) LD(α) ) with respect to ( α k \alpha_k αk ) gives:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k K ( x i , x k ) . \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k K(x_i, x_k). αkLD=1i=1NαiyiykK(xi,xk).

The closed-form expression for the gradient depends on the following factors:

  1. Direct computation of the kernel function:
    The kernel function ( K ( x i , x k ) K(x_i, x_k) K(xi,xk) ) is computed directly based on its definition, for example:

    • Linear kernel: ( K ( x i , x k ) = x i T x k K(x_i, x_k) = x_i^T x_k K(xi,xk)=xiTxk ).
    • Polynomial kernel: ( K ( x i , x k ) = ( x i T x k + c ) d K(x_i, x_k) = (x_i^T x_k + c)^d K(xi,xk)=(xiTxk+c)d ).
    • Gaussian kernel: ( K ( x i , x k ) = exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) K(x_i, x_k) = \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right) K(xi,xk)=exp(2σ2xixk2) ).
  2. Pre-computation of the kernel matrix:
    The kernel matrix ( K K K ) can be precomputed and stored before optimization starts, so that each gradient calculation only requires simple matrix operations, avoiding the need to repeatedly compute the kernel values.

Therefore, the gradient with respect to ( α k \alpha_k αk ) is:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k K i k , \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k K_{ik}, αkLD=1i=1NαiyiykKik,

where ( K i k = K ( x i , x k ) K_{ik} = K(x_i, x_k) Kik=K(xi,xk) ) is the element in the kernel matrix corresponding to the pair ( ( x i , x k ) (x_i, x_k) (xi,xk) ).


Significance of the Optimization

Because the gradient has a closed-form expression and depends on the kernel matrix, the optimization process becomes significantly more efficient:

  1. Fast gradient computation: There is no need to explicitly compute high-dimensional feature mappings. This saves memory and computational time.
  2. Efficient optimization: The gradient can be directly used in gradient-based methods, such as gradient descent or quadratic programming, to update the Lagrange multipliers ( α \alpha α ), speeding up the solution of the dual problem.

Example: Gradient Calculation with Gaussian Kernel

Suppose we are using a Gaussian kernel, ( K ( x i , x k ) = exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) K(x_i, x_k) = \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right) K(xi,xk)=exp(2σ2xixk2) ), the gradient formula becomes:

∂ L D ∂ α k = 1 − ∑ i = 1 N α i y i y k exp ⁡ ( − ∥ x i − x k ∥ 2 2 σ 2 ) . \frac{\partial L_D}{\partial \alpha_k} = 1 - \sum_{i=1}^N \alpha_i y_i y_k \exp\left(-\frac{\|x_i - x_k\|^2}{2\sigma^2}\right). αkLD=1i=1Nαiyiykexp(2σ2xixk2).

In practice:

  1. The squared Euclidean distances ( ∥ x i − x k ∥ 2 \|x_i - x_k\|^2 xixk2 ) can be precomputed and stored, allowing us to construct the kernel matrix ( K K K ).
  2. Each time we update the ( α k \alpha_k αk ) values, we only need to perform a weighted sum over the kernel matrix columns, which has a computational complexity of ( O ( N ) O(N) O(N) ).

Conclusion

Thanks to the closed-form expression of the kernel matrix, the gradient of the objective function in the dual form of SVM can be computed efficiently. This avoids the need for complicated numerical optimization procedures, making SVM highly efficient, particularly in small- to medium-sized or high-dimensional data scenarios. The closed-form solution for gradient calculation is one of the key reasons why SVMs perform well in various applications, especially with non-linear decision boundaries.

后记

2024年12月1日22点01分于上海,在GPT4o大模型辅助下完成。

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

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

相关文章

HTML5系列(5)-- SVG 集成详解

前端技术探索系列:HTML5 SVG 集成详解 🎨 开篇寄语 👋 前端开发者们, 在前五篇文章中,我们探讨了 HTML5 的多个特性。今天,让我们深入了解 SVG 的魅力,看看如何创建可缩放的矢量图形。 一、…

变点问题的公式推导

背景与关键定义 变点检测问题 变点检测的目标是在给定的观测序列 y 1 , y 2 , … , y T y_1, y_2, \dots, y_T y1​,y2​,…,yT​ 中,找到一个或多个点(变点),使得每段子序列(即变点划分的区间)能被一个较…

使用 useMemo 和 React.memo 优化 React 组件渲染

在 React 中,性能优化是一个重要的主题,特别是在复杂的组件树中。本文将演示如何在同一个父组件中使用 useMemo 和 React.memo 来优化子组件的渲染。 1. 组件结构 创建一个父组件,包含两个子组件: MemoChild:使用 R…

解决github网络慢的问题

前言 本文采用替换host的方式来加速github的git请求,主要我自己用来备份的懒人方式,不然每次都要手动修改hosts文件,skrskrskr… 一、获取到可用的ip 先到这个网站查询到低延迟的ip 站长工具:https://ping.chinaz.com/ 第2步&…

vue3【实战】多页签【组件封装】PageTabs (含右键快捷菜单组件封装 Contextmenu -- 关闭其他页签,关闭所有页签)

效果预览 技术方案 vue3 ( vite | TS | vueUse | AutoImport | pinia) Element Plus UnoCSS 技术要点 需开启 pinia 持久化右键菜单组件借助了 Element Plus 的样式 代码实现 src/components/PageTabs.vue <script setup lang"ts"> import { usePageTabsSto…

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符&#xff0c;表示非数字//4. \w等价于[…

java的几种排序算法(详细)

冒泡排序&#xff08;Bubble Sort&#xff09; 基本原理&#xff1a; 冒泡排序是一种简单的比较排序算法。它重复地走访要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也…

vue项目env文件的使用(vue cli2和vue cli3)

Vue CLI 2 环境 在 Vue CLI 2 中&#xff0c;需要安装 dotenv 包来加载和使用环境变量。 步骤&#xff1a; 安装 dotenv&#xff1a;首先安装 dotenv 包 npm install dotenv --save创建 .env 文件&#xff1a;在项目的根目录下创建一个 .env 文件&#xff0c;并在其中定义你的…

全面解析 Transformer:改变深度学习格局的神经网络架构

目录 一、什么是 Transformer&#xff1f; 二、Transformer 的结构解析 1. 编码器&#xff08;Encoder&#xff09; 2. 解码器&#xff08;Decoder&#xff09; 3. Transformer 模型结构图 三、核心技术&#xff1a;注意力机制与多头注意力 1. 注意力机制 2. 多头注意力&…

使用YOLO系列txt目标检测标签的滑窗切割:批量处理图像和标签的实用工具

使用YOLO系列txt目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具 使用YOLO的TXT目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具背景1. 代码概述2. 滑窗切割算法原理滑窗切割步骤&#xff1a;示例&#xff1a; 3. **代码实现**1. **加载标签…

Java ArrayList 详解

Java ArrayList 详解 ArrayList 是 Java 集合框架&#xff08;Collection Framework&#xff09;中最常用的类之一&#xff0c;是一种基于动态数组的数据结构&#xff0c;属于 List 接口的实现类。它允许存储重复的元素&#xff0c;有序&#xff0c;支持随机访问&#xff0c;且…

springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码

springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码 基于springboot(可改ssm)htmlvue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&…

Rust学习笔记_13——枚举

Rust学习笔记_10——守卫 Rust学习笔记_11——函数 Rust学习笔记_12——闭包 枚举 文章目录 枚举1. 定义1.1 无值变体1.2 有值变体1.3 枚举与泛型的结合 2. 使用2.1 和匹配模式一起使用2.2 枚举作为类型别名 3. 常用枚举类型 在Rust编程语言中&#xff0c;枚举&#xff08;enum…

容器运行应用及Docker命令

文章目录 一、使用容器运行Nginx应用1_使用docker run命令运行Nginx应用1 观察下载容器镜像过程2 观察容器运行情况 2_访问容器中运行的Nginx服务1 确认容器IP地址2 容器网络说明3 使用curl命令访问 二、Docker命令1_Docker命令获取帮助方法2_Docker官网提供的命令说明3_docker…

深入浅出:php-学习入门全攻略

文章目录 1. 为什么选择 PHP&#xff1f;2. 安装 PHP 环境2.1 Windows 系统安装步骤 1&#xff1a;下载 PHP步骤 2&#xff1a;解压并配置步骤 3&#xff1a;配置环境变量步骤 4&#xff1a;验证安装 2.2 Mac 系统安装步骤 1&#xff1a;使用 Homebrew 安装步骤 2&#xff1a;验…

【热门主题】000075 探索嵌入式硬件设计的奥秘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

数据分析(一): 掌握STDF 掌握金钥匙-码农切入半导体的捷径

中国的半导体行业必然崛起&#xff01;看清这个大势&#xff0c;就会有很多机会。 今天&#xff0c;我们一起来了解一下半导体行业的一朵金花&#xff1a;STDF。 实际上这只是一种文件格式&#xff0c;但是当你熟练掌握解析这种文件的时候&#xff0c;你就已经打开在这个基础…

PostgreSQLt二进制安装-contos7

1、安装依赖 yum install -y gcc readline readline-devel zlib-devel net-tools perl wget numactl libicu-devel bison flex openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel openldap openldap-devel 2、创建目录 mkdir -p /data/postgresql/{…

Latex转word(docx)或者说PDF转word 一个相对靠谱的方式

0. 前言 投文章过程中总会有各种各样的要求&#xff0c;其中提供word格式的手稿往往是令我头疼的一件事。尤其在多公式的文章中&#xff0c;其中公式转换是一个头疼的地方&#xff0c;还有很多图表&#xff0c;格式等等&#xff0c;想想就让人头疼欲裂。实践中摸索出一条相对靠…

AWS创建ec2实例并连接成功

aws创建ec2实例并连接 aws创建ec2并连接 1.ec2创建前准备 首先创建一个VPC隔离云资源并且有公有子网 2.创建EC2实例 1.启动新实例或者创建实例 2.创建实例名 3.选择AMI使用linux(HVM) 4.选择实例类型 5.创建密钥对下载到本地并填入密钥对名称 6.选择自己创建的VPC和公有子网…