[DL]机器学习算法之支持向量机(Support Vector Machine)

来源:互联网 发布:js是什么防水材料 编辑:程序博客网 时间:2024/06/06 19:08

SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。

SVM的主要思想可以概括为两点:

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

选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
线性核函数K(x,y)=xy
多项式核函数K(x,y)=[(xy)+1]d
径向基函数K(x,y)=exp(|xy|2/d2;
二层神经网络核函数K(x,y)=tanh(a(xy)+b.

下面是一个应用SVM进行回归的例子:

效果如下图:
这里写图片描述
代码如下:

import numpy as npfrom sklearn.svm import SVRimport matplotlib.pyplot as plt# 造数据X = np.sort(5 * np.random.rand(40, 1), axis=0)y = np.sin(X).ravel()# 添加噪声y[::5] += 3 * (0.5 - np.random.rand(8))# 训练模型svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)svr_lin = SVR(kernel='linear', C=1e3)svr_poly = SVR(kernel='poly', C=1e3, degree=2)y_rbf = svr_rbf.fit(X, y).predict(X)y_lin = svr_lin.fit(X, y).predict(X)y_poly = svr_poly.fit(X, y).predict(X)# 查看回归效果lw = 2plt.scatter(X, y, color='darkorange', label='data')plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model')plt.plot(X, y_lin, color='c', lw=lw, label='Linear model')plt.plot(X, y_poly, color='cornflowerblue', lw=lw, label='Polynomial model')plt.xlabel('data')plt.ylabel('target')plt.title('Support Vector Regression')plt.legend()plt.show()
阅读全文
0 0
原创粉丝点击