【机器学习】深入探索SVM概念及其核方法
【机器学习】深入探索SVM概念及其核方法
支持向量机(SVM)是一种在深度学习技术出现之前就广泛应用于分类问题的机器学习算法。它不仅适用于分类任务,还可以用于回归问题。SVM具有泛化性能好、适合小样本和高维特征的优点。本文将深入探讨SVM的核心概念,包括软间隔与硬间隔、惩罚参数C的作用、核方法以及损失函数等关键知识点。
支持向量机概述
支持向量机在深度学习技术出现之前,使用高斯核的支持向量机在很多分类问题上取得了很好的结果。支持向量机不仅用于分类,还可以用于回归问题。它具有泛化性能好,适合小样本和高维特征的优点。
SVM 是 N 维空间的分类超平面,它将空间切分成两部分。对于二维空间,它是一条线;对于三维空间,它是一个平面;对于更高维空间,它是超平面。
一般情况下,给定一组样本可以得到不止一个可行的线性分类器。那么,在多个可行的线性分类器中,什么样的分类器是最好的?
直观上看,为了得到泛化性更好的分类器,分类平面应该不偏向于任何一类,并且距离两个样本都尽可能远。这种以最大化分类间隔为目标的线性分类器就是支持向量机。
软间隔和硬间隔
硬间隔指的是让所有的样本都不在最大间隔之间,并位于正确的一边。如果出现异常值或样本不能线性可分,此时硬间隔无法实现。
软间隔指的是我们容忍一部分样本在最大间隔之内,甚至在错误的一边。相对来说,软间隔可以应用在一些线性不可分的场景。
惩罚参数 C 的作用
在硬间隔的情况下,我们只考虑如何使得间隔达到最大。在软间隔的情况下,我们既要考虑最大化间隔,也要考虑到那些限制间隔违例的样本带来的损失。
- C越大说明:违反限制间隔的样本点带来的损失就越大,就要减少这些样本的数量,所以间隔就要越小。
- C越小说明:违反限制间隔的样本点带来的损失就越小,可以适当增大间隔,以增加模型的泛化能力。
核方法
当存在线性不可分的场景时,我们需要使用核函数来提高训练样本的维度或将其投向高维。
常用的核函数包括:
- 线性核:一般是不增加数据维度,而是预先计算内积,提高速度
- 多项式核:一般是通过增加多项式特征,提升数据维度,并计算内积
- 高斯核(RBF、径向基函数):一般是通过将样本投射到无限维空间,使得原来不可分的数据变得可分
SVM 默认使用 RBF 核函数,将低维空间样本投射到高维空间,再寻找分割超平面。
损失函数
0-1 损失:
当正例样本落在 y=0 下方则损失为 0,否则损失为 1。
当负例样本落在 y=0 上方则损失为 0,否则损失为 1。
Hinge(合页)损失:
当正例落在 y >= 1 一侧则损失为 0,否则距离越远则损失越大。
当负例落在 y <= -1 一侧则损失为 0,否则距离越远则损失越大。
Logistic 损失:
当正例落在 y > 0 一侧,并且距离 y=0 越远则损失越小。
当负例落在 y < 0 一侧,并且距离 y=0 越远则损失越小。
小结
- 支持向量机可用于回归问题,也可用于分类问题。
- 硬间隔指的是样本必须全部分类正确,软间隔指的是允许部分样本间隔违例。
- 惩罚参数 C 用于惩罚间隔违例样本带来的损失,C 越大越不能容忍间隔违例,C 越小越能容忍间隔违例。
- 常用的核方法包括线性核、多项式核和高斯核。
- 损失函数包括 0-1 损失、Hinge(合页)损失和 Logistic 损失。