python和机器学习 第十一章 支撑向量机SVM

决策边界不一定的问题——不适定问题

解决办法
逻辑回归:损失函数
SVM:寻找一个最优的决策边界距离两个类别的最近的样本最远

一、Hard Margin SVM

python和机器学习 第十一章 支撑向量机SVM_第1张图片
最大化margin就是求一个最大的d值
python和机器学习 第十一章 支撑向量机SVM_第2张图片
样本真实的特征用wT表示
python和机器学习 第十一章 支撑向量机SVM_第3张图片
python和机器学习 第十一章 支撑向量机SVM_第4张图片
=====>
python和机器学习 第十一章 支撑向量机SVM_第5张图片
=====>
python和机器学习 第十一章 支撑向量机SVM_第6张图片
=====>上面两个式子可以合为一个
在这里插入图片描述
最大化d就是
======>
python和机器学习 第十一章 支撑向量机SVM_第7张图片
最终目标:
======>
python和机器学习 第十一章 支撑向量机SVM_第8张图片

二、Soft Margin 和 SVM 的正则化

python和机器学习 第十一章 支撑向量机SVM_第9张图片
使用SVM训练模型前要进行标准化处理

from sklearn.svm import LinearSVC
svc = LinearSVC(C=1e9) #C越小,容错空间越大,落在margin内的点越多
svc.fit(X_standard,y)

三、使用SVM处理非线性的数据

from sklearn.preprocessing import StandardScaler,PolynomialFeatures
from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline

def PolynomialSVC(degree,C=1.0):
    return Pipeline([
        ("Poly",PolynomialFeatures(degree=degree)),
        ("std_scaler",StandardScaler()),
        ("LinearSVC",LinearSVC(C=C))
    ])

四、使用多项式核函数的SVM

1、什么是核函数

不用使用PolynomialFeature,而是通过一个函数K,直接得到x(i)的多项式特征x’(i)

from sklearn.svm import SVC
def PolynomialKernelSVC(degree,C=1.0):
    return Pipeline([
        ("std_scaler",StandardScaler()),
        ("KernelSVC",SVC(kernel="poly",degree=degree,C=C))
    ])

你可能感兴趣的:(python与机器学习)