支持向量机
线性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)上预测的准确率
基本思想
- 在类之间拟合可能最宽的街道,寻找最大的决策边界
- 支持向量:决策边界位于“街道”边缘的实例
- 放缩的原因:支持向量机拟合类别之间可能的、最宽的“街道”,所以如果训练集不经缩放,SVM将趋于忽略值较小的特征。
- 当训练实例的数量小于特征数量时,解决对偶问题比原始问题更迅速。
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。 |