经典机器学习系列(八)【支持向量机】(四)

简介: 经典机器学习系列(八)【支持向量机】(四)

非线性支持向量机


非线性数据


  在现实任务中,我们得到的数据一般都不是线性可分的,这时线性可分支持向 量机就不适用了。非线性数据意味着不存在这样的超平面,使训练点中的正类 和负类样本能够完全分别位于该超平面的两侧。


Kernel核函数方法


  核方法的主要思想: 基于这样一个假设:“在低维空间中不能线性分割的点集,通过转化为高维空间中的点集 时,很有可能变为线性可分的”。

  具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核 函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优的分离超平面, 从而把平面上本身不好分的非线性数据分开。

  SVM处理非线性数据的一般方法:

  选择一个非线性特征集,并将数据改写成新的表达方式,这等价于应用一个固定的非线性 映射,将数据映射到高维特征空间,在高维特征空间中使用线性分类器。


image.png

 其中,ϕ ( ) 表示从输入空间到某个高维特征空间的映射

  这意味着线性分类方法求解非线性分类问题一般分为两步:

  • 使用一个变换将原空间的数据映射到新空间。
  • 在新空间里使用线性分类学习方法从训练数据中学习分类模型。

  映射函数相当于把原来的分类函数进行了映射:

image.png

  • 使用映射函数方法的再思考

image.png


  • 两种方法的区别

  一个是映射到高维空间中,然后再根据内积的公式计算:


image.png

 而另一个则直接在原始空间中计算,而不需要显式地写出映射后的结果:


image.png

现在我们回忆下前面提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却 依旧能处理,甚至无穷维度也没有问题。

  我们把这里的计算两个向量在隐式映射过后在空间中的内积的函数叫核函数,例如,前面 的例子中,核函数为,例如,前面的例子中,核函数为:


image.png

  核函数能够简化映射空间中的内积运算

  • 核函数的定义:

  设X 是输入空间,H 为特征空间,,如果存在一个从X H 的映射:ϕ ( x ) : X → H 。使得对所有x , z ∈ X ,函数K ( x , z )满足条件:k ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) 。则称k ( x , z ) k(x,z)k(x,z)为核函数,ϕ ( x )为映射函数,式中ϕ ( x ) ⋅ ϕ ( z )为内积。


  • 核技巧


  在核函数k ( x , z )给定的条件下,可以利用求解线性分类问题的方法求解非线性分类问题的支持向量机;学习是隐式地在特征空间进行,不需要显示地定义特征空间和映射函数,这样的技巧称为核技巧。

  使用核技巧,解决了计算的复杂性问题,避开了直接在高维空间中进行计算,,而结果却是等价的。

  • 针对任意一个映射,手工设计出相应的核函数是很困难的,所以我们通常是在 常用的核函数中,按照问题和数据特点,进行选择:

  多项式核函数:

image.png

  p ≥ 1 为多项式的次数。


  高斯核函数


image.png

  δ ≥ 1 为高斯核的带宽。在实际应用中,采用较多的是高斯核函数,这个核可以将原始空间映射为高维空间(也就是我们前面提到的空间映射)。

  • 高斯核函数中参数σ 对模型性能的影响。

  如果σ 选得过大的话,高次特征上的权重实际上衰减的非常快,所以实际上相当于一个低维的子空间;

  性质1. 当σ 趋于无穷时,SVM的判别函数为一常函数,其推广能力或对新样本的正确分类能力为零,即把所有样本点判别为同一类。

  如果σ \sigmaσ选得过小的话,则可以将任意的数据映射为线性可分的–当然这并不完全是好事,因为随着而来的是非常严重的过拟合问题;

  性质 2. 若RBF核中尺度参数σ趋于0,则拉格朗日 乘子向量的所有分量都大于0,即全部样本点都是 支持向量。

  总的来说,通过调控参数σ ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。

  线性核函数


image.png

核函数的本质


  通常我们遇到的数据都是线性不可分的,我们需要将其映射到高维空间,但是这 可能带来维度灾难;这时候,核函数便是一种很好的解决方法,核函数的价值就 在于它虽然也是将特征进行从低维到高维的映射,但是核函数的巧妙之处在于它 事先在低维上进行计算,而将实质上的分类效果表现在高维上,这样做也就避免 了在高维空间中的复杂运算

  基于KernelSVM:假设现在你是一个农场主,圈养了一批羊,但为了预防狼群 袭击羊群,你需要搭建一个篱笆来把羊和狼分开,但是篱笆应该建在哪儿呢?

基于核函数的非线性支持向量机

image.png

最小二乘支持向量机


LSSVM概述


  LSSVM提出的背景


  • 支持向量机是针对小样本问题,基于结构风险最小化,较好地解决了以往机器学习模型中的 过学习、非线性、维数灾难以及局部极小值等问题,具有较好的泛化能力;
  • 然而,该方法在大规模训练样本时,存在训练速度慢、稳定性差等缺陷,从而制约了其使用 范围(学习过程中需要求解二次规划问题);
  • 因此,1999年,SuykensVandewalle等人在SVM的基础上提出LSSVM(Least Square Support Vector Machine, LSSVM),该算法的计算复杂度大为减少,使得训练速度得到提高。
  • 最小二乘支持向量机(LSSVM)是标准支持向量机的一种扩展,该算法将支持 向量机的求解从二次规划问题转化为线性方程组
  • 它与支持向量机的不同之处在于它把不等式约束改成等式约束,并把经验风险 由偏差的一次方改为二次方

  分类问题回顾

image.png

LSSVM分类算法:

(1) 构建LSSVM的分类优化问题的目标函数:


image.png


(2) 相比于SVM,其约束条件有所不同,它将SVM的不等式约束改为等式约束:

image.png

(3) 构造拉格朗日函数:


image.png

(4) 根据KKT条件,取最优值时应该满足对各变量的偏导数为0的约束条件:


image.png


(5) 在上式的线性方程组系统中:

image.png

回归问题回顾


给定训练数据集image.png

 回归(Regression)支持向量机的目标是构造如下形式的预测函数,使得f ( x ) 能够与样本的实际 函数值近似

image.png

 最小二乘支持向量回归算法LSSVR

(1) 构建LSSVR的优化问题的目标函数:


image.png

(2) 相比于SVM,其约束条件有所不同,它将SVM的不等式约束改为等式约束:

image.png

(3) 构造拉格朗日函数


image.png

(4)根据KKT条件,取最优值时应该满足对各变量的偏导数为0的约束条件:

image.png

(5) 在上式的线性方程组系统中:

image.png


20200401101713794.png

在Python中使用支持向量机分类算法


  在Scikit-Learn库中,支持向量机算法族都在sklearn.svm包中,当前版本一共有8个类。看起来也与其他机器学习算法族一样似乎有不少变种,其实并不太一样,支持向量机算法总的来说就一种,只是在核函数上有不同的选择,以及用于解决不同的问题,包括分类问题、回归问题和无监督学习问题中的异常点检测,具体为:

  1. LinearSVC类:基于线性核函数的支持向量机分类算法。
  2. LinearSVR类:基于线性核函数的支持向量机回归算法。
  3. SVC类:可选择多种核函数的支持向量机分类算法,通过“kernel”参数可以传入“linear”选择线性函数、传入“polynomial”选择多项式函数、传入“rbf”选择径向基函数、传入“sigmoid”选择Logistics函数作为核函数,以及设置“precomputed”使用预设核值矩阵。默认以径向基函数作为核函数。
  4. SVR类:可选择多种核函数的支持向量机回归算法。
  5. NuSVC类:与SVC类非常相似,但可通过参数“nu”设置支持向量的数量。
  6. NuSVR类:与SVR类非常相似,但可通过参数“nu”设置支持向量的数量。
  7. OneClassSVM类:用支持向量机算法解决无监督学习的异常点检测问题。
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# 载入鸢尾花数据集
X, y = load_iris(return_X_y=True)
clf = SVC().fit(X, y) # 训练模型
print(clf.predict(X)) # 分类预测
print(clf.score(X, y))

参考


【1】本文主要参考东北大学大数据科学课程SVM小节。


相关文章
|
7月前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
7月前
|
机器学习/深度学习 Python
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-4
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
23天前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
79 1
|
7月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第27天】在数据科学和人工智能的领域中,支持向量机(SVM)是一种强大的监督学习模型,它基于统计学习理论中的VC维理论和结构风险最小化原理。本文将详细介绍SVM的工作原理、核心概念以及如何在实际问题中应用该算法进行分类和回归分析。我们还将讨论SVM面临的挑战以及如何通过调整参数和核技巧来优化模型性能。
|
4月前
|
机器学习/深度学习 算法
【机器学习】SVM面试题:简单介绍一下SVM?支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择?SVM为什么采用间隔最大化?为什么要将求解SVM的原始问题转换为其对偶问题?
支持向量机(SVM)的介绍,包括其基本概念、与逻辑回归(LR)和决策树(DT)的直观和理论对比,如何选择这些算法,SVM为何采用间隔最大化,求解SVM时为何转换为对偶问题,核函数的引入原因,以及SVM对缺失数据的敏感性。
82 3
|
4月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
188 2
|
4月前
|
机器学习/深度学习 算法
【机器学习】支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择(面试回答)?
文章对支持向量机(SVM)、逻辑回归(LR)和决策树(DT)进行了直观和理论上的对比,并提供了在选择这些算法时的考虑因素,包括模型复杂度、损失函数、数据量需求、对缺失值的敏感度等。
68 1
|
7月前
|
机器学习/深度学习 算法 Python
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-1
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-1
|
7月前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
7月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
196 7