版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

支持向量机(SVM)可以说是一个完全由数学理论和公式进行应用的一种机器学习算法,在小批量数据分类上准确度高、性能好,在二分类问题上有广泛的应用。

同样是二分类算法,支持向量机和逻辑回归有很多相似性,都是二分类问题的判决模型,主要的差异在于损失函数的不同,支持向量机相比于逻辑回归,更倾向于找到样本空间中最优的划分超平面。

首先说一下超平面的概念:超平面是一个数学概念,而不好以物理概念解释,因为画不出来:)。n维空间的超平面表示 Wtx + b = 0。二维空间中,超平面是一条直线,三维空间中,超平面是一个平面,以此类推...

--线性支持向量机

我们先假设数据集是线性可分的,这是使用SVM的前提条件(线性不可分其实也有办法解决,后面再说),什么是线性可分呢?

线性可分:对于二维(两个特征)数据集来说,如果存在一条直线,能把这两类数据完全区分开,就说这个数据集是线性可分的。如果多维(k个特征)数据,存在一个维度为k-1的超平面能完全分开两类数据,也称为线性可分。

SVM要解决的问题:就是在样本空间中找到最优(最鲁棒、泛化能力最强)划分超平面。如下图所示,能把两类点分开来的直线有很多,但哪条是最优的呢,这就是SVM要解决的问题。

最优超平面有个非常拗口的解释:离超平面最近的特征向量有最大的离超平面的间隔距离。

假设最优超平面为 Wtx + b = f(x),如下图所示,当f(x)为0的时候,x便是位于超平面上的点,f(x)>0的点对应红色的点,f(x)<0对应蓝色五角星的点,虚线上的点就是距离超平面最近的样本点,也就是“支持向量(Support Vector)”,支持向量机就是要找到距离支持向量距离之和最大的超平面。

两个异类支持向量到超平面距离之和称为“间隔”,间隔的大小计算公式为

SVM的基本模型如下,其中s.t是限制条件,可以理解为在限制条件下,找到满足间隔距离最大的w和b。这就演变成一个带约束的二次规划问题,是一个凸问题,在数学上可以引入拉格朗日函数和对偶变量来求解,这个过程完全是数学推导,非常复杂,感兴趣的可以在网上找资料看看。

--非线性支持向量机

相比较线性可分,另一种情况就是非线性可分,如下图,二维空间中,两类数据点无法通过一条直线分开,这时候可以考虑将原始空间映射到一个更高维度的特征空间,使得样本在这个高维特征空间内线性可分。例如把下列二维数据点映射到三维空间后,就能找到一个平面将两类点完美划分开。

表示映射后的特征向量,则在高维空间中的超平面模型可表示为:

这里ϕ是低维空间到高维空间的映射,这里面有两层含义:

(1)首先使用一个非线性映射将样本空间变换到一个高维特征空间;

(2)再在高维特征空间中使用线性分类器进行分类。

但这样就会出现一个问题,如果凡是遇到线性不可分的情况就映射到高维空间,那有可能维度加得非常多,才能进行线性划分,这样带来的计算复杂度太高,引入“核函数”就是为了解决这个问题。
核函数:假设ϕ是一个从低维空间χ 到高维空间H的映射,存在如下函数,就称为核函数。表示两个原始数据x,z在低维空间中的内积(主要用来衡量两个向量的相似度)。

核函数的作用在于:在低维度上进行内积计算,但把实质的分类效果表现在了高维度上,大大降低了计算的复杂度。
什么样的函数才能充当核函数呢:只要一个对称函数所对应的核矩阵半正定,那它就能作为核函数。这是个很复杂的数学问题,就不展开了,常用的核函数包括线性核函数、多项式核函数、高斯核函数、Sigmoid核函数在各种机器学习框架中都是现成的,可以直接拿来用。

-- 软间隔支持向量机

在现实问题中,哪怕是用到了核函数,在高维空间中对样本也可能不能线性划分,这就引入了”软间隔支持向量机“。在这种情况下,我们需要允许一些数据点不满足约束条件,即可以在一定程度上偏移超平面,但同时要使得不满足约束条件的数据点尽可能少。如下图,黑圈圈起来的蓝色点就是一个不满足约束条件的点。核心思想就是允许在极少部分样本上出错,但能减低计算复杂度得到一个不过拟合的SVM模型。

软间隔支持向量机的模型可以表示为,相比硬间隔支持向量机,多了一个惩罚项,也可以把它理解为损失函数,C为权重,用以表示该样本不满足约束的程度,C值越大,对分错样本的惩罚力度越大,在训练样本中准确度高,但泛化能力弱;如果减小C的话,则容许训练样本中有一些错误分类,容许有噪声情况,但泛化能力强。

支持向量机特点:

- 在小规模数据训练中,SVM相比较LR、随机森林等分类器,效果更好;

- 在非线性特征空间中,效果较好;

- 在数据量庞大的情况下,效果不一定好;

- SVM不能产生分类的概率值,

支持向量机被认为是在文本分类领域效果最好的机器学习算法,在工业界主要应用在网页分类、微博情感分析、舆情监控、用户评论挖掘、文本过滤等诸多领域。

-- SVM在Sklearn中的应用

-Python 代码

 import pandas as pd
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import svm breast_data = datasets.load_breast_cancer()
data = pd.DataFrame(datasets.load_breast_cancer().data) data.columns = breast_data['feature_names'] data_np = breast_data['data']
target_np = breast_data['target'] train_X,test_X, train_y, test_y = train_test_split(data_np,target_np,test_size = 0.1,random_state = ) '''
采用线性核函数进行分类
kernel可用参数:
"linear": 线性核函数
"poly": 多项式核函数
"rbf" : 径像核函数/高斯核函数
"sigmoid":核矩阵
'''
model = svm.SVC(kernel='linear', C=2.0)
model.fit(train_X, train_y) y_pred = model.predict(test_X)
print(accuracy_score(test_y, y_pred))

作者:华为云专家周捷

HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

欢迎报名参会

机器学习笔记(六) ---- 支持向量机(SVM)【华为云技术分享】的更多相关文章

  1. 机器学习笔记(九)---- 集成学习(ensemble learning)【华为云技术分享】

    集成学习不是一种具体的算法,而是在机器学习中为了提升预测精度而采取的一种或多种策略.其原理是通过构建多个弱监督模型并使用一定策略得到一个更好更全面的强监督模型.集成学习简单的示例图如下: 通过训练得到 ...

  2. 机器学习笔记:支持向量机(svm)

    支持向量机(svm)英文为Support Vector Machines 第一次接触支持向量机是2017年在一个在线解密游戏"哈密顿行动"中的一个关卡的二分类问题,用到了台湾教授写 ...

  3. AIOps产品与架构浅析【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  4. 不服跑个分:ARM鲲鹏云服务器实战评测——华为云鲲鹏KC1实例 vs. 阿里云G5实例【华为云技术分享】

    原文链接:https://m.ithome.com/html/444828.htm 今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主 ...

  5. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  6. 【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

    当今K8s独霸天下之时,咱们站在更高的角度,好好的看看K8s网络是以什么理念构筑的.以及一个容器集群的好保姆,是如何分别照顾 南北流量和东西流量的. 一.简单介绍下Kubernetes 略..容器集群 ...

  7. 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】

    1 概述 1.1 文章目的 本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测 ...

  8. 重磅!普惠AI--华为云语音语义万次调用1元购,有奖问答@评论区等你来!【华为云技术分享】

    活动快速入口:https://activity.huaweicloud.com/language_speech_promotion0.html 语音交互与自然语言处理 语音交互是一种人机交互方式,以开 ...

  9. 这个七夕节,用Python为女友绘制一张爱心照片墙吧!【华为云技术分享】

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群:输入关键字“最新活动”,获取华为云最新特惠促销.华为云诸多技术大咖.特 ...

随机推荐

  1. Matplotlib 中常见的图形

    # 导包 from matplotlib import pyplot as plt import numpy as np 线性图 简单线性图 在图表的所有类型中,线性图最为简单.线性图的各个数据点由一 ...

  2. CSPS模拟 81

    Z哥的题,真是见题如见人啊.. T1 实际状态数没有那么多,不要被数字吓倒就是了. 另外为什么吧轮廓线给忘了啊 T3 觉得自己是正解但是被hack了? 考试的时候想到了复杂度对的的解法,但是 spfa ...

  3. Java Part 001( 01_01_Java概述 )

    Java作为编程语言, 甚至超出了语言的范畴, 成为一种开发平台, 一种开发规范. Java语言相关的JavaEE规范里, 包含了时下最流行的各种软件工程理念, 学习Java相当于系统的学习了软件开发 ...

  4. 8.3 NOIP CE反思

    lsc考完以后就CE了,然后滚回去吃*去了! 这次考试都比的一批,整个先是打了暴力然后对拍发现桶有可能炸内存,然后就打了一个hash-map然后......T1 T3全使用了它,结果: 没什么可说的了 ...

  5. 『题解』洛谷P5015 标题统计

    题意描述 给你一个字符串,求所有字符的总数. 字符只包含数字,大小写字母. 分析 字符串的长度还是\(\le5\)的. 直接枚举就可以了. AC代码: NOIP官方标准程序是这样的 #include ...

  6. HTTPS加密流程理解

    HTTPS加密流程 由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击 HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TC ...

  7. echo -e的扩展应用之颜色控制输出(字体+背景)

    echo -e 输出带颜色字体或者背景用法:example: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 3 ...

  8. Geometry 判断几何是否被另一个几何/线段分割成多段

    如下图,如何判断几何多边形A被多边形B,切割为多段几何? 几何A被几何B切割 1. 获取几何A与几何B的交集C var intersectGeometry = new CombinedGeometry ...

  9. [多态] java笔记之多态性

    1.多态,说的是对象,说的不是类. 2. 3.多态 = polymorphism 4. 调用如下: 5. 6.口诀: 7.对象的向上转型: 8.对象的向下转型: 9.下面这个异常叫做ClassCast ...

  10. 手动部署LNMP环境(CentOS 7)

    手动部署LNMP环境(CentOS 7) 一.修改 yum 源 [root@localhost ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/e ...