[机器学习]机器学习笔记整理08- SVM算法原理及实现

来源:互联网 发布:转换文件格式的软件 编辑:程序博客网 时间:2024/05/20 20:21
<html>

1 背景

最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出
目前的版本(soft margin)是由Corinna Cortes 和 Vapnik在1993年提出,并在1995年发表
深度学习(2012)出现之前,SVM被认为机器学习中近十几年来最成功,表现最好的算法

2 机器学习的一般框架

训练集 => 提取特征向量 => 结合一定的算法(分类器:比如决策树,KNN)=>得到结果

3 介绍

3.1 例子
这里写图片描述
两类?哪条线最好?

3.2 SVM寻找区分两类的超平面(hyper plane), 使边际(margin)最大
这里写图片描述

总共可以有多少个可能的超平面?无数条
如何选取使边际(margin)最大的超平面 (Max Margin Hyperplane)?
超平面到一侧最近点的距离等于到另一侧最近点的距离,两侧的两个超平面平行

4 线性可区分(linear separable)和线性不可区分(linear inseparable)

这里写图片描述

这里写图片描述
以上3张图均为线性不可区分,我们后续的课程会讨论,现在只关注线性可区分。

5 定义与公式建立

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

6 求解

这里写图片描述

这里写图片描述

这里写图片描述

7 例子

这里写图片描述

这里写图片描述


代码简单实现

from sklearn import svmx = [[2, 0], [1, 1], [3, 3],[2,6]]y = [0, 0, 1,2]clf = svm.SVC()clf.fit(x, y)print clf# get support vectorsprint clf.support_vectors_# get indices of support vectorsprint clf.support_# get number of support vectors for each classprint clf.n_support_

##输出结果

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',  max_iter=-1, probability=False, random_state=None, shrinking=True,  tol=0.001, verbose=False)[[ 2.  0.] [ 1.  1.] [ 3.  3.] [ 2.  6.]][0 1 2 3][2 1 1]
0 0
原创粉丝点击