支持向量机(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 xi∈Rd ) 是输入特征,( 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,bmin21∥w∥2s.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σ2∥xi−xj∥2) )
通过核函数,优化问题的目标函数转化为仅依赖于核函数矩阵 ( 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=1∑Nαi−21i=1∑Nj=1∑Nα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≤αi≤C,i=1∑Nα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). ∂αi∂L(α)=1−j=1∑NαjyiyjK(xi,xj).
这种封闭解的优势在于避免了复杂的数值微分计算,从而显著加快了模型的训练过程,尤其是在小规模数据集上。关于具体例子,请往下翻到:“实例:使用高斯核计算梯度”部分。
SVM 的局限性
虽然 SVM 曾经是机器学习的主力工具,但其在应用中也存在一些局限性:
-
计算复杂度高:
当样本数量 ( 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) )(如在求解二次规划问题时)。 -
缺乏扩展性:
SVM 在处理大规模数据或高维数据时效率较低,尤其在需要多类别分类任务时,往往需要训练多个二分类器进行组合(如一对多、一对一方法)。 -
超参数调优困难:
核函数的选择、核参数(如高斯核中的 ( σ \sigma σ ))和正则化参数 ( C C C ) 的调优都需要较多的经验和计算资源。 -
无法直接处理非结构化数据:
SVM 需要手工设计特征,无法像深度学习那样从原始数据中自动提取特征。
深度学习时代:SVM 为何逐渐退出舞台?
随着数据量的增大和计算资源的提升,深度学习逐渐取代 SVM 成为主流算法。其优势主要体现在以下几个方面:
-
自动特征学习:
深度神经网络能够通过多层非线性结构从数据中自动提取特征,无需人工干预,而 SVM 则依赖于预定义的特征。 -
扩展性更强:
深度学习算法可以轻松扩展到数百万甚至数十亿样本的数据集,而 SVM 的训练复杂度在大规模数据集下难以接受。 -
非结构化数据的处理能力:
深度学习在图像、文本、语音等非结构化数据上的表现远优于 SVM。 -
多任务学习和端到端训练:
深度学习模型可以同时优化多个目标,并能直接从输入到输出进行端到端训练,而 SVM 通常需要额外的后处理步骤。
SVM 的应用与未来
尽管 SVM 在某些场景中被深度学习取代,但它仍然在以下领域中有着重要应用:
- 小样本问题:当数据量有限时,SVM 的泛化能力优于深度学习。
- 高维数据分类:在文本分类、基因数据分析等高维问题中,SVM 表现依然强劲。
- 在线学习: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 xi∈Rd ) 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,bmin21∥w∥2s.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σ2∥xi−xj∥2) )
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=1∑Nαi−21i=1∑Nj=1∑Nα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≤αi≤C,i=1∑Nα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). ∂αi∂L(α)=1−j=1∑Nα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:
-
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) ). -
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). -
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. -
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:
-
Automatic Feature Learning:
Deep neural networks can automatically extract features from raw data through their layered architecture, removing the need for manual engineering. -
Scalability:
Deep learning models scale effectively with data and hardware, handling millions or billions of samples with ease. -
Performance on Unstructured Data:
Tasks like image, text, and speech processing are dominated by deep learning, thanks to architectures like CNNs, RNNs, and Transformers. -
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=1∑Nαi−21i=1∑Nj=1∑Nα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} ∂αk∂LD )。
梯度的解析解
对 ( 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). ∂αk∂LD=1−i=1∑NαiyiykK(xi,xk).
解析解的计算依赖于以下几点:
-
核函数的直接计算:
核函数 ( 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σ2∥xi−xk∥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}, ∂αk∂LD=1−i=1∑Nα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 ) 元素。
优化的意义
由于梯度的解析解形式简单且依赖核矩阵的线性运算,这种方法显著减少了计算复杂度:
- 快速梯度计算:无需显式计算高维特征映射,节省内存和计算时间。
- 优化过程效率高:梯度可以直接用于梯度下降或二次规划算法中的更新步骤,加速对偶问题的求解。
实例:使用高斯核计算梯度
假设使用高斯核 ( 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σ2∥xi−xk∥2) ),
则梯度公式为:
∂ 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). ∂αk∂LD=1−i=1∑Nαiyiykexp(−2σ2∥xi−xk∥2).
在实际计算中:
- 预先计算并存储所有 ( ∥ x i − x k ∥ 2 \|x_i - x_k\|^2 ∥xi−xk∥2 ) 值,构建核矩阵 ( K K K )。
- 每次更新时,只需利用核矩阵的第 ( 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=1∑Nαi−21i=1∑Nj=1∑Nα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}. ∂αk∂LD.
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). ∂αk∂LD=1−i=1∑NαiyiykK(xi,xk).
The closed-form expression for the gradient depends on the following factors:
-
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σ2∥xi−xk∥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}, ∂αk∂LD=1−i=1∑Nα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:
- Fast gradient computation: There is no need to explicitly compute high-dimensional feature mappings. This saves memory and computational time.
- 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σ2∥xi−xk∥2) ), 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). ∂αk∂LD=1−i=1∑Nαiyiykexp(−2σ2∥xi−xk∥2).
In practice:
- The squared Euclidean distances ( ∥ x i − x k ∥ 2 \|x_i - x_k\|^2 ∥xi−xk∥2 ) can be precomputed and stored, allowing us to construct the kernel matrix ( K K K ).
- 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大模型辅助下完成。
相关文章:
支持向量机(SVM)的解析与应用:从封闭解到时代演变 (中英双语)
中文版 支持向量机(SVM)的解析与应用:从封闭解到时代演变 什么是支持向量机(SVM)? 支持向量机(Support Vector Machine, SVM)是一种经典的监督学习算法,用于解决分类和…...
Linux 密码学的基本知识与应用技术
一、基本知识 (一)加密算法 • 对称加密算法 • 原理:对称加密使用相同的密钥进行加密和解密。例如,在Linux中常用的AES(高级加密标准)算法,发送方和接收方都需要持有相同的密钥。假设要加密…...
【力扣】2094.找出3为偶数
思路 方法一:使用Set集合 1.首先是三层for循环,遍历,并且遇到不满足的情况,便跳过,继续计算。不如前导为0,以及遍历同一个数组下标的情况 2.使用Set集合来确保答案是唯一的,使用桶来标记也是可以的 3.但是…...
【信息系统项目管理师】【综合知识】【备考知识点】第十四章 项目沟通管理
【移动端浏览】☞【信息系统项目管理师】第十四章 项目沟通管理 第十四章 项目沟通管理 (项目沟通管理)定义 项目沟通管理是确保及时、正确地产生、收集、分发、存储和最终处理项目信息所需的过程。 (项目沟通管理)组成部分 (…...
CTFshow黑盒测试刷题
web380 先扫目录 打开 报错了 先用伪协议去查看源码 之前扫到有flag.php 访问一下 就得到flag了 web381 查看一下源码 点击第三个css 藏在目录里面 web382 跟上题一样 不过访问这个页面是一个登录框 试一下弱口令 最后是admin admin888 就进去了 web383 进入这个后台 …...
抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—
抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…...
windows文件下换行, linux上不换行 解决CR换行符替换为LF notepad++
html文件是用回车换行的,在windows电脑上,显示正常。 文件上传到linux服务器后,文件不换行了。只有一行。而且相关js插件也没法正常运行。 用notepad查看,显示尾部换行符,是CR,这就是原因。CR是不被识别的。…...
服务器数据恢复—硬盘掉线导致热备盘同步失败的RAID5阵列数据恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障&#…...
活着就好20411205
5号亲爱的朋友们,大家早上好!🌞 今天是5号,星期四,2024年12月的第五天,同时也是第49周的第四天,农历甲辰[龙]年十一月初一日。在这晨曦初露的美好时刻,愿第一缕柔和的阳光悄悄探进你…...
JDK8 下载与安装
下载安装包 官网下载 官网 找到适合的版本: 网盘下载 网盘链接 提取码: 6666 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装路径不要有中文或者特殊符号如空格等. 更改安装路径: 跳出一个页面, 安装公共 JRE: 安装完成: 安装目录: 安装的公共 JRE: JDK 里面的 JR…...
基于MATLAB的信号处理工具:信号分析器
信号(或时间序列)是与特定时间相关的一系列数字或测量值,不同的行业和学科将这一与时间相关的数字序列称为信号或时间序列。生物医学或电气工程师会将其称为信号,而统计学家或金融定量分析师会使用时间序列这一术语。例如…...
Docker Compose 和 Kubernetes 之间的区别?
一、简介🎀 1.1 Docker Compose Docker Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,可以管理多个 Docker 容器组成一个应用。你只需定义一个 YAML 格式的配置文件 docker-compose.yml ,即可创建并…...
uniapp远程摄像头流界面上显示
用到的插件:dplayer、hls dplayer官网:dplayer 远程摄像头视频流格式:m3u8 可以用来测试的视频流(有的用不了,多试几个,找可以用的):m3u8测试视频 安装hls,任选其一 npm…...
写译 Essay | Translation
单词 参考上篇 总结写译热点单词 | 50篇文章整理 | 手敲自用-CSDN博客 文化类词汇: 包括传统节日及相关活动,如春节(Spring Festival)、中秋节(Mid-Autumn Festival)等。 涵盖中国特色艺术和工艺品,如京剧(Peking opera)、中国画(traditi…...
知乎大数据开发面试题及参考答案
Java 两个线程之间是怎么通信的,属于哪种机制? 在 Java 中,线程间通信主要有以下几种方式: 共享变量:线程可以通过访问共享变量来进行通信。例如,一个线程修改一个共享的成员变量,另一个线程读取这个变量的值。但是这种方式需要注意线程安全问题。如果多个线程同时访问和…...
C# 绘制GDI红绿灯控件
C# 绘制GDI红绿灯控件 using System; using System.Windows.Forms; using System.Drawing;public class TrafficLightControl : Control {protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics g e.Graphics;g.SmoothingMode System.Drawing.Drawin…...
网络安全-使用HTTP动词篡改的认证旁路
这个东西去年的安全扫描都没有,今天就扫出来了,非常奇怪的一个东西。好吧,找资料找原因。结果可能应为搜索名词的原因,这个问题在群友的帮助下解决了。 在我理解中servlet只有post和get方法,然后结果怎么出来这么多奇…...
多种MyBatis写法(数据库操作)
MyBatis,这个从iBatis演变而来的Java持久层框架,凭借其强大的功能和性能,早已成为企业级应用的首选。本文展示几种MyBatis写法,保证数据库操作既高效又灵活。 1. 批量操作 批量操作是提升数据库操作效率的重要手段。MyBatis提供…...
centos 手动安装libcurl4-openssl-dev库
下载源代码 curl downloadshttps://curl.se/download/ 选择需要下载的版本,我下载的是8.11.0 解压 tar -zxvf curl-8.11.0 查看安装命令 查找INSTALL.md,一般在docs文件夹下 –prefix :指定安装路径(默认安装在/usr/local&…...
C#中的模拟服务器与客户端建立连接
创建一个控制台项目,命名为Server,模拟服务器端。在同一个解决方案下,添加新项目,命名为Client,模拟客户端。在服务器端与客户端之间建立TCP连接,并在客户端发送消息,在服务器端输出。 Server项目具体要求: 1.在Server项目中,用本机端点建立TcpListener对象,进行监…...
论文阅读——Supervised Learning With Quantum-Inspired Tensor Networks
张量网络是高维张量的有效表示,在物理和数学应用中非常成功。我们展示了如何通过使用矩阵乘积状态(张量训练)来参数化用于对图像进行分类的模型,将优化此类网络的算法应用于监督学习任务。对于 MNIST 数据集,我们获得的…...
HTML5系列(11)-- Web 无障碍开发指南
前端技术探索系列:HTML5 Web 无障碍开发指南 ♿ 致读者:构建人人可用的网络 👋 前端开发者们, 今天我们将深入探讨 Web 无障碍开发,学习如何创建一个真正包容、人人可用的网站。让我们一起为更多用户提供更好的网络…...
信号和槽思维脑图+相关练习
将登录框中的取消按钮使用信号和槽的机制,关闭界面。 将登录按钮使用信号和槽连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,当前界面关…...
Scala编程基础:模式匹配、解构赋值与正则表达式
在Scala编程语言中,模式匹配、解构赋值和正则表达式是三个非常强大的特性,它们可以让我们以更简洁、更直观的方式处理数据。本文将通过三个示例,详细解释这些特性的使用方法和背后的原理。 1. 模式匹配与case class 模式匹配是Scala中处理数…...
【大数据技术基础】 课程 第1章 大数据技术概述 大数据基础编程、实验和案例教程(第2版)
第1章 大数据技术概述 1.1 大数据时代 这本书的标题是《大数据时代》,副标题为“生活、工作与思维的大变革”。这本书由维克托迈尔-舍恩伯格(Viktor Mayer-Schnberger)和肯尼斯库克耶(Kenneth Cukier)合著,…...
【基础分析】——宏参数连接
示例1: #include<stdio.h>#define STR1(s) #s#define FUN1(a,b) (int)(a##e##b)int main(int argv, char* agrc[]) {printf(STR1(king...));printf("\n");printf("%d\n", FUN1(2, 3));return 0; } 结果: (注&…...
算法3--二分查找
二分查找 原理经典例题[704. 二分查找](https://leetcode.cn/problems/binary-search/)[34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/)[35. 搜索插入位置](https://leetcode.cn/p…...
【信息系统项目管理师】第7章:项目立项管理 考点梳理
文章目录 7.1 项目建议与立项申请7.2 项目可行性研究7.2.1 可行性研究的内容7.2.2 初步可行性研究7.2.3 详细可行性研究(重点) 7.3 项目评估与决策 【学习建议】本章大概考选择题2分左右,有可能考案例题。论文早年考过。本章知识点比较集中&a…...
帝可得-策略管理
策略管理 需求说明 策略管理主要涉及到二个功能模块,业务流程如下: 新增策略: 允许管理员定义新的策略,包括策略的具体内容和参数(如折扣率)策略分配: 将策略分配给一个或多个售货机。 #mermaid-svg-PSQOJMLJqVGn3W…...
opencv-android编译遇到的相关问题处理
1、opencv-android sdk下载 下载地址:https://opencv.org/releases/ 下载安卓SDK即可 2、解压下载好的SDK 3、导入opencv的SDK到安卓项目中 导入步骤在/OpenCV-android-sdk/sdk/build.gradle文件的注释中写的非常详细,大家可安装官方给出的步骤导入。…...
汽车IVI中控开发入门及进阶(三十六):QML调用蓝牙sdk的架构
Qt/QML本身在做GUI界面工程时,除了各种界面上的按钮、图片、工具条等元素之外,最方便的就是可以通过C++实现界面各种复杂逻辑,而实现上不可避免就需要一些外部库的支持,不管是静态库.a还是动态库.so,比如蓝牙模块。 而QML/C++启动一个蓝牙协议栈SDK作为一个进程,然后启动…...
C++设计模式之外观模式
动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统…...
前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(1)
前言 在这片无边无际的数字海洋中,如何从中提取出有价值的讯息,成为了计算机科学中的一项重要课题。前缀和算法,作为一种巧妙的技术,恰如其名——通过计算序列中各个元素的前缀和,能够为我们提供一种高效的查询方式&a…...
【论文复现】隐式神经网络实现低光照图像增强
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢? 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…...
Secured Finance 推出 TVL 激励计划以及基于 FIL 的稳定币
Secured Finance 是新一代 DeFi 2.0 协议,其正在推出基于 FIL 的稳定币、固定收益市场以及具有吸引力的 TVL 激励计划,以助力 Filecoin 构建更强大的去中心化金融生态体系,并为 2025 年初 Secured Finance 协议代币的推出铺平道路。Secure Fi…...
2024前端框架年度总结报告(二):新生qwik+solid和次新生svelte+Astro对比 -各自盯着前端的哪些个痛点 - 前端的区域发展差异
引言 2024年,前端开发依然是技术领域的热点之一。随着 Web 应用的日益复杂,前端框架的更新换代也加速了。尽管 React、Vue 和 Angular 老牌框架年度总结 等“老牌”框架仍然占据着主流市场,但一些新兴的框架在不断挑战这些“巨头”的地位&am…...
MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
每日速记10道java面试题13-MySQL篇
其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...
关于Chrome自动同步书签的解决办法
前言 并不一定适用所有用户, 目前我在网上搜集了一些资料,也做了一些尝试。 就我个人总结的经验来讲,分享大家以下几种办法: 1.书签同步插件 点击如下🔗: Chrome书签同步https://bm.famend.cn/ …...
江南大学《2024年807自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《江南大学807自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
在VSCode中搭建Python开发环境
在VSCode中搭建Python开发环境 1、安装 首先确保电脑已经安装好Python和VSCode。 2、安装VSCode的Python插件 3、选择python解释器 ctrlshiftP打开VSCode的命令行,输入python: select Interpreter选择合适的python版本。 4、运行代码 在windows下你可以直接使用…...
mac 安装python3和配置环境变量
mac 安装python3和配置环境变量 前言怎样选择python3的版本python3的安装1、去官网下载安装包2、下载完成后直接解压,检查安装是否成功 前言 在学习python的第一步就是安装它和配置他的环境变量,那么选择哪个版本的python你可曾知道,下面就讲解怎样选择…...
微信小程序版小米商城的搭建流程详解!
很多初学微信小程序语法的同学,可能不知道如何布局和搭建一个项目,下面我将讲解初学者如何搭建项目和注意事项。 一、 app.json的配置 {"pages": ["pages/index/index","pages/classification/classification","pag…...
Redis等Spring Cache 框架 实现基于注解的缓存功能
Spring Cache 框架 实现基于注解的缓存功能 底层 基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法 如果缓存没有数据 则通过反射走方法。 概念 缓存 相当于之前的事务处理 同步更改 只是提供了一层抽象 底层可以切换不同的缓存实现 EHCach…...
tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包
tcpdump 是一个网络数据包分析工具,通过捕获并显示网络接口上传输的数据包,帮助用户分析网络流量。 原理:用户态通过 libpcap 库控制数据包捕获,内核态通过网卡驱动获取数据包。 核心功能包括:捕获、过滤和分析数据包…...
【Linux】基础IO_文件系统IO_“一切皆文件”_缓冲区
目录 1. 理解"⽂件" 1-1 狭义理解 1-2 ⼴义理解 1-3 ⽂件操作的归类认知 1-4 系统⻆度 访问文件,需要先打开文件!那么是由谁打开文件??? 操作系统要不要把被打开的文件管理起来? 2. 回顾…...
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写)
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写) 1. 实验要求2. 功能分析3. 模块设计4. 波形图4.1 按键消抖模块4.2 按键控制蜂鸣器模块 5.代码编写5.1 rtl代码5.2 测试代码 6. 代码仿真7. 添加约束文件并分析综合 在上期的内容中&…...
Mnesia(三)
在表中保存复杂数据 Mnesia是被设计用来保存Erlang数据结构的。可以把任意类型的Erlang数据结构保存到Mnesia表中。 -export([init_mnesia_schema/0, start/0]). -export([add_plans/0, get_plan/1]). -include_lib("stdlib/include/qlc.hrl"). -record(shop, {ite…...
ELK的Filebeat
目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考(不要直接拷贝用)多行匹配配置过滤配置最终配置(一、多行匹配、直接读取日志文件、EFK方案&#…...
【WPF中ControlTemplate 与 DataTemplate之间的区别?】
前言 WPF中ControlTemplate 与 DataTemplate之间的区别? 1. 定义: ControlTemplate 是用于定义 WPF 控件的外观和结构的模板。它允许您重新定义控件的视觉表现,而不改变控件的行为。 DataTemplate 是用于定义如何呈现数据对象的模板。它通…...