svm

什么是SVM

房东的猫 提交于 2020-01-11 08:24:34
一、什么是SVM SVM主要针对小样本数据进行学习、分类和预测(有时也叫回归)的一种方法,有很好的泛化能力 二、SVM原理 举个例子: 好吧,故事是这样子的: 在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。 魔鬼在桌子上似乎有规律放了两种颜色的球,说:“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。” 增加难度 然后,在SVM 工具箱中有另一个更加重要的 trick。 魔鬼看到大侠已经学会了一个trick,于是魔鬼给了大侠一个新的挑战 现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间 再后来 无聊的大人们,把这些球叫做 「data」,把棍子 叫做 「classifier」, 最大间隙trick 叫做「optimization最优化」, 拍桌子叫做「kernelling内核」, 那张纸叫做「hyperplane超平面」 三、SVM内核选择 Linear核:主要用于线性可分的情形。参数少,速度快,适用于一般数据 RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。 poly:参数较多,在另外两种都不适用的时候选择 就拟合程度来讲,linear在线性可分的情况下和rbf想过差不多,在线性不可分的情况下rbf明显优于linear

卷积神经网络提取特征并用于SVM

拥有回忆 提交于 2020-01-11 00:16:00
目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个。图片大小为16x16。要求必须使用SVM作为二分类的分类器。 本文重点是如何使用卷积神经网络(CNN)来提取手写数字图片特征,主要想看如何提取特征的请直接看源代码部分的94行左右,只要对tensorflow有一点了解就可以看懂。在最后会有完整的源代码、处理后数据的分享链接。转载请保留原文链接,谢谢。 UCI手写数字的数据集 源数据下载: http://oddmqitza.bkt.clouddn.com/archivetempsemeion.data 其中前256维为16x16的图片,后10维为one hot编码的标签。即0010000000代表2,1000000000代表0. 组合成图片大约是这样的: 卷积和池化形象理解 卷积 池化 仔细的看,慢慢想就能明白CNN提取特征的思想巧妙之处。 能明白这两点,剩下的东西就和普通的神经网络区别不大了。 为什么要用CNN提取特征? 1.由于卷积和池化计算的性质,使得图像中的平移部分对于最后的特征向量是没有影响的。从这一角度说,提取到的特征更不容易过拟合。而且由于平移不变性,所以平移字符进行变造是无意义的,省去了再对样本进行变造的过程。 2.CNN抽取出的特征要比简单的投影、方向,重心都要更科学。不会让特征提取成为最后提高准确率的瓶颈、天花板 3.可以利用不同的卷积

SVM学习笔记

ぐ巨炮叔叔 提交于 2020-01-11 00:12:58
最近在学习如何利用支持向量机进行分类,这里列举一下面试中常见的有关支持向量机的问题: 例如:SVM的原理是什么?SVM为什么采用间隔最大化?为什么SVM对缺失数据敏感?SVM如何处理多分类问题?具体参见以下链接。 参考: 【1】常见有关SVM的面试问题:https://blog.csdn.net/szlcw1/article/details/52259668 【2】关于C以及gamma在SVM中的作用: https://blog.csdn.net/wusecaiyun/article/details/49681431 【3】类似【2】: https://www.cnblogs.com/pinard/p/6126077.html 来源: CSDN 作者: 一颗橡树 链接: https://blog.csdn.net/JasonRaySHD/article/details/103928343

SVM的损失函数(Hinge Loss)

社会主义新天地 提交于 2020-01-10 11:28:27
损失函数 是用来衡量一个预测器在对输入数据进行分类预测时的质量好坏。损失值越小,分类器的效果越好,越能反映输入数据与输出类别标签的关系(虽然我们的模型有时候会过拟合——这是由于训练数据被过度拟合,导致我们的模型失去了泛化能力)。 相反,损失值越大,我们需要花更多的精力来提升模型的准确率。就参数化学习而言,这涉及到调整参数,比如需要调节权重矩阵W或偏置向量B,以提高分类的精度。 Hinge Loss 多分类svm: 损失函数的计算方法为: ,其中i代表第i个样品,j代表第j个种类,那么y_i代表第i个 样品的真实种类。 其中,常用的数学表达式为: ,但为了与代码中的统一,从而稍微变动以下 ,对于y_i来说同理。 计算正确类的预测值,和其他类的预测值之间的差距,如果正确类的预测值大于所有不正确的预测值则损失函数为0,证明当前的W和b所计算得到的效果很好。 当把损失值推广到整个训练数据集,则应为: 两分类SVM: 在二分类情况下,铰链函数公式如下: L(y) = max(0 , 1 – t⋅y) 其中,y是预测值(-1到1之间),t为目标值(1或 -1)。其含义为:y的值在 -1到1之间即可,并不鼓励 |y|>1,即让某个样本能够正确分类就可以了,不鼓励分类器过度自信,当样本与分割线的距离超过1时并不会有任何奖励。目的在于使分类器更专注于整体的分类误差。 计算案例

SVM非线性MATLAB实现

旧巷老猫 提交于 2020-01-07 17:42:49
应用了高斯核 clear,没有画ROC曲线 tic load('C:\Users\Administrator\Desktop\Cancer.mat') mu=Cancer(1:444,:);zi=Cancer(445:end,:); %整理数据,第一列(1,2)作为标签 cycle_N=1; %进行cycle_N次交叉验证 N=10; %N=10十折 c=100; [N1,col]=size(mu); [N2,col]=size(zi); q1=floor(N1/N);q2=floor(N2/N); %ACC=zeros(1,10);MCC=zeros(1,10);F1=zeros(1,10); %TP_ROC=zeros(1,10);FP_ROC=zeros(1,10); for kk=1:cycle_N %进行NN次交叉训练 for k=1:N %每次交叉训练为N折 if k==1 pos_train=mu(q1+1:end,:);pos_test=mu(1:q1,:); non_train=zi(q2+1:end,:);non_test=zi(1:q2,:); elseif k==N pos_train=mu(1:q1*(k-1),:);pos_test=mu(q1*(k-1)+1:end,:); non_train=zi(1:q2*(k-1),:);non_test=zi

How to adapt HOG features vector to linear svm input

戏子无情 提交于 2020-01-07 02:34:40
问题 I'm using HOG in order to extract a set of features trough an Image A. the HOG returns a features' vector of 1xN elements. However the linear SVM accept only 2 features for each sample i.e the training data matrix's size is Mx2. so how i can adapt the HOG vector to be trained on linear SVM. Please help me. Thanks 回答1: What do you mean by "the linear SVM accept only 2 features for each sample"? You may be confused on how the SVM function accepts its training data. Here's a quick example of how

Plot scikit-learn (sklearn) SVM decision boundary / surface

元气小坏坏 提交于 2020-01-04 08:06:07
问题 I am currently performing multi class SVM with linear kernel using python's scikit library. The sample training data and testing data are as given below: Model data: x = [[20,32,45,33,32,44,0],[23,32,45,12,32,66,11],[16,32,45,12,32,44,23],[120,2,55,62,82,14,81],[30,222,115,12,42,64,91],[220,12,55,222,82,14,181],[30,222,315,12,222,64,111]] y = [0,0,0,1,1,2,2] I want to plot the decision boundary and visualize the datasets. Can someone please help to plot this type of data. The data given above

Can SVM solution change after shuffling the inputs?

≡放荡痞女 提交于 2020-01-04 02:05:32
问题 When training a support vector machine (SVM) for classification with exactly the same data I obtain different results based on the order of the inputs, ie. if I shuffle the data I get different SVMs. If I understood the theory correctly, the SVM solution should be the same regardless of the order of the inputs, so how come I get the different results? Is there any implementation "detail" in SVM why shuffling would change the solution? I have already checked my code several times, because I

机器学习之支持向量机(SVM)小结

∥☆過路亽.° 提交于 2020-01-02 20:23:40
1. 分类 支持向量机包含三种: 线性可分支持向量机:当训练数据线性可分时,可通过硬间隔最大化,学习一个线性的分类器,叫线性可分支持向量机,也称硬间隔支持向量机 线性支持向量机:当训练数据近似线性可分时,可通过软间隔最大化,也学习一个线性的分类器,叫线性支持向量机,也称为软间隔支持向量机 非线性支持向量机:当训练数据线性不可分时,通过使用核函数技巧及软间隔最大化,学习一个非线性的支持向量机 2. 公式理解及推导 2.1. 线性可分支持向量机: 线性可分支持向量机原来及公式推导 2.2. 线性支持向量机: 相较于1的基础上,加入了松弛变量和惩罚参数C,其目标函数变成: 最小化目标函数包含两层含义:使 1 2 ∥ w ∥ 2 \frac{1}{2}\left \| w \right \|^{2} 2 1 ​ ∥ w ∥ 2 的值尽量小即间隔尽量大,同时使误分类点的个数尽量小,C是调和二者的系数。其他推导类似1的过程, 线性支持向量机公式推导参考 2.3. 非线性支持向量机: 相较于2的基础上,加入了核技巧,通过一个非线性变换将输入空间(高维)对应于一个特征空间(低维),使得在输入空间中的非线性模型对应于特征空间的线性模型,再进一步去求解。推导过程类似2,只需将其中对偶形式中的內积换成核函数即可。 2.3.1. 常用的核函数及选取规则: 常用的核:Linear核与RBF核 选取规则:

One class SVM probability estimates and what is the different between one class SVM and clustering

被刻印的时光 ゝ 提交于 2020-01-02 09:54:05
问题 I have a set of images. I would like to learn a one class SVM (OC-SVM) to model the distribution of a particular class (positive) as I dont have enough examples to represent the other classes (negative). What I understood about OC-SVM is that it tries to separate the data from the origin or in other words it tries to learn a hyper sphere to fit the one class data. My questions are, If I want to use the output of the OC-SVM as a probability estimate, how can I do it? What is the difference