SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

2024-07-13 1396阅读

SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

flyfish

径向基函数核(Radial Basis Function Kernel,简称RBF核),也称为高斯核,是一种常用的核函数,用于支持向量机(SVM)和其他机器学习算法。它是基于数据点之间的距离来计算相似性的一种非线性核函数。

RBF核的数学表达式为:

K ( x , x ′ ) = exp ⁡ ( − γ ∥ x − x ′ ∥ 2 ) K(x, x') = \exp\left(-\gamma \|x - x'\|^2\right) K(x,x′)=exp(−γ∥x−x′∥2)

其中:

  • K ( x , x ′ ) K(x, x') K(x,x′) 是两个数据点 x x x 和 x ′ x' x′ 之间的核函数值。

  • γ \gamma γ 是一个可调参数,控制RBF核的宽度。

  • ∥ x − x ′ ∥ \|x - x'\| ∥x−x′∥ 是两个数据点之间的欧氏距离。

    RBF核的主要特性:

    1. 非线性变换 :RBF核可以将输入空间非线性地映射到高维特征空间,使得在原始空间中不可线性分离的数据在高维空间中可线性分离。

    2. 局部性 :RBF核在原始空间中的距离较近的点在高维特征空间中也会距离较近,即RBF核具有局部敏感性。

    3. 参数可调 :参数 γ \gamma γ 控制RBF核的宽度,较大的 γ \gamma γ 值使得核函数对距离更敏感,较小的 γ \gamma γ 值使得核函数对距离不太敏感。

    生成100个二维数据点,并使用C=0.1和C=10的两个不同SVM模型进行训练。C较小时(C=0.1),模型的决策边界更宽松,对错误分类点有更高的容忍度;而C较大时(C=10),决策边界更严格,模型更严格地要求正确分类,容易过拟合

    SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import svm
    from sklearn.datasets import make_circles
    # 生成非线性可分的二维数据点
    X, y = make_circles(n_samples=100, factor=0.3, noise=0.1)
    # 创建两个SVM模型,分别使用不同的C值和RBF核
    C_values = [0.1, 10]
    models = [svm.SVC(kernel='rbf', C=C, gamma='auto') for C in C_values]
    # 训练模型
    for model in models:
        model.fit(X, y)
    # 创建绘图
    fig, axes = plt.subplots(1, 2, figsize=(12, 5))
    for ax, model, C in zip(axes, models, C_values):
        ax.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm')
        ax.set_title(f'SVM with RBF Kernel and C={C}')
        
        # 绘制决策边界和支持向量
        xlim = ax.get_xlim()
        ylim = ax.get_ylim()
        xx = np.linspace(xlim[0], xlim[1], 500)
        yy = np.linspace(ylim[0], ylim[1], 500)
        YY, XX = np.meshgrid(yy, xx)
        xy = np.vstack([XX.ravel(), YY.ravel()]).T
        Z = model.decision_function(xy).reshape(XX.shape)
        
        ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
                   linestyles=['--', '-', '--'])
        ax.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=100,
                   linewidth=1, facecolors='none', edgecolors='k')
    plt.show()
    

    使用了make_moons函数生成非线性可分的二维数据点(两个半月形),并使用RBF核的SVM模型进行分类。RBF核的SVM模型能够处理复杂的非线性分类问题,并且决策边界是非线性的。

    SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import svm
    from sklearn.datasets import make_moons
    # 生成非线性可分的二维数据点(两个半月形)
    X, y = make_moons(n_samples=100, noise=0.1, random_state=42)
    # 创建并训练SVM模型,使用RBF核
    model = svm.SVC(kernel='rbf', C=1, gamma=1)
    model.fit(X, y)
    # 创建绘图
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm')
    plt.title('SVM with RBF Kernel')
    # 绘制决策边界和支持向量
    xlim = plt.gca().get_xlim()
    ylim = plt.gca().get_ylim()
    xx = np.linspace(xlim[0], xlim[1], 500)
    yy = np.linspace(ylim[0], ylim[1], 500)
    YY, XX = np.meshgrid(yy, xx)
    xy = np.vstack([XX.ravel(), YY.ravel()]).T
    Z = model.decision_function(xy).reshape(XX.shape)
    plt.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])
    plt.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none', edgecolors='k')
    plt.show()
    

    二维数据点映射到三维空间

    原始的二维平面中是不可线性分离的。使用RBF核将其映射到三维空间,从而使数据变得可线性分离。即RBF核可以将输入空间非线性地映射到高维特征空间,使得在原始空间中不可线性分离的数据在高维空间中可线性分离。

    SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    from sklearn.datasets import make_circles
    from sklearn.svm import SVC
    # 生成非线性可分的二维数据点
    X, y = make_circles(n_samples=100, factor=0.3, noise=0.1, random_state=0)
    # 定义RBF核函数
    def rbf_kernel(X, Y, gamma=1.0):
        K = np.exp(-gamma * np.sum((X[:, np.newaxis] - Y[np.newaxis, :])**2, axis=2))
        return K
    # 将二维数据点映射到三维空间
    gamma = 0.5
    X_rbf = rbf_kernel(X, X, gamma=gamma)
    # 使用RBF核的SVM进行训练
    model = SVC(kernel='rbf', C=1, gamma=gamma)
    model.fit(X, y)
    # 绘制原始二维数据点
    fig = plt.figure(figsize=(12, 6))
    ax = fig.add_subplot(121)
    ax.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm')
    ax.set_title('Original 2D Data')
    # 绘制映射到三维空间的数据点
    ax = fig.add_subplot(122, projection='3d')
    ax.scatter(X_rbf[:, 0], X_rbf[:, 1], X_rbf[:, 2], c=y, cmap='coolwarm')
    ax.set_title('Mapped to 3D Space using RBF Kernel')
    plt.show()
    

    svm.SVC说明

    svm.SVC是scikit-learn中的支持向量分类器函数,其中包含许多参数,每个参数在模型的训练和预测过程中都有其特定的作用。以下是一些常用参数及其含义:

    1. C (default=1.0) : 正则化参数。它控制权衡分类正确率与决策函数的复杂度。较小的C值会使模型更宽松,对错误分类更容忍;较大的C值会使模型更严格,可能导致过拟合。

    2. kernel (default=‘rbf’) : 核函数类型,用于指定在训练算法中使用的核函数。支持的核函数有:

    • 'linear': 线性核

    • 'poly': 多项式核

    • 'rbf': 径向基函数核(高斯核)

    • 'sigmoid': Sigmoid核

    • 'precomputed': 预计算核

      可以通过传递自定义的核函数来定义自己的核。

      1. degree (default=3) : 多项式核函数的维度。如果使用多项式核函数(kernel='poly'),则该参数指定多项式的维度。

      2. gamma (default=‘scale’) : 核函数系数。用于‘rbf’、‘poly’和‘sigmoid’核。参数的值可以是:

      • 'scale': 默认值,使用1 / (n_features * X.var())

      • 'auto': 使用1 / n_features

      • 具体的浮点数值

        1. coef0 (default=0.0) : 核函数中的独立项。对于‘poly’和‘sigmoid’核函数有用。

        2. probability (default=False) : 是否启用概率估计。如果启用,训练时间会更长一些。

        3. shrinking (default=True) : 是否使用启发式方法加速训练过程。

        4. tol (default=1e-3) : 停止标准的精度。训练算法的停止标准。

        5. cache_size (default=200) : 指定内存缓存大小(以MB为单位),用于存储训练过程中计算的核矩阵。

        6. class_weight (default=None) : 给定各类样本的权重,形式为字典{class_label: weight}。用于处理类别不平衡问题。

        7. verbose (default=False) : 启用详细输出。在实际运行时,通常不会开启这个选项。

        8. max_iter (default=-1) : 限制最大迭代次数。设置为-1时,表示没有限制。

        9. decision_function_shape (default=‘ovr’) : 决策函数的形状,支持‘ovr’(一对多)和‘ovo’(一对一)。默认使用‘ovr’。

        10. break_ties (default=False) : 在决策边界上对平票情况进行处理(仅适用于‘ovr’)。启用时会增加计算开销。

        11. random_state (default=None) : 随机数生成器的种子。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]