机器学习之支持向量机

一 支持向量机(SVM)基本概率

1.1 定义

SVM:寻找到一个超平面使样本分成两类,并且间隔最大

1.2 硬间隔和软间隔

(1)硬间隔

严格地让所有实例都不在最大间隔之间,并且位于正确的一边
问题
它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感

(2)软间隔

尽可能在保持最大间隔宽阔和限制间隔违例之间找到良好的平衡
超参数C:C值越小,则间隔越宽,但是间隔违例也会越多

1.3 支持向量机流程

  1. 对样本数据进行归一化
  2. 应用核函数对样本进行映射(最常采用和核函数是RBF和Linear,在样本线性可分时,Linear效果要比RBF好)
  3. 用cross-validation和grid-search对超参数进行优选
  4. 用最优参数训练得到模型
  5. 测试

二 支持向量机API

2.1 SVC

svm.SVC(C=1.0, kernel=‘rbf’, degree=3,coef0=0.0,random_state=None)

C: 惩罚系数,C越大,对误分类的惩罚增大,这样会出现训练集的准确率很高,但泛化能力弱,容易导致过拟合。C值小,对误分类的惩罚减小,容错能力增强,泛化能力较强,但也可能欠拟合。

kernel: 核函数类型,参数选择有RBF, Linear, Poly, Sigmoid或者自定义一个核函数。默认的是"RBF":高斯核函数;Linear:线性核函数,Poly:多项式核,Sigmoid:双曲正切函数tanh核。

degree:当kernel='poly’时,表示选择的多项式的最高次数,默认为三次多项式;该参数只对’poly’有用。

coef0: 核函数常数值(y=kx+b中的b值),只有‘poly’和‘sigmoid’核函数有,默认值是0。

from sklearn import svm
estimator = svm.SVC()
estimator.fit(x, y)  

2.2 NuSVC

svm.NuSVC(nu=0.5)

SVC和NuSVC方法基本一致,唯一区别就是损失函数的度量方式不同,NuSVC中的nu参数和SVC中的C参数

nu取值在(0,1)之间,默认是0.5

from sklearn import svm
estimator = svm.NuSVC()
estimator.fit(x, y)  

2.3 LinearSVC

svm.LinearSVC(penalty=‘L2’, loss=‘squared_hinge’, dual=True, C=1.0)

penalty:正则化参数,L1和L2两种参数可选,仅LinearSVC有。

loss:损失函数,有hinge和squared_hinge两种可选,前者又称L1损失,后者称为L2损失,默认是squared_hinge,其中hinge是SVM的标准损失,squared_hinge是hinge的平方

dual:是否转化为对偶问题求解,默认是True。

C:惩罚系数

三 支持向量机优缺点

3.1 优点

(1)在高维空间中非常高效;
(2)即使在数据维度比样本数量大的情况下仍然有效;
(3)在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的;
(4)通用性:不同的核函数与特定的决策函数对应;

3.2 缺点

(1)如果特征数量比样本数量大得多,在选择核函数时要避免过拟合;
(2)对缺失数据敏感;
(3)对于核函数的高维映射解释力不强

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值