scikit-learn中关于SVM的一些常识
来源:互联网 发布:手机视频剪辑拼接软件 编辑:程序博客网 时间:2024/04/30 17:19
一 . 支持向量机的优缺点分析
支持向量机(SVMs)是一个监督学习算法集,可以用来进行分类、回归以及异常值检测等任务。
这种算法的优点有:
(1)在高维空间中效率非常高;
(2)对于维数大于样本数目的情况也很有效;
(3)在决策函数(待优化的函数)中,只有部分训练样本点会被用到(仅有支持向量会对决策函数有影响),因此,对于样本空间很大的情况,能够节省内存;
(4)对于线性不可分的情形,引入核函数(避免维度灾难),可以引入不同的核函数来构造决策函数,常见的有(线性核,多项式核,高斯核,拉普拉斯核,Sigmoid核),也可以自定义一些其他的核;
支持向量机的缺点包括:
(1)如果特征(属性)数目远大于样本数目,支持向量机表现出的效果可能不是很好;
(2)支持向量机的输出不具有概率意义;(如需得到概率输出,需进行很繁琐的处理)
二. 步步深入支持向量机
首先一般所说的支持向量机是一个二分类算法,对于线性分类和非线性分类具有较好的效果。通常所说的支持向量机经过扩展,也可以解决多分类问题,另外,支持向量也可以用于回归问题。对于支持向量机的理解,需要从线性(可分)支持向量机,引入核函数解决线性不可分问题(线性不可分支持向量机),软间隔线性(可分)支持向量机,支持向量回归四个层面步步深入来理解SVMs.
1. 对于训练样本集(假设是这些样本是线性可分的),试图找到一个划分超平面将这两类样本分开,但是这样的划分超平面不止一个,我们需要找到位于两类训练样本“正中间”的那一个划分超平面,因为这个超平面对训练样本的“容忍”性最优,这个超平面的分类结果最鲁棒,对新样本的泛化能力最强。
线性(可分)支持向量机的算法过程如下:
对于上面算法中的第一步,是如何构造上面所示的约束优化问题?按照划分超平面的要求,建模可得一个凸二次规划问题(如下所示),这个形式称为SVM的基本形式。
必定可以得到全局最优解,但可以采用更加高效的算法进行求解。这里,是将上面的基本形式按照拉格朗日乘子法转化为其对偶问题,对偶问题的形式即为所要构造的约束优化问题。具体如何利用拉格朗日乘子法将SVM的基本形式转化为其对偶问题这里不进行推导,具体推导过程可参考http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
在 SVM模型中提到了两种非常典型的算法(拉格朗日乘子法,SMO算法),利用拉格朗日乘子法转化为其对偶问题,然后对于这个对偶问题(是一个多变量二次规划问题),采用SMO算法(序列最小化算法)可以高效求解。线性可分支持向量机是支持向量最简单最理想的模型,现实中往往是比较复杂的情形。
- scikit-learn中关于SVM的一些常识
- 在python,Scikit-learn的SVM算法
- scikit-learn svm初探
- scikit-learn SVM
- scikit-learn中的SVM
- scikit-learn SVM
- [机器学习篇]基于Scikit learn库中KNN,SVM算法的笔迹识别
- [机器学习篇]基于Scikit learn库中KNN,SVM算法的笔迹识别
- 支持向量机原理与实践(二):scikit-learn中SVM的使用
- Scikit-learn中使用SVM对文本进行分类
- scikit-learn中的SVM使用指南
- Scikit-learn——SVM
- Python Scikit-learn ---- SVM算法
- Python scikit-learn 模块的SVM方法介绍
- 用Python的scikit-learn实现支持向量机SVM
- scikit-learn中PCA的使用方法
- scikit-learn中PCA的使用方法
- scikit-learn中PCA的使用方法
- Android封装之PopupWindow(一) (带demo)
- 【PHP】is_callable()与method_exists()函数
- 1016. 部分A+B (15)
- 小实验、小思考(一)------List添加对象引发的小思考
- 《暗时间》摘要心得1
- scikit-learn中关于SVM的一些常识
- [LeetCode] 141. Linked List Cycle java
- 文章标题
- 关于程序员成长的一些思考
- java环境变量设置方法
- django安装报错error: [Errno 22] invalid mode ('wb') or filename:
- 课前测试
- [LeetCode] 142. Linked List Cycle II java
- 微服务技术栈