机器学习(六)支持向量机

1,587 阅读4分钟

以下内容是在学习过程中的一些笔记,难免会有错误和纰漏的地方。如果造成任何困扰,很抱歉。

前言

支持向量机(Support Vector Machine,SVM),是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane) ,也被称为最大间隔分类器。

SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一。

在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。

SVM的优点:

  • 采用核函数方法克服了维数灾难和非线性可分的问题,所以向高维空间映射时没有增加计算的复杂性。
  • 解决小样本情况下的机器学习问题,简化了通常的分类和回归等问题。

SVM的缺点:

  • 支持向量机算法对大规模训练样本难以实施。这是因为支持向量机算法借助二次规划求解支持向量,这其中会涉及m阶矩阵的计算,所以矩阵阶数很大时将耗费大量的机器内存和运算时间。
  • 经典的支持向量机算法只给出了二分类的算法,支持向量机对于多分类问题解决效果并不理想。

一、线性分类问题

描述:这里可以添加本文要记录的大概内容

什么是线性可分?

在二维空间上,两个类可以轻松地被一条直线(它们是线性可分离的)分开,图中的实线代表SVM分类器的决策边界,这条线不仅分离了两个类,并且尽可能远离了最近的训练实例。你可以将SVM分类器视为在类之间拟合可能的最宽的街道(平行的虚线所示)。因此这也叫作大间隔分类

从二维扩展到多维空间中时,将 D0 和 D1 完全正确地划分开的 wx+b=0 就成了一个超平面。

样本中距离超平面最近的一些点,这些点叫做支持向量,SVM想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。

二、软间隔/硬间隔

描述:这里可以添加本文要记录的大概内容

如果我们严格地让所有实例都不在街道上,并且位于正确的一边,这就是硬间隔分类。硬间隔分类有两个主要问题。首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感。

要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持街道宽阔和限制间隔违例(即位于街道之上,甚至在错误的一边的实例)之间找到良好的平衡,同时也可以叫它容忍度,这就是软间隔分类

通过指定合适的超参数的值,也可以解决过拟合问题。

import numpy as np
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC

# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris["data"][:, (2, 3)]  # petal length, petal width
y = (iris["target"] == 2).astype(np.float64)  # Iris virginica

# 模型构建
svm_clf = Pipeline([
    ("scaler", StandardScaler()),
    # 如果你的SVM模型过拟合 可以尝试通过降低C来对其进行正则化
    # c代表软间隔的超参数
    ("linear_svc", LinearSVC(C=1, loss="hinge")),
])

# 模型训练
svm_clf.fit(X, y)

# 预测
res = svm_clf.predict([[5.5, 1.7]])
print("预测:", res)

三、非线性分类问题

描述:这里可以添加本文要记录的大概内容

虽然在许多情况下,线性SVM分类器是有效的,并且通常出人意料的好,但是,有很多数据集远不是线性可分离的。处理非线性数据集的方法之一是添加更多特征。

四、常用核函数

描述:这里可以添加本文要记录的大概内容

名称解析式
多项式核(polynomial kernel)img
径向基函数核(RBF kernel)img
拉普拉斯核(Laplacian kernel)img
Sigmoid核(Sigmoid kernel)img

五、SVM回归

描述:这里可以添加本文要记录的大概内容

1

1

六、应用场景

描述:这里可以添加本文要记录的大概内容

支持向量机(SVM)算法比较适合图像和文本等样本特征较多的应用场合。基于结构风险最小化原理,对样本集进行压缩,解决了以往需要大样本数量进行训练的问题,它将文本通过计算抽象成向量化的训练数据,提高了分类的精确率。

1

1