赞
踩
SVM通过对二分类有监督样本集的学习,力图找到一个划分超平面,使两个异类支持向量到超平面的距离之和(ie间隔)最大
因此SVM的学习目标即为
SVM的基本型:
优点:
缺点:训练数据较大;不能返回分类概率;需要对数据进行标准化处理
算法原理
其算法原理即SVM的算法原理,该算法本身就是为二分类任务设计的
算法求解
在分类任务中,存在三种SVM模型:
1、硬间隔支持向量机(即正统线性可分SVM):当训练数据线性可分
- from sklearn import svm
- clf = svm.SVC()
- clf.fit(trainx, trainy)
- clf.predict(testx)
- clf.score(testx, testy) #返回模型准确率
- # 可以查看支持向量是哪些 #
- clf.support_vectors_
- clf.support_ #支持向量的index
- clf.n_support_ #每类的支持向量有几个
-
- # 对于多分类任务,SVC采取OVO策略 #
- clf = svm.SVC(decision_function_shape='ovo')
2、软间隔支持向量机:当训练数据近似可分(很难确定超平面/线性可分是由于过拟合)
对基本型引入损失函数,从而允许某些样本不满足约束,以降低过拟合风险。为了求解方便使用数学性质更好的替代损失函数surrogate loss,而使用hinge损失,并对每个样本引入松弛变量以表征该样本不满足约束的程度,即为软间隔SVM
基本型重写为
当损失函数选择对率函数,即为逻辑回归模型
- # 可使用随机梯度下降分类器来specify替代损失和正则化项 #
- from sklearn.linear_model import SGDClassifier
- clf = SGDClassifier(loss='hinge', penalty='l2', max_iter=5) #hinge loss返回LinearSVC一样的结果
- # loss还可选'log'/'modified_huber' #
- # 多分类任务,采取OVA策略 #
3、非线性支持向量机:当训练数据不可分/不存在超平面,通过软间隔最大化及核技巧习得
应用场景:异或问题...
利用核函数进行特征映射,将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分
令
核函数的选取对支持向量机的性能至关重要(因为决定了特征空间的好坏)
引入核函数的好处:映射后的模型求解涉及到高维内积计算,而核函数可令特征空间的内积等于在原始空间的函数计算结果,大大降低计算难度;具有普适性,对于一般的损失函数和正则化项,优化问题的最优解都可表示为核函数的线性组合
- from sklearn import LinearSVC #线性核
- clf = svm.LinearSVC()
- clf.fit(trainx, trainy)
- clf.predict(testx)
- # 还可以在svm.SVC(kernel='linear') #
-
- # 对于多分类任务,LinearSVC采取OVO策略 #
- clf = svm.SVC(decision_function_shape='ovr')
模型评估:模型自带评分函数/分类模型通用评分函数
clf.score(testx, testy) #返回mean accuracy
算法原理
不同于传统回归模型当且仅当 f(x) 与 y 完全相同时损失才为零,SVR仅当 f(x) 与 y 之间的差别绝对值大于
相当于以 f(x) 为中心构建了一个宽度为
算法求解
1、存在超平面时的SVR
- from sklearn import svm
- reg = svm.SVR()
- reg.fix(trainx, trainy)
- reg.predict(testx)
2、不存在超平面的SVR:引入核
- from sklearn import svm
- reg = svm.LinearSVR() #计算更快
- reg = svm.SVR(kernel='linear')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。