前言

在机器学习的分类算法体系中,支持向量机(SVM) 是最经典且实用的算法之一。SVM 的核心思想是通过最大化类别间隔寻找最优决策边界,不仅巧妙解决了线性可分场景的分类问题,更通过软间隔、核函数等拓展,成功应对了更复杂的线性不可分数据。基于此,本文将从 SVM 的核心概念出发,系统梳理线性硬间隔、软间隔及非线性 SVM 的原理,结合 MATLAB 数据集,通过 Python 代码实现不同类型 SVM 的构建、评估与可视化,重点探究参数对模型分类效果的影响。

一、支持向量机是什么?

支持向量机(Support Vector Machine,SVM)是一种经典的监督式机器学习算法,主要用于分类任务。核心思想是:在特征空间中找到一个最优超平面,最大化不同类别样本之间的间隔,实现对新的样本的准确分类。
接下来我们介绍一下有关支持向量机的核心概念。

1.超平面

超平面是分隔不同类别样本的决策边界,其可以表达为
w T x + b = 0 \bm{w}^{T}\bm{x}+b=0 wTx+b=0

  • w \bm{w} w:超平面的法向量,决定超平面的方向$
  • b:偏置项,决定超平面的位置
  • x \bm{x} x:输入的特征向量
    数据有多个维度,对于二维数据来说,超平面是一条直线;对于三维数据来说,超平面是一个平面;而对于高维数据来说,超平面则是一个抽象的高维面。

2.间隔(Margin)

间隔是两类样本中距离超平面最近的点到超平面的距离的两倍。SVM的目标就是要找到最大间隔超平面。

  • 样本点到超平面的距离可以表示为:
    M = ∣ g ( x ) ∣ ∣ ∣ w ∣ ∣ = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ M=\frac{|g(x)|}{||\bm{w}||}=\frac{|\bm{w}^{T}\bm{x}+b|}{||\bm{w}||} M=∣∣w∣∣g(x)=∣∣w∣∣wTx+b
    即g(x)的绝对值除以向量 w w w的范数
  • 为了简化计算,SVM对样本标签做标准化处理(正类y=+1,负类y=-1),并且所有样本都满足: y i ( w T x i + b ) > = 1 y_i(w^{T}x_i+b)>=1 yi(wTxi+b)>=1
    因此最近点的距离为 d m i n = 1 ∣ ∣ w ∣ ∣ d_{min}=\frac{1}{||w||} dmin=∣∣w∣∣1
    则总间隔可以表示为 M = 2 d m i n = 2 ∣ ∣ w ∣ ∣ M=2d_{min}=\frac{2}{||w||} M=2dmin=∣∣w∣∣2
    最大化间隔可以等价于最小化 1 2 ∣ ∣ w 2 ∣ ∣ \frac{1}{2}||w^2|| 21∣∣w2∣∣

3.支持向量

距离超平面最近的样本成为支持向量,它们是决定超平面位置的关键。超平面仅由这几个数据点决定,其他样本点对超平面无影响。

4.硬间隔&软间隔

硬间隔要求所有样本必须被完全正确分类,且不能落入间隔区域;而软间隔允许部分样本违反间隔约束。同时,通过"惩罚机制"控制违约程度,从而去平衡"最大间隔"和"分类准确性",可以适应SVM线性不可分数据。

5.对偶问题

利用拉格朗日优化方法可以把最大间隔问题转化为对偶问题。
例如硬间隔SVM的原问题是 m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min_{w,b} \frac{1}{2}||w||^2 minw,b21∣∣w2
s.t. y i ( w T x i + b ) > = 1 y_i(w^Tx_i+b)>=1 yi(wTxi+b)>=1
为了将带约束的优化问题转化为无约束的问题,将引入拉格朗日乘子 a i > = 0 a_i>=0 ai>=0,构造拉格朗日函数:
L p = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i − 1 l a i [ y i ( w T x i + b ) − 1 ] L_p=\frac{1}{2}||w||^2-\sum_{i-1}^la_i[y_i(w^Tx_i+b)-1] Lp=21∣∣w2i1lai[yi(wTxi+b)1]
原问题可等价为"最小化拉格朗日函数L_p",因此对 w w w和b求偏导并令其为0;

  • w w w求偏导:
    ∂ L p ∂ w = w − ∑ i = 1 l a i y i x i = 0 \frac{\partial L_p}{\partial w}=w-\sum_{i=1}^la_iy_ix_i=0 wLp=wi=1laiyixi=0
    w = ∑ i = 1 l a i y i x i w=\sum_{i=1}^la_iy_ix_i w=i=1laiyixi
  • 对b求偏导
    ∂ L p ∂ b = − ∑ i = 1 l a i y i = 0 \frac{\partial L_p}{\partial b}=-\sum_{i=1}^la_iy_i=0 bLp=i=1laiyi=0
    然后将 w = ∑ i = 1 l a i y i x i w=\sum_{i=1}^la_iy_ix_i w=i=1laiyixi ∑ i = 1 l a i y i = 0 \sum_{i=1}^la_iy_i=0 i=1laiyi=0代入 L p L_p Lp,得到对偶问题:
    L D = ∑ i = 1 l a i − 1 2 ∑ i , j = 1 l a i a j y i y j ( x i T x j ) L_D=\sum_{i=1}^la_i-\frac{1}{2}\sum_{i,j=1}^la_ia_jy_iy_j(x_i^Tx_j) LD=i=1lai21i,j=1laiajyiyj(xiTxj)
    L D = ∑ i = 1 l a i − 1 2 a T H a L_D=\sum_{i=1}^la_i-\frac{1}{2}a^THa LD=i=1lai21aTHa(H为核矩阵, H i j = y i y j x i T x j H_{ij}=y_iy_jx_i^Tx_j Hij=yiyjxiTxj
    对偶问题的约束是 ∑ i = 1 l a i y i = 0 且 a i > = 0 \sum_{i=1}^la_iy_i=0 且 a_i>=0 i=1laiyi=0ai>=0
    通过对偶转化,我们将求解w、b转化为求解 a i a_i ai,且对偶问题只涉及 x i T x j x_i^Tx_j xiTxj,可以直接替换为核函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj),实现非线性SVM

二、SVM的分类

1.硬间隔SVM-线性可分

适用于样本完全线性可分的场景,相关公式为:
求解最大化间隔,等价于 m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min _{w,b} \frac{1}{2}||w||^2 minw,b21∣∣w2,(约束 y i ( w T x i + b ) > = 1 y_i(w^Tx_i+b)>=1 yi(wTxi+b)>=1)

  • 对偶问题: L p = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 l a i y i ( w ⋅ x i + b ) + ∑ i = 1 l a i L_p=\frac{1}{2}||w||^2-\sum_{i=1}^la_iy_i(w·x_i+b)+\sum_{i=1}^la_i Lp=21∣∣w2i=1laiyi(wxi+b)+i=1lai
    L D = ∑ i = 1 l a i − 1 2 a T H a ( H i j = y i y j x i T x j ) ) L_D=\sum_{i=1}^la_i-\frac{1}{2}a^THa (H_{ij}=y_iy_jx_i^Tx_j)) LD=i=1lai21aTHa(Hij=yiyjxiTxj)

2.软间隔SVM-线性不可分

引入松弛变量 ξ > = 0 \xi>=0 ξ>=0,允许少量样本违反分类约束,同时加入惩罚项:
m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 l ξ i ) min(\frac{1}{2}||w||^2+C\sum_{i=1}^l\xi_i) min(21∣∣w2+Ci=1lξi)(约束 y i ( w T x i + b ) > = 1 − ξ i , ξ i > = 0 y_i(w^Tx_i+b)>=1-\xi_i,\xi_i>=0 yi(wTxi+b)>=1ξiξi>=0)
其中C为惩罚系数,是“间隔大小”和“分类准确性”的权衡,C越大,对分类错误的惩罚越重,模型容易过拟合;C越小,对分类错误的惩罚越轻,模型容易欠拟合。

  • 对偶问题:
    L p = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 l ξ i − ∑ i − 1 l a i [ y i ( w ⋅ x i + b ) − 1 + ξ i ] − ∑ i − 1 l μ i ξ i L_p=\frac{1}{2}||w||^2+C\sum_{i=1}^l\xi_i-\sum_{i-1}^la_i[y_i(w·x_i+b)-1+\xi_i]-\sum_{i-1}^l\mu_i\xi_i Lp=21∣∣w2+Ci=1lξii1lai[yi(wxi+b)1+ξi]i1lμiξi
    L D = ∑ i = 1 l a i − 1 2 a T H a L_D=\sum_{i=1}^la_i-\frac{1}{2}a^THa LD=i=1lai21aTHa(约束0<= a i a_i ai<=C,and ∑ i = 1 l a i y i = 0 \sum_{i=1}^la_iy_i=0 i=1laiyi=0)

3.非线性SVM

对于非线性可分的数据,SVM通过核函数将低维特征空间的样本映射到高维特征空间,使其在高维空间中线性可分。
支持向量机引入核函数后,权重w、偏置b以及分类函数g(x)的求解公式变化为:
w = ∑ i = 1 l a i y i Φ ( x i ) w=\sum_{i=1}^la_iy_i\Phi(x_i) w=i=1laiyiΦ(xi)

  • Φ ( x i ) \Phi(x_i) Φ(xi):将样本x_i从低维空间映射到高维空间的特征映射函数
    w ⋅ Φ ( x j ) = ∑ i − 1 l a i y i Φ ( x i ) ⋅ Φ ( x j ) = ∑ i = 1 l a i y i K ( x i , x j ) w·\Phi(x_j)=\sum_{i-1}^la_iy_i\Phi(x_i)·\Phi(x_j)=\sum_{i=1}^la_iy_iK(x_i,x_j) wΦ(xj)=i1laiyiΦ(xi)Φ(xj)=i=1laiyiK(xi,xj)
  • 利用核函数 K ( x i , x j ) = Φ ( x i ) ⋅ Φ ( x j ) K(x_i,x_j)=\Phi(x_i)·\Phi(x_j) K(xi,xj)=Φ(xi)Φ(xj),避免了显式计算高维映射 Φ ( x ) \Phi(x) Φ(x)
    b = 1 N s ∑ s ∈ S ( y s − ∑ m ∈ S a m y m Φ ( x m ) ⋅ Φ ( x s ) ) = 1 N ∑ s ∈ S ( y s − ∑ m ∈ S a m y m K ( x m , x s ) b=\frac{1}{N_s}\sum_{s∈S}(y_s-\sum_{m∈S}a_my_m\Phi(x_m)·\Phi(x_s))=\frac{1}{N}\sum_{s∈S}(y_s-\sum_{m∈S}a_my_mK(x_m,x_s) b=Ns1sS(ysmSamymΦ(xm)Φ(xs))=N1sS(ysmSamymK(xm,xs)
    g ( x ) = ∑ i = 1 l a i y i K ( x i , x ) + b g(x)=\sum_{i=1}^la_iy_iK(x_i,x)+b g(x)=i=1laiyiK(xi,x)+b
    以下是三种常见的核函数:
  • 多项式核: K ( x i , x j ) = ( x i ⋅ x j + 1 ) d K(x_i,x_j)=(x_i·x_j+1)^d K(xi,xj)=(xixj+1)d
  • 高斯核: K ( x i , x j ) = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) K(x_i,x_j)=exp(-\frac{||x_i-x_j||^2}{2\sigma^2}) K(xi,xj)=exp(2σ2∣∣xixj2)
  • 双曲正切核: K ( x i , x j ) = t a n h ( κ x i ⋅ x j + c ) K(x_i,x_j)=tanh(\kappa x_i·x_j+c) K(xi,xj)=tanh(κxixj+c)

三、Python代码实现

1.实验一

基于经典的SVM算法,以ex6data1.mat数据集为基础,实现线性硬间隔/软间隔SVM的构建、评估与可视化,并进一步对比了不同惩罚系数C对于软间隔SVM分类效果的影响。
1.导入依赖库

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score

# 解决中文显示和负号问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

2.读取MAT格式的数据集

mat_path = r"D:\ex6data1.mat"
mat_data = loadmat(mat_path)
X = mat_data['X']  # 特征矩阵 (n_samples, n_features)
y = mat_data['y'].ravel()  # 将标签向量转为一维数组
X_vis = X.copy()

3.数据预处理

scaler = StandardScaler() #SVM对特征尺度敏感,先进行标准化,将特征转换为均值为0、方差为1的分布
X_scaled = scaler.fit_transform(X_vis)  # 全量数据归一化

4.构建硬/软间隔SVM模型并评估

#线性硬间隔SVM
#设置C=1e10,惩罚系数极大,是硬间隔SVM,模型不允许任何样本被误分
svm_hard = SVC(kernel='linear', C=1e10, random_state=42)
svm_hard.fit(X_scaled, y)  # 全量数据训练
#线性软间隔SVM(C=1.0),允许少量样本被误分
svm_soft = SVC(kernel='linear', C=1.0, random_state=42)
svm_soft.fit(X_scaled, y)  # 全量数据训练
#模型评估
y_pred_hard = svm_hard.predict(X_scaled) #预测标签
acc_hard = accuracy_score(y, y_pred_hard) #计算分类准确率
y_pred_soft = svm_soft.predict(X_scaled) #预测标签
acc_soft = accuracy_score(y, y_pred_soft) #计算分类准确率

5.定义SVM可视化函数

def plot_svm_boundary(model, X, y, title, ax):
    """绘制SVM分类边界、支持向量和数据点"""
    # 生成网格点
    h = 0.02
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))
    # 预测网格点类别
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    # 绘制决策边界和背景色
    ax.contourf(xx, yy, Z, alpha=0.3, cmap=plt.cm.Paired)
    ax.contour(xx, yy, Z, colors='k', linestyles=['-'], levels=[0])
    # 绘制全量数据点
    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired, edgecolors='k')
    # 标出误分样本(如果有)
    y_pred = model.predict(X)
    mis_idx = np.where(y_pred != y)[0]
    if len(mis_idx) > 0:
        ax.scatter(X[mis_idx, 0], X[mis_idx, 1],
                   s=200, facecolor='none', edgecolor='orange', label='误分样本')
    # 绘制支持向量
    support_vectors = model.support_vectors_
    ax.scatter(support_vectors[:, 0], support_vectors[:, 1],
               s=100, facecolors='none', edgecolors='red', label='支持向量')
    # 设置图表属性
    ax.set_xlabel('特征1(归一化)')
    ax.set_ylabel('特征2(归一化)')
    ax.set_title(title)
    ax.legend(fontsize=8)

6.硬/软间隔SVM可视化

fig_origin, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
plot_svm_boundary(
    svm_hard, X_scaled, y,
    title=f'线性硬间隔SVM(C=1e10)\n准确率:{acc_hard:.4f}',
    ax=ax1
)
plot_svm_boundary(
    svm_soft, X_scaled, y,
    title=f'线性软间隔SVM(C=1.0)\n准确率:{acc_soft:.4f}',
    ax=ax2
)
plt.suptitle('线性硬/软间隔SVM对比(全量数据)', fontsize=14)
plt.tight_layout()
plt.show()

7.不同惩罚系数C的软间隔SVM对比

#不同C值软间隔SVM对比
# 定义指定的4个C
C_list = [0.008, 0.01, 0.5, 1]
svm_multi_c = {}
acc_multi_c = {}
# 批量训练多C值模型(全量数据)
print("\n" + "="*40 + " 多C值模型结果(全量数据) " + "="*40)
for c in C_list:
    model = SVC(kernel='linear', C=c, random_state=42)
    model.fit(X_scaled, y)  # 全量数据训练
    y_pred = model.predict(X_scaled)
    acc = accuracy_score(y, y_pred)
    svm_multi_c[f'C={c}'] = model
    acc_multi_c[f'C={c}'] = acc
    print(f"软间隔SVM(C={c})准确率:{acc:.4f}")
print("="*90)

8.多C值SVM可视化

#不同C值可视化
fig_multi, axes = plt.subplots(2, 2, figsize=(12, 10))
axes = axes.flatten()
# 遍历绘制4个C值的结果
c_keys = list(svm_multi_c.keys())
for idx, c_key in enumerate(c_keys):
    plot_svm_boundary(
        svm_multi_c[c_key], X_scaled, y,
        title=f'软间隔SVM({c_key})\n准确率:{acc_multi_c[c_key]:.4f}',
        ax=axes[idx]
    )
plt.suptitle('多C值对比:线性软间隔SVM(全量数据)', fontsize=14)
plt.tight_layout()
plt.show()

结果:
在这里插入图片描述

  • 硬间隔SVM不允许任何误分,准确率达到1.0,支持向量仅3个,决策边界紧贴样本,模型对数据分布的容错性极低
  • 软间隔允许存在误分样本,准确率为0.9804,支持向量数量较多,决策边界较宽松,允许少量误分
    在这里插入图片描述
  • C越小:对于误分的容忍度越高,边界越宽松,准确地越低,容易欠拟合
  • C越大:对于误分的惩罚越重,边界越严格,准确率越高,容易过拟合

2.实验二

本实验聚焦非显现SVM的核心应用,以ex6data2.mat为数据集,实现以下:

  • 探究高斯核关键参数 γ \gamma γ对分类边界的影响
  • 对比线性核SVM与最优 γ \gamma γ高斯核SVM的分类效果
    1.导入依赖库
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score

# 解决中文显示和负号问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

2.读取MAT格式的数据集

mat_path = r"D:\ex6data2.mat"
mat_data = loadmat(mat_path)

# 提取特征和标签
X = mat_data['X']
y = mat_data['y'].ravel()
X_vis = X.copy()
X_vis = X.copy()

3.数据预处理

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_vis) # 全量数据归一化

4.定义对比的 γ \gamma γ值,训练高斯核SVM

#定义待对比的gamma值
#gamma值选择:0.1110100
gamma_list = [0.1, 1.0, 10.0, 100.0]
# 存储不同gamma的模型和准确率
svm_rbf = {}
acc_rbf = {}

#训练高斯核SVM
print("=" * 40 + " 高斯核SVM(多gamma值)结果 " + "=" * 40)
for gamma in gamma_list:
    # 构建RBF核SVM(C=1.0固定,仅调整gamma)
    model = SVC(kernel='rbf', gamma=gamma, C=1.0, random_state=42)
    model.fit(X_scaled, y)  # 全量数据训练
    y_pred = model.predict(X_scaled)
    acc = accuracy_score(y, y_pred)
    svm_rbf[f'gamma={gamma}'] = model
    acc_rbf[f'gamma={gamma}'] = acc
    print(f"gamma={gamma}:准确率={acc:.4f}")
print("=" * 90)

5.定义高斯核SVM可视化函数

#可视化高斯核分类边界
def plot_rbf_boundary(model, X, y, title, ax):
    """绘制高斯核SVM的非线性分类边界"""
    # 生成高密度网格
    h = 0.01
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))
    # 预测网格点类别(非线性边界)
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    # 绘制非线性决策边界和背景色
    ax.contourf(xx, yy, Z, alpha=0.3, cmap=plt.cm.Paired)
    ax.contour(xx, yy, Z, colors='k', linestyles=['-'], levels=[0])
    # 绘制全量数据点
    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired, edgecolors='k')
    # 设置图表属性
    ax.set_xlabel('特征1(归一化)')
    ax.set_ylabel('特征2(归一化)')
    ax.set_title(title)
    ax.legend(fontsize=8)

6.不同 γ \gamma γ值高斯核SVM可视化

# 创建子图展示不同gamma值对比
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
axes = axes.flatten()
# 遍历绘制4个gamma值的结果
gamma_keys = list(svm_rbf.keys())
for idx, gamma_key in enumerate(gamma_keys):
    plot_rbf_boundary(
        svm_rbf[gamma_key], X_scaled, y,
        title=f'高斯核SVM({gamma_key})\n准确率:{acc_rbf[gamma_key]:.4f}',
        ax=axes[idx]
    )
plt.suptitle('高斯核SVM不同gamma值的非线性分类效果', fontsize=14)
plt.tight_layout()
plt.show()

7.线性核和高斯核SVM对比

#对比线性核vs高斯核
# 训练线性核SVM作为对照
svm_linear = SVC(kernel='linear', C=1.0, random_state=42)
svm_linear.fit(X_scaled, y)
acc_linear = accuracy_score(y, svm_linear.predict(X_scaled))
# 绘制线性核vs最优gamma高斯核对比图
fig_compare, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# 线性核
plot_rbf_boundary(svm_linear, X_scaled, y,
                  title=f'线性核SVM\n准确率:{acc_linear:.4f}', ax=ax1)
# 最优gamma高斯核(取准确率最高的gamma)
best_gamma = max(acc_rbf, key=acc_rbf.get)
plot_rbf_boundary(svm_rbf[best_gamma], X_scaled, y,
                  title=f'高斯核SVM({best_gamma})\n准确率:{acc_rbf[best_gamma]:.4f}', ax=ax2)
plt.suptitle('线性核 vs 高斯核分类效果对比', fontsize=14)
plt.tight_layout()
plt.show()

结果:
在这里插入图片描述

  • γ \gamma γ是高斯核的核心参数, γ \gamma γ越小,核函数作用范围越广,边界越平滑,对于局部数据特征不敏感,易欠拟合,准确率较低
  • γ \gamma γ越大,核函数作用范围越窄,模型更容易过度拟合训练数据的细节,边界越复杂,泛化能力会下降,易过拟合
    在这里插入图片描述
  • 体现了非线性核对复杂数据的适配性。高斯核通过核函数将数据映射到高维空间,在高维空间实现线性可分,在原空间呈现非线性决策边界

总结

通过对支持向量机(SVM)的理论梳理与实验验证,对这一经典分类算法的原理、应用场景及超参数调优有了更全面的认识。
理论层面来看,SVM 以 “最大化间隔” 为目标,通过支持向量确定最优超平面,而对偶问题的转化简化了优化求解,核函数使 SVM 能够通过映射到高维空间解决非线性分类问题。
实验部分来看,通过两个具体案例验证了理论的实用性:在 ex6data1.mat 的线性数据实验中,硬间隔 SVM(C=1e10)对异常值容错性极低,而软间隔 SVM 通过调整惩罚系数 C,实现了 “间隔大小” 与 “分类准确性” 的平衡。在 ex6data2.mat 的非线性数据实验中,高斯核 SVM 展现了对复杂数据的适配能力,而参数 γ 的调整直接影响核函数的作用范围,其分类效果显著优于线性核 SVM。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐