学习笔记: 机器学习经典算法-核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核函数的优缺点介绍

目录
相关文章
|
18天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
30天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
6天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
1月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
27天前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
29 0
|
1月前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
1月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】ID3、C4.5、CART 算法
【机器学习】ID3、C4.5、CART 算法

热门文章

最新文章

  • 1
    机器学习实战:房价预测项目
    202
  • 2
    强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
    77
  • 3
    集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
    219
  • 4
    `sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
    454
  • 5
    在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
    89
  • 6
    在人工智能和机器学习的领域中,语音识别(Speech Recognition,SR)是一个重要的研究方向。它旨在将人类的语音转换为计算机可读的文本。
    106
  • 7
    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
    121
  • 8
    驾驭大数据洪流:Pandas与NumPy在高效数据处理与机器学习中的核心作用
    84
  • 9
    探索机器学习在图像识别中的应用
    53
  • 10
    智能化运维:机器学习在故障预测和自动化修复中的应用
    66