机器学习实战(支持向量机)

支持向量机

线性SVM分类

硬间隔分类:让所有实例都在正确的一边的分类。

硬间隔变成软间隔:引入松弛变量C。

C是调节间隔与准确率的因子,C值越大,越不愿放弃那些离群点;c值越小,越不重视那些离群点。(模型过拟合,C值调小进行正则化)

软间隔分类:在“街道”的宽度和间隔违例(错误分类)之间找到良好的平衡的分类。

svm_clf = SVC(kernel=“linear”, C=float(“inf”))
线性核函数

非线性SVM分类

通过非线性变换,将非线性问题变为线性问题

  • 添加特征

    • 指定kernel=“ploy”其中γ、r、d属于超参,需要调参定义
  • 添加相似特征

    • 指定kernel=“rbf”,其中γ属于超参,要求大于0,需要调参定义(过拟合降低,欠拟合提升)

    • 增加gamma值,钟形曲线变得更窄会变得更窄,每个实例的影响范围更小,减小gamma变的更平坦

核函数的选取

  • 高维用线性,不行换特征;低维试线性,不行换高斯

SVM回归

参数

参数 解释
C 惩罚项参数
loss 损失函数。当值为epsilon_insensitive时损失函数为L(它是标准SVR的损失函数);值为square_epsilon_insensitive时表示为L的平方
epsilon 浮点数,用于loss中的sigma参数
dual 布尔值。如果为True,则解决对偶问题,如果为False,则解决原始问题,当n_samples>n_features时,倾向于采用False
tol 浮点数,指定终止迭代的阈值
fit_intercept 布尔值,如果为True,则计算截距,即决策函数中的常数项;否则忽略截距

属性

  • coef_:一个数组,给出了各个特征的权重。

  • intercept_:一个数组,隔出了截距,即决定函数中的常数项。

方法

  • fit(x, [,y]):训练模型。
  • predict(x):用模型进行预测,返回预测值
  • score(x,y[,sample_weight]):返回(x,y)上预测的准确率

基本思想

  1. 在类之间拟合可能最宽的街道,寻找最大的决策边界
  2. 支持向量:决策边界位于“街道”边缘的实例
  3. 放缩的原因:支持向量机拟合类别之间可能的、最宽的“街道”,所以如果训练集不经缩放,SVM将趋于忽略值较小的特征。
  4. 当训练实例的数量小于特征数量时,解决对偶问题比原始问题更迅速。

Sklearn构建的SVM分类器

参数 解释
C 惩罚项
kernel 核函数类型,str类型,默认为’rbf’
degree 多项式核函数的阶数,int类型,可选参数,默认为3
gamma 核函数系数,float类型,可选参数,默认为auto。只对’rbf’ ,’poly’ ,’sigmod’有效。如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features。
coef0 核函数中的独立项,float类型,可选参数,默认为0.0。只有对’poly’ 和,’sigmod’核函数有用,是指其中的参数c。

你可能感兴趣的:(学习笔记,机器学习,svm)