返回

手撕SVM,揭开间隔、对偶、KKT条件的面纱

人工智能

在机器学习的浩瀚海洋中,支持向量机(SVM)犹如一艘破浪前行的巨轮,以其强大的分类能力著称。本文将化身“手撕高手”,一层一层揭开SVM的神秘面纱,从间隔、对偶到KKT条件,为你奉上详细而生动的推导过程。

01 间隔的奥秘

SVM算法的核心思想在于寻找一个超平面,将不同类别的样本点分隔开来。这个超平面与最近的样本点之间的距离被称为间隔,是衡量分类器性能的关键指标。

线性可分情况下的间隔推导

设数据点为(xi, yi),其中xi∈Rn,yi∈{-1, 1}。超平面方程为w^Tx+b=0。则点(xi, yi)到超平面的距离为:

d_i = |w^Tx_i + b| / ||w||

间隔的优化目标是最大化d_i,即最小化||w||。

非线性可分情况下的间隔推导

当数据点线性不可分时,可以通过引入松弛变量引入软间隔的概念,允许部分点被错误分类。

引入松弛变量ξ_i后,优化目标变为:

min_w,b,ξ 1/2||w||^2 + CΣξ_i

其中,C为惩罚参数,控制松弛变量的权重。

02 对偶的转换

SVM算法的另一个重要技巧是采用对偶形式求解。对偶形式将原问题的目标函数和约束条件转化为新的约束条件和目标函数,通常能简化问题的求解。

对偶形式的推导

引入拉格朗日乘子α_i≥0后,拉格朗日函数为:

L(w,b,α) = 1/2||w||^2 + CΣξ_i - Σα_i(y_i(w^Tx_i + b) - 1 + ξ_i)

对w, b, ξ_i求偏导,并令其为0,得:

w = Σα_iyi xi
Σα_i = 0
α_i(y_i(w^Tx_i + b) - 1 + ξ_i) = 0

再将w, b代回拉格朗日函数,得:

max_α Σα_i - 1/2ΣΣα_iα_j y_iy_j x_i^Tx_j

约束条件为:

0 ≤ α_i ≤ C
Σα_i y_i = 0

03 KKT条件的诠释

对偶问题求解的关键在于KKT条件。KKT条件由三部分组成:

  1. 原始约束条件 :α_i≥0, y_i(w^Tx_i + b) - 1 + ξ_i ≥0。
  2. 对偶约束条件 :Σα_i = 0。
  3. 互补松弛条件 :α_i(y_i(w^Tx_i + b) - 1 + ξ_i) = 0。

KKT条件提供了一系列条件,用于检验解是否满足最优性条件。

实例应用:手写数字识别

SVM广泛应用于各种分类任务,例如手写数字识别。我们以MNIST数据集为例,展示SVM的强大分类能力。

import numpy as np
import svm

# 加载MNIST数据集
X_train, y_train, X_test, y_test = ...

# 训练SVM模型
model = svm.SVC()
model.fit(X_train, y_train)

# 评估模型性能
accuracy = model.score(X_test, y_test)

print("SVM分类精度:", accuracy)

通过对SVM算法的深入解析和实例应用,我们不仅领略了其精妙的数学推导,更体会了其强大的分类性能。在后续的文章中,我们将继续探索SVM的更多奥秘,带你解锁机器学习的无限潜力。