学习笔记: 机器学习经典算法-核SVM(KernelSVM)

简介: 机器学习经典算法-个人笔记和学习心得分享

1、核函数的概念

处理非线性数据问题本质是依靠升维(按照某种规则扩充数据的特征)使得原本在低维空间内线性不可分的数据在升维后的空间内变得线性可分。SVM的核函数 主要是为解决数据线性不可分而提出一系列变换函数,不同的特征扩充规则对应了了不同的核函数。

在实际应用 核SVM 的时候,往往是通过变形 线性SVM的目标函数 为适用核函数的效率形式:如
适用多项式特征的SVM优化函数
这里适用多项式核的SVM优化目标 $\max \sum_{i=1}^{m}\alpha_i - \frac {1}{2} \sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\cdot x_ix_j $ 函数内嵌套了$i,j$两层加法循环,每次循环都是对样本集内的任意两个样本 $ x^{(i)},x^{(j)} $做一次点乘。对于这样的点乘运算,核函数 的思想在于直接通过变换$K$处理使得原始特征的点积结果与对两样本添加构造特征后计算的点积结果相类似的效果。这样相比起先添加构造特征提升数据维度,再应用线性SVM 。在SVM原始优化目标里直接以函数变换 $K$ 来计算升维后两样本 $ x_i'x_j' $的内积结果,不但降低了添加构造特征带来的硬件资源消耗,还进一步提升了运算效率。所以 核函数 本质只是一个在算法里提升效率的运算技巧(Kernel Trick)。

核函数 技巧一般多应用在两向量的内积处理上。

2、多项式核函数

一般数学形式:$K(X,Y) = (X\cdot Y + C)^d$ ,
基本原理就是通过添加多项式特征来进行数据升维,用核函数重新定义了两向量的点乘结果。

推导如下:
对于核函数 $K(X,Y) = (X\cdot Y + 1)^2$
$\because X\cdot Y = (x_1,x_2,...,x_n)\cdot (y_1,y_2,...,y_n) = \sum^{n}_{i=1}{x_iy_i}$
$\therefore (X\cdot Y + 1)^2 = ( \sum^{n}_{i=1}{x_iy_i} + 1)^2 = \sum^{n}_{i=1}{(x_i^2)(y_i^2)} + \sum^{n}_{i=2} \sum^{i-1}_{j=1}{(\sqrt2 x_ix_j)(\sqrt2 y_iy_j)} + \sum^{n}_{i=1}{(\sqrt2 x_i)(\sqrt2 y_i)} + 1$

从而在$(X\cdot Y + 1)^2$的结果里可以看到基于$X,Y$的原始特征添加了最高2次项的构造特征 $ x_i^2, x_ix_j,x_i $,并对两向量对应位置的分类进行了乘法运算和求和,也就是相当于一步完成了对$X,Y$添加构造特征升维再算内积的运算。

当$d = 1$时就对应了不使用添加构造特征 线性核函数 $K(X,Y) = XY$。

2.2 在SVM中应用多项式核函数

### Polynomial Features
from sklearn.preprocessing import PolynomialFeatures,StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
def Polynomial_KernelSVC(degree,C = 1.0):
    return Pipeline([
        ("std_scaler",StandardScaler()),
        ("kernelSVC",SVC(kernel="poly",degree=degree,C = C))
    ])
poly_kernel_SVC = Polynomial_KernelSVC(degree = 1)
poly_kernel_SVC.fit(X,y)

3、高斯核函数(RBF)

一般数学形式:$K(x,y) = e^{-\gamma \|x -y\| ^2}$ ,又称为RBF核(Radial Basis Functiona Keral), 径向基函数

高斯核函数本身也是一个非常好的相似性度量函数

  • 当两样本非常 相距非常近 的时候就有$\|x - y\|^2 \to 0, e^{-\gamma \|x -y\| ^2} \to 1 $
  • 当两样本非常 相距非常远 的时候就有$\|x - y\|^2 \to +\infty, e^{-\gamma \|x -y\| ^2} \to 0 $

在SVM中引入的 高斯核函数 本质作用也是一种升维处理,不过规则上不是通过添加多项式的处理方式,高斯核函数所做的事情是将当前数据集内的每一个样本作为 地标(landmark) 参考生成新特征,这个新构造的特征实际上反映了两样本点的相似性程度,从而在新特征空间内使得样本变得可分。由于高斯核函数升为变换将一个 $m*n$的数据映射成$m*m$的数据,所以在实际应用的时候会面临很高的算力开销,它的主要应用场景是样本集内特征数量比样本数量要多的时候$(m

高斯核函数形式上类似于统计学上的高斯函数 $g(x) = \frac {1}{\sigma \sqrt {2\pi}} e^{-\frac {1}{2}(x - \mu)^2}$ 。
高斯 $\frac {1}{2\sigma^2}$ 在高斯核函数里被描述成 $\gamma$,反映在决策边界上$\gamma$越大,模型的泛化出现过拟合,$\gamma$越小,模型的出现欠拟合。所以$\gamma$实际控制了高斯核SVM模型的泛化能力。


应用高斯核可以获得更为多样化的决策边界形状,并且只有一个控制超参数(gamma),相比多项式核容易选择。但存在可解释性差,无法获取超平面方程 $w^Tx+b = 0$ 所需的参数$w,b$。

3.2 在SVM中应用高斯核函数

### Polynomial Features
from sklearn.preprocessing import PolynomialFeatures,StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
def RBF_KernelSVC(gamma = 1):
    return Pipeline([
        ("std_scaler",StandardScaler()),
        ("kernelSVC",SVC(kernel="rbf",gamma = gamma))
    ])
rbf_kernel_SVC = RBF_KernelSVC(gamma = 1)
rbf_kernel_SVC.fit(X,y)

更多SVM核函数的优缺点介绍

目录
相关文章
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
机器学习/深度学习 算法 数据可视化
利用SVM(支持向量机)分类算法对鸢尾花数据集进行分类
本文介绍了如何使用支持向量机(SVM)算法对鸢尾花数据集进行分类。作者通过Python的sklearn库加载数据,并利用pandas、matplotlib等工具进行数据分析和可视化。
1388 70
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
机器学习/深度学习 算法 数据可视化
基于线性核函数的SVM数据分类算法matlab仿真
本程序基于线性核函数的SVM算法实现数据分类,使用MATLAB2022A版本运行。程序生成随机二维数据并分为两组,通过自定义SVM模型(不依赖MATLAB工具箱)进行训练,展示不同惩罚参数C下的分类结果及决策边界。SVM通过寻找最优超平面最大化类别间隔,实现高效分类。 核心代码包括数据生成、模型训练和结果可视化,最终绘制了两类数据点及对应的决策边界。此实现有助于理解SVM的工作原理及其在实际应用中的表现。
|
机器学习/深度学习 算法 关系型数据库
基于PSO-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目展示了利用粒子群优化(PSO)算法优化支持向量机(SVM)参数的过程,提高了分类准确性和泛化能力。包括无水印的算法运行效果预览、Matlab2022a环境下的实现、核心代码及详细注释、操作视频,以及对PSO和SVM理论的概述。PSO-SVM结合了PSO的全局搜索能力和SVM的分类优势,特别适用于复杂数据集的分类任务,如乳腺癌诊断等。
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
556 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
机器学习/深度学习 算法
【机器学习】SVM面试题:简单介绍一下SVM?支持向量机SVM、逻辑回归LR、决策树DT的直观对比和理论对比,该如何选择?SVM为什么采用间隔最大化?为什么要将求解SVM的原始问题转换为其对偶问题?
支持向量机(SVM)的介绍,包括其基本概念、与逻辑回归(LR)和决策树(DT)的直观和理论对比,如何选择这些算法,SVM为何采用间隔最大化,求解SVM时为何转换为对偶问题,核函数的引入原因,以及SVM对缺失数据的敏感性。
658 3
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
798 2
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
646 2