首页/文章/ 详情

LS-OPT中的代理模型_支持向量回归

1年前浏览1053

机器学习世界中有许多的核方法。

支持向量机(svm)就是其中之一,在20世纪后期甚至优于当时的神经网络。但是现在因为数据的数量有了突飞猛进的发展,所以核方法并不占优势。因为核方法最适合于中小型数据集,但是在结果的可解释性很重要的问题上核方法还是有优势的。


核方法使用核(或基函数)将输入数据映射到不同的空间。

通过这种映射,简单的模型可以在新的特征空间而不是输入空间上训练,从而提高模型的性能。


接下来我们通过一个小故事来更好的理解支持向量机(SVM)

总结

核方法使用核(或一组基函数)将低维输入空间映射到高维特征空间。并在新的特征空间中训练一个线性模型(ax+b类型的线性模型)。我们实际上是在原始输入空间中训练一个高阶模型(例如ax2+bx+c类型)。通过这样做,既保留了简单模型的所有优势(如训练速度、具有解析解、方差更低),也获得了更复杂模型的优势(更好的映射、更低的偏差)。这就是内核方法如此强大的原因!


支持向量机

持向量机的核心思想是:最大化数据点与界限间的距离,是一种监督的机器学习算法。也是一种二分类模型算法,

的基本模是定义在特征空间的间隔最大的线性分类器,说白了就是在中间画一条线,然后以“最好地”区分这两类点。

以至如果以后有了新的点,这条线也能估出很好的分类。SVM适合中小型数据样本、非线性、高维的分类问题


支持向量回归

SVR(SupportVector Regression,支持向量回归)是支持向量机(SVM)的重要应用分支。SVR回归是找到一个回归平面,让一个集 合的所有数据到该平面的距离最近


下面我们用python来玩一下支持向量机、


采用鸢尾花数据集,这个数据集包含了150个鸢尾花样本,对应3种鸢尾花,各50个样本,以及它们各自对应的4种关于花外形的数据,适用于分类任务。

import numpy as np

import matplotlib.pyplot as plt

from sklearn import svm, datasets


#导入数据

iris = datasets.load_iris()

X = iris.data[:, :2] #我们可以只考虑前两个特征

#我们可以使用双数据集来避免丑陋的切片

y = iris.target


#我们创建了一个SVM实例并对数据进行拟合。不进行缩放

#是因为我们想要画出支持向量

C = 1.0 #SVM正则化参数

svc = svm.SVC(kernel='linear', C=1,gamma=1).fit(X, y)


#创建一个网格来进行可视化

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

h = (x_max / x_min)/100

xx, yy = np.meshgrid(np.arange(x_min, x_max, h),

np.arange(y_min, y_max, h))


plt.subplot(1, 1, 1)

Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)


plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)

plt.xlabel('Sepal length')

plt.ylabel('Sepal width')

plt.xlim(xx.min(), xx.max())

plt.title('SVC with linear kernel')

plt.show()

如图,他将3种鸢尾花根据花萼宽度与花萼长度的不同进行了归类划分。




来源:FEAer
非线性python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-01
最近编辑:1年前
FEAer
本科 | CAE工程师 到点就下班的CAE打工人
获赞 71粉丝 97文章 80课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈