• 23.支持向量机的使用


    主要内容

    1. 运行使用支持向量机SVM需要做的步骤
    2. 选择SVM或逻辑回归的基本准则
    3. SVM 与神经网络对比
    4. 其他核函数 kernel

    一、运行使用支持向量机SVM需要做的步骤

    1.1、参数 θ θ θ 的求解——建议直接使用高优化软件库

    • 一般情况下我们需要自己写软件来求解参数,但是不建议自己写核函数,建议直接使用现有的软件包(如 liblinear,libsvm 等)(关于liblinear\libsvm 的介绍可以参考我的另一个文章) 来最小化 SVM 代价函数
    • 强烈建议使用高优化软件库中的一个,而不是尝试自己实现

    1.2 参数设置

    • 尽管有现成的库,但是我们也需要做几件事:
      • 1、参数C的选择
      • 2、选择内核参数或你想要使用的相似函数 (注:如果选择不需要任何内核参数,还称为使用了线性核函数 SVM)

    1.3、SVM的两种选择

    • SVM的选择之一:是选择不带任何内核参数,也叫线性核函数(linear kernel), h θ ( x ) = g ( θ 0 x 0 + θ 1 x 1 + … + θ n x n ) , p r e d i c t y = 1 i f θ T x > = 0 h_θ(x)=g(θ_0x_0+θ_1x_1+…+θ_nx_n),predict y=1 if θ^Tx>=0 hθ(x)=g(θ0x0+θ1x1++θnxn)predicty=1ifθTx>=0

      • 如果有人说他使用了线性核的SVM(支持向量机),这就意味这他使用了不带有核函数的SVM(支持向量机)。
    • SVM的选择之二:使用kernel f(比如高斯核函数Gaussian Kernel), h θ ( x ) = g ( θ 0 f 0 + θ 1 f 1 + … + θ n f n ) h_θ(x)=g(θ_0f_0+θ_1f_1+…+θ_nf_n) hθ(x)=g(θ0f0+θ1f1++θnfn),这里需要选择方差参数σ2

      在这里插入图片描述

    • 注意:如果使用高斯核函数,需要进行特征缩放

    在这里插入图片描述

    二、选择SVM或逻辑回归的基本准则

    • n n n为特征数, m m m为训练样本数

    • (1) 如果相较于 m m m而言, n n n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机

    • (2) 如果** n n n较小,而且 m m m大小中等**,例如 n n n在 1-1000 之间,而 m m m在10-10000之间,使用高斯核函数的支持向量机

    • (3)如果** n n n较小,而 m m m较大**,例如 n n n在1-1000之间,而 m m m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机

    • 注意:

      • 如果训练集非常大,高斯核函数的SVM 会非常慢。 通常Andrew会尝试手动创建特征,然后用逻辑回归或者不带核函数的 SVM

      • (注: 逻辑回归和不带核函数的SVM 非常相似。但是根据实际情况,其中一个可能会更有效。随着 SVM 的复杂度增加、特征数量相当大时,不带核函数的SVM 就会表现得相当突出。)

        在这里插入图片描述

    三、SVM 与神经网络对比

    • 神经网络 在第二点上面的三种情况下都可能会有较好的表现 ,但是训练神经网络可能非常慢,
    • 选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值
    • SVM是一种凸优化,不用担心局部最优;好的SVM优化软件包总是会找到全局最小值,或者接近它的值
    • SVM比神经网络快,它是一种体系,一个有效的方法去学习复杂的非线性函数

    四、其他核函数 kernel

    • 在高斯核函数之外,还有其他一些选择,如:

      • 多项式核函数(Polynomial Kernel),
      • 字符串核函数(String kernel),
      • 卡方核函数( chi-square kernel) ,
      • 直方图交集核函数(histogram intersection kernel)
    • 它们的目标也都是根据训练集和地标之间的距离来构建新特征

    • 一个核函数需要满足 Mercer’s 定理,才能被 SVM 的优化软件正确处理

    • Mercer’s 定理: 任何半正定的函数都可以作为核函数

    • 所谓半正定的函数 f ( x i , x j ) f(x_i,x_j) f(xi,xj):是指拥有训练数据集合 ( x 1 , x 2 , . . . x n ) (x_1,x_2,...x_n) x1,x2,...xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) aij = f(x_i,x_j) aij=f(xi,xj),这个矩阵式nn的,如果这个矩阵是半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定的函数。
      .xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) aij = f(x_i,x_j) aij=f(xi,xj),这个矩阵式n
      n的,如果这个矩阵是半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定的函数。

    • Mercer定理是核函数的充分条件,只要函数满足Mercer定理的条件,那么这个函数就是核函数。

  • 相关阅读:
    直接内存
    『现学现忘』Docker相关概念 — 2、云计算的服务模式
    C# 截取字符串
    C 学生管理系统 显示链表信息、删除链表
    Postgresql与执行计划相关的配置项
    SPARK中的wholeStageCodegen全代码生成--以aggregate代码生成为例说起(2)
    vscode键盘输入不进去
    docker学习:docker基础容器构建
    Mysql之Using index for skip scan
    【华为账号服务】【FAQ】Account Kit常见咨询合集--获取帐号个人信息相关问题
  • 原文地址:https://blog.csdn.net/qq_44749630/article/details/126117394