• SVM介绍


    SVM

    • 概念

    支持向量机(support vector machines,SVM)是一种二分类模型。基本原理是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。

    • 作用

      • svm不仅可以支持这种简单的线性可分离的数据,还可以

        借助“软间隔(soft margin)”实现对不能线性可分但是可以近似线性可分的数据的分类;

      • 借助“核函数”,或者说“核技巧kernel tirck”,实现对任意非线性数据的分类;

      • SVM 适合中小型数据样本、非线性、高维的分类问题。

    • 优缺点

      优点缺点
      解决小样本下机器学习问题(不像深度学习一样,依赖海量数据)常规SVM只支持二分类
      可以解决高维问题,即大型特征空间(借助核函数)
      泛化能力比较强
      无需依赖整个数据对缺失数据敏感
      无局部极小值问题
      能够处理非线性特征的相互作用对非线性问题没有通用解决方案,有时候很难找到一个合格的核函数
      SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数据,而不是样本空间的维数,在这某种意义上避免了“维数灾难”当样本很多时,效率并不是很高(借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目喊打时该矩阵的存储和计算将耗费大量的机器内存和运算时间)
      理论基础扎实,分类问题可以从原理上解释(相比于“玄学调参”的深度学习)对于核函数的高维映射可解释性不强,youqishi
    • 问题

    1. SVM显然是线性分类器,但数据如果根本就线性不可分怎么办

      数据在原始空间(称为输入空间)线性不可分,但是映射到高维空间(称为特征空间)后很可能就线性可分了。

      但是映射到高维空间同时带来一个问题:在高维空间上求解一个带约束的优化问题显然比在低维空间上计算量要大得多,这就是所谓的“维数灾难”。

      于是就引入了“核函数”,核函数虽然也是把特征进行从低维到高维的转换,但是它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,即避免了直接在高维空间中的复杂计算。

    2. 常用的核函数有哪些

    ​ 1.线性核函数(Linear Kernel)表达式为:

    ​ 2.多项式核函数(Polynomial Kernel)是线性不可分SVM常用的核函数之一,表达式为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIQm60uF-1660292990776)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646018999350/2A25B38AA83BB1F8EE1ACD6D08CADA4B)],
    其中,各种参数都需要自己调参定义,调参比较麻烦

    ​ 3.高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是libsvm默认的核函数,也是scikit-learn默认的核函数。表达式为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2p56nz8-1660292990777)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646019027216/E652F235C95EF93397CF0B6A86C4AE0B)], 其中,γ大于0,需要自己调参定义

    ​ 4.Sigmoid核函数(Sigmoid Kernel)也是线性不可分SVM常用的核函数之一,表达式为:K(x,z)=tanh(γx∙z+r), 其中γ,r也都需要自己调参定义

    1. SVM的loss是啥

    SVM 中经典的loss functioSVM 中经典的loss function是Hinge Loss,中文名也叫合页损失函数,因为它的图像就像一本打开的书,或者门和门框上的合页。

    公式n 是 Hinge Loss,中文名也叫合页损失函数,因为它的图像就像一本打开的书,或者门和门框上的合页。 公式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2PYrRw8-1660292990777)(https://uploadfiles.nowcoder.com/images/20220228/687305976_1646019148167/FCE99F6676756A3E52B50E9D346E824D)]

    第一项是损失,第二项是正则化项。这个公式就是说

    y**i(wx**i+b)

    大于1时loss为0, 否则loss为1−y**i(wx**i+b)Hinge Loss不仅会惩罚错误的预测,还会惩罚不自信的正确预测。Hinge Loss简化了SVM的数***算,同时最大化了损失(与Log-Loss相比)。当我们想要做出实时决策而不过于关注准确性时使用它。正是因为Hinge Loss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。Hinge loss可视化

    import numpy as np
    from matplotlib import pyplot as plt
    
    
    def hinge_loss(x):  return np.maximum(0, 1 - x)
    
    
    def plot_hinge_loss():
        x = np.arange(-5, 5, 0.1)
        y = hinge_loss(x)
        plt.plot(x, y, label="hinge loss")
        y2 = np.where(x > 0, 0, 1)
        plt.plot(x, y2, label="0-1 loss")
        plt.legend()
        plt.title("nowcoder: offer+1")
        plt.show()
    plot_hinge_loss()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    当x>=1时,函数为0,当x<1时,函数斜率为-1, 当t>1时,函数斜率为0.另外,除了hinge loss,还可以使用以下两种损失函数1、指数损失(exponential loss):y=exp(-x)2、对率损失(logistic loss):y=log(1+exp(-x))

  • 相关阅读:
    kafka监控工具EFAK
    如何实现「零信任网络」安全体系结构?教你五步实现无边界安全
    Python学习记录 函数基础
    【MySQL】学习多表查询和笛卡尔积
    【无标题】
    阿里P8架构师强推java程序员人手一套116页JVM吊打面试官专属秘籍
    用户体验与响应式字体二三事|rem单位与flexible.js、rpx单位与css媒体查询
    计算机基础
    vscode平台上通过Embedded IDE搭建单片机开发环境
    2020年五一杯数学建模C题饲料混合加工问题解题全过程文档及程序
  • 原文地址:https://blog.csdn.net/qq_41694461/article/details/126306868