支持向量机

SVM学习总结

Deadly 提交于 2019-11-29 11:55:45
目录 一、SVM学习回顾 1 线性可分支持向量机与硬间隔最大化 1.1 线性可分支持向量机 1.2 函数间隔和几何间隔 1.3 间隔最大化 (1) 最大间隔分离超平面 (2) 支持向量和间隔边界 1.3 学习的对偶算法 2 线性支持向量机与软间隔最大化 2.1 线性支持向量机 2.2 学习的对偶算法 2.3 支持向量 2.4 合页损失函数 3 非线性支持向量机与核函数 3.1 核技巧 (1) 非线性分类问题 (2) 核函数的定义 (3) 核技巧在支持向量机中的应用 3.2 正定核 3.3 常用核函数 3.4 非线性支持向量机 4 序列最小最优化算法 二、补充 备注 备注1 凸二次规划 备注2 拉格朗日对偶性和KKT条件 备注3 为什么要转化为对偶问题求解 备注4 欧式空间和希尔伯特空间 其他问题 为什么高斯核可以将原始维度映射到无穷维 线性可分SVM、线性SVM和非线性SVM三者的b是否唯一 前言 第一次写博客,有不好的地方请各位多加指教;之前对SVM进行了一些学习,每次学习的时候又感觉很多东西都忘掉了;之前暑假的时候又进行了一次较为详细的学习,想着记录一下,一些笔记也都准备好了,由于若干原因(主要是拖延症晚期)一直拖到现在;本次总结主要是以李航老师的统计学习方法为参考,对书中的思路做一个梳理(因此想要了解或者回顾SVM的话,本文会有一点帮助,如果想仔细学习的话还是要结合

机器学习——支持向量机(SVM)

南楼画角 提交于 2019-11-29 09:39:42
支持向量机原理 支持向量机要解决的问题其实就是寻求最优分类边界。且最大化支持向量间距,用直线或者平面,分隔分隔超平面。 基于核函数的升维变换 通过名为核函数的特征变换,增加新的特征,使得低维度空间中的线性不可分问题变为高维度空间中的线性可分问题。 线性核函数 : linear ,不通过核函数进行维度提升,仅在原始维度空间中寻求线性分类边界。 基于线性核函数的SVM分类相关API: import sklearn.svm as svm model = svm.SVC(kernel='linear') model.fit(train_x, train_y) 案例:对 multiple2.txt 中的数据进行分类。 import numpy as np import sklearn.model_selection as ms import sklearn.svm as svm import sklearn.metrics as sm import matplotlib.pyplot as mp x, y = [], [] data = np.loadtxt('../data/multiple2.txt', delimiter=',', dtype='f8') x = data[:, :-1] y = data[:, -1] train_x, test_x, train_y, test_y

支持向量机

馋奶兔 提交于 2019-11-29 06:20:43
什么是支持向量机 支持向量机 Support Vector Machine是一种监督式学习的方法,可广泛应用于统计分类及回归分析中,支持向量机属于一般化线性分类器,这个分类器的特点是它们能够同时最小经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘分类器 一些定义 统计分类 回归分析 线性分类器 最小经验误差 几何边缘区 来源: https://www.cnblogs.com/raisok/p/11458788.html

skLearn 支持向量机

拟墨画扇 提交于 2019-11-29 03:51:46
## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Learn 可视化数据:主成分分析(PCA) SciKit-Learn 预处理数据 SciKit-Learn K均值聚类 SciKit-Learn 支持向量机 SciKit-Learn 速查 前面章节尝试了K均值聚类模型,准确率并不高。接下来我们尝试一种新方法:支持向量机(SVM)。 支持向量机 支持向量机(support vector machine/SVM),通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。本系列教程聚焦于SciKit-Learn 库的使用介绍,关于支持向量机详细原理,限于篇幅不再赘述,读者可参考相关资料。 如前所诉,K均值聚类模型是一种无监督学习模型,与此不同,支持向量机是一种有监督学习模型,是很常用的一种机器学习模型。 创建模型 下面的代码,创建了一个支持向量机模型。 import numpy as np from sklearn import datasets # 加载 `digits` 数据集 digits = datasets.load_digits() # 导入

机器学习之SVM支持向量机笔记

有些话、适合烂在心里 提交于 2019-11-29 02:08:13
数学理论部分 1.svm支持向量机是什么? 如下图所示,SVM的目标就是寻找一条图中的黑线,使得这条线到两个分类的距离最大,即寻找最大间隔 2.超平面:我们定义那条黑线为超平面,函数公式为 ƒ(x)= w T x + b ,当ƒ(x)= w T x + b=0时为黑线处,大于或者小于分别表示一个类别。 3.分类:根据超平面我们可以进行如下定义,完成分类 【注】我们将类别 y i 定义为正负一是为了方便计算边界条件 ,就拿1分类举例,因为y i 为1,所以 yi(w T x + b )>=1仍然成立,这个分类的边界为 yi(w T x + b)=1,我们顺利的将标签y与特征x均放入了一个公式当中。 4.距离计算: 样本点到超平面距离为 ,样本之间的间隔为 4.1推导样本点到平面距离: 方法一: , ,两个公式联立可得 ,||w||为范数,是所有元素平方和再开方,w是一个方向向量 方法二:利用中学的距离公式,点到直线的距离公式 ,现在已知直线是ƒ(x)= w T x + b,所以 4.2推导:从3中可以知道分类的边界是 yi(w T x + b)=1,而 yi=1,所以w T x + b=1,于是单边间距为 ,总间距为 5.拉格朗日乘数法:对于多元函数 ƒ(x,y)在约束条件φ(x,y)情况下求极值可以使用拉格朗日乘数法,首先加入一个拉格朗日乘数λ,构造出拉格朗日函数 ,对 x、y

支持向量机分类原理概述

自古美人都是妖i 提交于 2019-11-28 05:23:48
支持向量机分类原理概述 支持向量机(SVMs)是一组相关的监督学习方法,用于分析数据和识别模式,用于分类和回归分析。 最初的SVM算法是由弗拉基米尔。弗尼克发明的,目前的标准化身(软利润)是由科琳娜科尔特斯和弗拉迪米尔。瓦尼克提出的。 支持向量机在高或无限维度空间中构造超平面或超平面,可用于分类、回归或其他任务。 超平面与任何类最近的训练数据点之间的距离最大,因此,这是一个很好的分离,因为一般来说,越大的边界越低,分类器的泛化误差就越低。 我们想要找到最大的边缘超平面,它把有yi=1的点和yi=-1分开。 任何超平面都可以写成满足点的集合。 我们想要选择w和b来最大化边缘,或者在平行的超平面之间的距离,在分离数据的同时,尽可能地分开。 来源: https://www.cnblogs.com/277223178dudu/p/9513596.html

SVM(支持向量机)

佐手、 提交于 2019-11-28 04:59:52
支持向量机是一个点离决策边界越近,离决策面越远的问题 求解的过程主要是通过拉格朗日乘子法,来求解带约束的优化问题,在问题中涉及两个方面,一个是线性的,一个是非线性的,非线性的有 我们平时比较常见的高斯核函数(径向基函数),他的主要做法就是把低维的数据变成高维数据,通过^2的方法 在支持向量基中的参数有 svc__C(松弛因子)和svc__gamma 两个参数,两个参数越大,模型的复杂度也越大 接下来我们使用一组人脸数据来进行模型,我们会进行参数调节 第一步数据载入 from sklearn.datasets import fetch_lfw_people #从datasets数据包中获取数据 import pandas as pd import matplotlib.pyplot as plt faces = fetch_lfw_people(min_faces_per_person=60) #不小于60张图片 print(faces.target_names) #输出照片里的人物名字 print(faces.images.shape) #输出照片的大小, 639张, 62*47表示的是像素点,每个像素点代表的是一个数据 第二步 取前15张图片,画成3行5列的图片 fig, ax = plt.subplots(3, 5) for i, axi in enumerate(ax

机器学习算法:支持向量机

ε祈祈猫儿з 提交于 2019-11-27 12:08:04
支持向量机 适用问题:二分类问题 模型类型:判别模型 模型特点:分离超平面、核技巧 学习策略:极小化正则化合页损失、软件额最大化 学习算法:概率计算公式、EM算法 定义: 支持向量机(Support Vector Machine, SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。SVM使用铰链损失函数(hinge loss)计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器 。SVM可以通过核方法进行非线性分类,是常见的核学习方法之一。 原理: 线性可分性(linear separability) 在分类问题中给定输入数据和学习目标: ,其中输入数据的每个样本都包含多个特征并由此构成特征空间: ,而学习目标为二元变量示负类(negative class)和正类(positive class)。 若输入数据所在的特征空间存在作为决策边界(decision boundary)的超平面将学习目标按正类和负类分开,并使任意样本的点到平面距离大于等于1 : 则称该分类问题具有线性可分性,参数分别为超平面的法向量和截距。 满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类: 所有在上间隔边界上方的样本属于正类,在下间隔边界下方的样本属于负类。两个间隔边界的距离被定义为边距

Python——支持向量机(SVM)

戏子无情 提交于 2019-11-27 03:25:06
SVM的目的 是寻找区分两类的超平面(hyper plane),使边际(margin)最大。该超平面到一侧最近点的距离等于到另一侧最近点的距离,两侧的两个超平面平行。 线性可区分 (linear separable):映射到直角平面坐标系就是可以直接用直线将其区分 线性不可区分 (linear inseparable):映射到直角平面坐标系就是不可以直接用直线将其区分 定义与公式建立: W:weight vectot n是特征值的个数 反应在二维平面,其方程可写为: 则平面上方的样本满足: 则平面下方的样本满足: 调整weight,使超平面定义边际的两边: for for 即对二分类,定义超平面上方的样本标签都为+1,超平面下方的样本标签都为-1。 由两式可得: ,对所有i都成立 (1) 所有的坐落在两边的边际超平面上的点被称为支持向量(support vectors) 两边任意超平面上的点到中间超平面的距离为: 其中: 是向量的范数 if than 所以最大边际距离为: 如何求超平面(MMH)? 1、公式(1)可以变为有限制的凸规划问题 2、利用KKT条件和拉格朗日公式,可以推出MMK可以被表示为以下决定边界: 其中 是支持向量点 (support vector)的类别标记(class label),取+1或-1, 是要测试的实例, 和 都是单一数值型参数, 是支持向量的个数。

支持向量机_原理

做~自己de王妃 提交于 2019-11-27 03:22:51
运用自带的SVM分类器 1)svmtrain函数,其是一个训练分类模型的函数:SVMStruct = svmtrain(Training,Group,Name,Value),其输入参数为(训练数据,训练数据相应组属性,可选参数名,可选参数的值),输出为一个结构体。 可选参数有很多,包括boxconstraint,kernel_function,kernelcachelimit,kktviolationlevel,method,kktviolationlevel,mlp_params,options,polyorder,rbf_sigma,showplot,tolkkt, 1、kernel_function(核函数类型):可选的核函数有linear,quadratic,polynomial,rbf,mlp,@kfun ,如果不设置核函数类型,那么默认的选用线性核函数linear。 2、showplot(绘图):是一个布尔值,用来指示是否绘制分类数据(这里是训练数据)和分类线。但是这个绘图功能只支持绘制有两个特征值的数据,也就是二维的点数据。(默认为false),在svmtrain函数中,如果将showplot设置为true,程序会自动在figure中用不同的颜色绘制出训练数据中两个类的点以及通过训练数据获得的分类线,并标注出哪些点是支持向量。 3、boxconstraint