机器学习实战-支持向量机

本文深入探讨了支持向量机(SVM),包括其核心思想——寻找最优化的分隔超平面,使得数据点尽可能远离超平面。讲解了线性可分与不可分的概念,支持向量、间隔等关键概念,并介绍了SMO算法在求解优化问题中的应用。此外,还讨论了如何利用核函数将数据映射到高维空间,特别是径向基核函数在SVM中的作用。最后,通过手写识别问题展示了SVM在实际中的优势,如低内存需求和通过调整核函数参数平衡分类速度与准确性。
摘要由CSDN通过智能技术生成

感知器模型

感知器模型就是试图找到一条线,能够将所有的二元类别分割开。如果是高维空间就是找到一个超平面,能够将所有的二元类别分割开。算法是在数据中找出一个划分超平面,让尽可能的数据分布在这个平面的两侧。实际中符合要求的超平面是可能存在多个点的。

模型的核心思想,让距离超平面最近的点尽可能的远离超平面。

SVM几个重要名词解释

1,线性可分:在数据集中可以找出一个超平面,将两组数据分开,这个数据集叫线性可分数据

2,线性不可分:在数据集中,没法找出一个超平面,能够将两组数据分开,

3,分隔超平面:将数据分割开来的直线/平面

4,支持向量:离分隔超平面最近的那些点叫做支持向量

5,间隔,支持向量数据到分隔超平面的距离。

在svm中,支持向量到超平面的函数狐狸一般设置为1

6.2.2 SVM应用的一般框架

'''
SVM的一般流程
1)收集数据:可以使用任意方法。
2)准备数据:需要数值型数据。
3)分析数据:有助于可视化分隔超平面
4)训练算法:SVM的大部分时间都源自训练,改过程主要实现两个参数的调优
5)测试算法:十分简单的计算过程就可以实现
6)使用算法:几乎所有问题都可以使用svm,svm本身就是一个二类分类器,对多类问题应用svm需要对代码做修改
'''

6.3 SMO高效优化算法

所有需要做的围绕优化的事情就是训练分类器,一旦得到appha的最优值,我们就得到了分隔超平面并能够将之用于数据分类

6.3.1Platt的SMO算法

SMO表示序列最小化,将大优化问题分解为多个小优化问题来求解。目标是求出一系列alpha和b,通过alpha,计算出权重向量w并得到分隔超平面

SMO工作原理:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么久增大其中一个同时减少另一个。

6.3.2 应用简化版SMO算法处理小规模数据集

'''
SMO算法的伪代码大致如下
创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时(外循环)
    对数据集中的每个数据向量(内循环)
        如果该数据向量可以被优化
            随机选择另外一个数据向量
            同时优化这两个向量
            如果两个向量都不能被优化,退出内循环
    如果所有向量都没被优化,增加迭代数目,继续下一次循环

'''
#5个参数分别是数据集,类别标签,常数c,容错率toler,取消前最大循环次数
def smoSimple(dataMatIn, classLabels, C, toler, maxIter):
    dataMatrix = mat(dataMatIn);
    labelMat = mat(classLabels).transpose()#转置了类别标签,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值