热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

支持向量机(SVM)在机器学习中的应用与学习心得

支持向量机(SVM)是一种高效的二分类模型,其核心目标是通过寻找最优超平面来区分不同类别的数据点。在实际应用中,SVM能够有效地处理高维数据,并通过核技巧扩展到非线性分类问题。当新的数据点输入时,SVM会根据其相对于超平面的位置来判定其所属类别。训练过程中,SVM通过最大化间隔来确定最优超平面,从而提高模型的泛化能力。本文总结了SVM在机器学习中的应用及其学习心得,探讨了其在实际问题中的优势和局限性。
  支持向量机是一种二分类算法,算法目的是找到一个最佳超平面将属于不同种类的数据分隔开。当有新数据输入时,判断该数据在超平面的哪一侧,继而决定其类别。 具体实现思路:

  训练过程即找到最佳的分隔超平面的过程。当数据特征数是2时,超平面就是一条直线;当数据的特征数是3时,超平面就是一个平面;当数据特征数为1024时,就需要一个2013维的超平面来对其分类。分隔超平面的形式可以写为:wTx+b

  最佳超平面的判断依据是,希望离超平面最近的点离超平面尽可能远。支持向量就是指那些离超平面最近的点。

  分类函数:

  使用单位跃阶函数作用到wTx+b上得到f(wTx+b),当wTx+b大于0时函数输出为1,反之为-1,而不是像LR之类算法输出1或0。使用这个函数的好处是当计算数据点到分隔超平面的距离来确定超平面的位置时,间隔通过label*(wTx+b)来计算,那么不管是正分类还是负分类的数据点,其间隔都是正数。

  优化目标函数:

  ——公式(1)

  上式为优化的目标函数。是点到分割面的函数间隔,当wT和b等比例放大时,函数间隔的值可以随之变大,因此不具有优化价值。所以优化目标函数中使用点到分割面的几何间隔

  直接对公式(1)进行求解十分困难,因此考虑固定一个因子而最大化其它因子。令支持向量的函数间隔为1,最大化1/||w||来求得最终解。因为除支持向量外的其他点的函数间隔都大于1,所以约束条件是,所以可以得到新的目标函数(最小化||w||2和最大化1/||w||是一样的,y就是x对应的label):

——公式(2)

  拉格朗日对偶:

  目标函数公式(2)的求解可以用拉格朗日对偶思想进行优化。首先定义广义拉格朗日函数为:

  

  然后令:

  ,其中

  当所有约束条件均满足,即时,α均为0时取得最大值,此时

  所以目标函数变为

  

  当函数在满足KKT条件时,可以转化为其对偶问题,即上式可以转化为

  ——公式(3)

  做对偶化的原因是这样可以简化求解过程,且经过验证本问题中的函数满足KKT条件。至于KKT条件是什么,这里就不详细介绍了,反正就是一个数学条件。

  至此,我们求最优间隔面的问题成功地转化为了公式(3)。

 

  目标函数求解:

  首先固定αi ,让L取得关于w和b的最小值。分别对w和b求偏导数(这可能就是进行拉格朗日对偶化的原因吧),并令导数为0可得:

  

   

  将上面两个式子代入公式(3),化简得到目标函数为(因为有两个w,所以alpha、x、y的下标用 i 和 j 来区分):

  ——公式(4)

  此时决策规则变为:

  若,则样本u为正分类样本。

  而b可以用wT*x+b=0来求,所以现在的问题就只剩下求解满足公式(4)的alpha。

  SMO算法:

  SMO算法是将大优化问题分解为多个小优化问题来求解。

  其工作原理是:每次循环选择两个α进行优化处理。一旦找到一对合适的α,就增大其中一个同时减小另一个。

  SMO算法能求出一系列alpha,一旦求出了这些alpha,就很容易计算出权重向量w和b并得到分隔超平面。

核函数——将低维数据映射到高维空间:

  当遇到数据集线性不可分的情况时,就无法在本维度进行求解。但利用核函数将数据映射到高维空间,就有可能成为线性可分的数据集。根据公式6可知需要求极值的L函数只与 xi 和 xj 的点积有关,所以核函数需要做的只是提供空间变换后两向量的点积,我们甚至不需要知道这个空间变换是什么。常用的核函数有线性核函数和指数核函数:

——线性核函数

——指数核函数

 


推荐阅读
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 分隔超平面:将数据集分割开来的直线叫做分隔超平面。超平面:如果数据集是N维的,那么就需要N-1维的某对象来对数据进行分割。该对象叫做超平面,也就是分类的决策边界。间隔:一个点 ... [详细]
  • NLP篇【01】tfidf与bm25介绍与对比
    上一篇:自然语言处理【NLP】遇上电商——专栏导读下一篇:NLP篇【02】白话Word2vec原理以及层softmax、负采样的实现一、tfidf介 ... [详细]
  • 这是我在复习时整理的笔记,过一遍就稳了,建议还是把PPT过一遍,老师考的都是基础题,大部分都在PPT上,特别是 ... [详细]
  • 概述SVM(支持向量机)是一个二分类的模型,它的主要思想就是间隔最大化,那么问题来了,什么是间隔最大化&#x ... [详细]
  • 机器学习算法常见面试题目总结,Go语言社区,Golang程序员人脉社 ... [详细]
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
  • 圣诞节到了,智能菌想送你一份礼物
    关注网易智能,聚焦AI大事件,读懂下一个大时代!(机器学习算法地图见文末)圣诞节的赠书活动来了! ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 如何选择机器学习方法http:scikit-learn.orgstabletutorialmachine_learning_mapindex.html通用学习模式只需要先定义 ... [详细]
  • 不同方式实现集群的可行性 && 部分不建议踩的坑
    路标1.Systemhasnotbeenbootedwithsystemdasinitsystem(PID1).Can’toperate.2.CannotconnecttotheD ... [详细]
author-avatar
手机用户2602938483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有