zoukankan      html  css  js  c++  java
  • 支持向量机(SVM)

    支持向量机SVM(Support Vector Machine)作为一种可训练的机器学习方法,依靠小样本学习后的模型参数进行导航星提取,可以得到分布均匀且恒星数量大为减少的导航星表

      基本情况 Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景。 支持向量机方法是在近年来提出的一种新方法。

      SVM的主要思想可以概括为两点: (1) 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;(2) 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界

    在学习这种方法时,首先要弄清楚这种方法考虑问题的特点,这就要从线性可分的最简单情况讨论起,在没有弄懂其原理之前,不要急于学习线性不可分等较复杂的情况,支持向量机在设计时,需要用到条件极值问题的求解,因此需用拉格朗日乘子理论,但对多数人来说,以前学到的或常用的是约束条件为等式表示的方式,但在此要用到以不等式作为必须满足的条件,此时只要了解拉格朗日理论的有关结论就行。

    svm的一般特征

      (1SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。

      (2SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此,用户必须提供其他参数,如使用核函数类型和引入松弛变量等。

      (3)通过对数据中每个分类属性引入一个哑变量,SVM可以应用与分类数据。

    (4)SVM不仅可以用在二类问题,还可以很好的处理多类问题。

    SVM原理简介

      SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升

      维和线性化.升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起维数灾难,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归).一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了维数灾难.这一切要归功于核函数的展开和计算理论.

      选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:

      (1)线性核函数K(x,y)=x·y

      (2)多项式核函数K(x,y)=[(x·y)+1]d

      (3)径向基函数K(x,y)=exp(-|x-y|^2/d^2)

      (4)二层神经网络核函数K(x,y)=tanh(a(x·y)+b)

    主要软件包

      Lush -- an Lisp-like interpreted/compiled language with C/C++/Fortran interfaces that has packages to interface to a number of different SVM implementations. Interfaces to LASVM, LIBSVM, mySVM, SVQP, SVQP2 (SVQP3 in future) are available. Leverage these against Lush's other interfaces to machine learning, hidden markov models, numerical libraries (LAPACK, BLAS, GSL), and builtin vector/matrix/tensor engine.

      SVMlight -- a popular implementation of the SVM algorithm by Thorsten Joachims; it can be used to solve classification, regression and ranking problems.

      LIBSVM -- A Library for Support Vector Machines, Chih-Chung Chang and Chih-Jen Lin

      YALE -- a powerful machine learning toolbox containing wrappers for SVMLight, LibSVM, and MySVM in addition to many evaluation and preprocessing methods.

      LS-SVMLab - Matlab/C SVM toolbox - well-documented, many features

      Gist -- implementation of the SVM algorithm with feature selection.

      Weka -- a machine learning toolkit that includes an implementation of an SVM classifier; Weka can be used both interactively though a graphical interface or as a software library. (One of them is called "SMO". In the GUI Weka explorer, it is under the "classify" tab if you "Choose" an algorithm.)

      OSU SVM - Matlab implementation based on LIBSVM

      Torch - C++ machine learning library with SVM

    Shogun - Large Scale Machine Learning Toolbox with interfaces to Octave, Matlab, Python, R

      Spider - Machine learning library for Matlab

      kernlab - Kernel-based Machine Learning library for R

      e1071 - Machine learning library for R

      SimpleSVM - SimpleSVM toolbox for Matlab

      SVM and Kernel Methods Matlab Toolbox

      PCP -- C program for supervised pattern classification. Includes LIBSVM wrapper.

      TinySVM -- a small SVM implementation, written in C++


    Trackback: http://baike.baidu.com/view/960509.html

  • 相关阅读:
    使用SharePoint PeopleEditor控件
    python快排的三种写法
    js获取浏览器屏幕高度、宽度等
    Spring总结> 第一结 概述
    js设置body高度、宽度为浏览器窗口高度、宽度
    简单的Spring调用jdbc.porperties配置信息,以mysql为例
    SSM(Spring + Spring MVC + MyBatis)整合
    【原创】MS SQL2005 存储过程分页(简洁型)后续完善更新中......
    【转载】动态sql语句基本语法
    Provider模式Demo
  • 原文地址:https://www.cnblogs.com/JohnShao/p/2150410.html
Copyright © 2011-2022 走看看