SVM十问十答

什么是线性分类器?

线性分类器试图通过训练集中的样本得出一个分类超平面,目标是最大程度地区分训练集中不同类别的样本,最终把这个分类超平面应用于新样本的分类。

SVM相比一般的线性分类器有什么不同?

SVM以最大化不同类别之间的间隔为优化目标。

SVM和逻辑回归有什么区别?

  • 逻辑回归通过sigmoid函数缩小了远离分类超平面那些点的信息,而SVM直接忽略了那些点的信息。
  • 逻辑回归输出样本归属于某一类别的概率,而SVM无法直接输出这一概率。

最大化间隔会带来什么好处?

间隔与分类问题的结构风险有关,最大化间隔等于最小化结构风险,从而得到一个更好的分类器。

什么是结构风险?

结构风险是经验风险和置信风险的和。

通常人们在构建一个分类器的时候,首先会关注这个分类器在当前的训练集上的分类误差,误差越小,经验风险也就越小,说明模型越好地拟合了经验。但是仅仅追求分类器在训练集上的性能最优,就会带来过拟合的问题,造成分类器在训练集上天下无双,遇到真实问题却一塌糊涂的现象。于是人们又提出了第二个指标,用来衡量一个分类器的泛化能力,称之为置信风险,大白话就是我能多大程度上信任这个模型,去帮我解决新样本的问题。然而置信风险是很难精确衡量的,目前只能给出一个区间,而模型越简单,置信风险也就越小。

什么是支持向量?

最大化间隔在正样本和负样本的集合上各形成一个边界,位于这两个边界上的样本就是支持向量。后续新样本的分类就只依赖于这些支持向量的信息,从而降低了存储和计算的复杂性。

为什么要变换问题的形式?

为了凑成一个二次规划问题,从而能保证求出全局惟一的最优解。

为什么要转换成拉格朗日对偶问题?

转换为对偶问题能得到更高效的解法,也方便了核函数的引入。

SVM怎么解决线性不可分的问题?

特征空间向更高维的投射可以使原来特征空间里的曲线转化成直线,也就是我们可以获得一个在更高维空间的线性可分问题,同样的也在这个更高维的空间里判断新的样本。

核函数有什么作用?

特征空间升维之后,维数是非线性膨胀的(2维变5维,3维变19维……),很容易造成维灾难。核函数想办法让你在原属性的空间里计算高维空间的决策边界。

标注差错的情况怎么处理?

通过软边缘(Soft Margin)。为所有不满足条件的约束条件引入一个松弛变量,同时在目标函数添加一个惩罚项。惩罚项的乘数因子C在训练中利用试错法确定。

怎样进行多分类?

两种办法:一是「一对其余」,即把每个类别和其余所有类别分别作为正负样本输入;二是「一对一」,两两类别比较后看落入哪一类别,再拿这个类别与第三个类别比较。

原文:http://guoze.me/

谢谢关注websites!

时间: 2024-12-08 17:51:07

SVM十问十答的相关文章

汽车检测SIFT+BOW+SVM

整个执行过程如下:1)获取一个训练数据集. 2)创建BOW训练器并获得视觉词汇. 3)采用词汇训练SVM. 4)尝试对测试图像的图像金字塔采用滑动宽口进行检测. 5)对重叠的矩形使用非极大抑制. 6)输出结果. 该项目的结构如下: |-----car_detector|       |--detector.py| |--__init__.py| |--non_maximum.py| |--pyramid.py| |--sliding_window.py|-----car_sliding_wind

SVM与LR的比较

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重.SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器.而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重.两者的根本目的都是一样的.此外,根据需要,两个方法都可以增加不同的正则化项

在opencv3中利用SVM进行图像目标检测和分类

采用鼠标事件,手动选择样本点,包括目标样本和背景样本.组成训练数据进行训练 1.主函数 #include "stdafx.h" #include "opencv2/opencv.hpp" using namespace cv; using namespace cv::ml; Mat img,image; Mat targetData, backData; bool flag = true; string wdname = "image"; voi

SVM整理

SVM整理 Last modified: 2015.9.2 1.算法总结 支持向量机是Cortes和Vapnik于1995年首先提出的,它在解决小样本,非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中. SVM方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力).   1.1进一步小结

支持向量机(SVM)算法

支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. 具体原理: 1. 在n维空间中找到一个分类超平面,将空间上的点分类.如下图是线性分类的例子. 2. 一般而言,一个点距离超平面的

SVM支持向量机-拉格朗日,对偶算法的初解

许多地方得SVM讲得都很晦涩,不容易理解,最近看到一篇不错的博文写得很好,同时加上自己的理解,重新梳理一下知识要点 http://blog.csdn.net/zouxy09/article/details/17291543 一.引入 SVM是个分类器.我们知道,分类的目的是学会一个分类函数或分类模型(或者叫做分类器),该模型能把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知类别. 对于用于分类的支持向量机,它是个二分类的分类模型.也就是说,给定一个包含正例和反例(正样本点和负样本

监督算法大比拼之BP、SVM、adaboost非线性多分类实验

写在之前: 前些文章曾经细数过从决策树.贝叶斯算法等一些简单的算法到神经网络(BP).支持向量机(SVM).adaboost等一些较为复杂的机器学习算法(对其中感兴趣的朋友可以往前的博客看看),各种算法各有优缺点,基本上都能处理线性与非线性样本集,然通观这些算法来看,个人感觉对于数据(无论线性还是非线性)的分类上来说,里面比较好的当数BP.SVM.adaboost元算法这三种了,由于前面在介绍相应算法原理以及实验的时候所用的样本以及分类情况都是二分类的,对于多分类的情况未曾涉及过,而实际情况往往

支持向量机 人脸识别(SVM)SKLearn

#!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import pylab as pl from sklearn import svm # we create 40 separable points np.random.seed(0)#每次运行结果不变 X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]] #randn2

SVM学习笔记-线性支撑向量机

最大间隔超平面 线性分类器回顾 当数据是线性可分的时候,PLA算法可以帮助我们找到能够正确划分数据的超平面hyperplane,如图所示的那条线. 哪一条线是最好的? 对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的  Eout(w)≤Ein0+Ω(H)dvc=d+1 直观来看,最右边的线是比较好的hyperplane. 为什么最右边的分隔面最好? 对于测量误差的容忍度是最好的.例如对于每