SVM(Support Vector Machines)

SVM(支持向量机)

  • 类型:二分类模型
  • 针对:线性不可分问题
  • 方法:通过核函数将实例中的特征映射为空间中的一些点,
  • 目标:画出一条线,最好的区分两类点
  • 适用情况:中小型数据、非线性、高维、分类问题
  • 思想:在无法线性分割高维数据的非线性问题中,希望用超平面这样一种类线性的方法来分割高维数据。这需要将数据

一、相关概念

-01-决策面/超平面:用于确定方向,样本特征是高维的
-02-最优决策面:能完全分类的决策面
-03-分类间隔:最优决策面前提下的虚线间隔
-04-SVM最优解:最大的分类间隔下的情况,margin越大,分错的概率越小,鲁棒性越强。
-05-支持向量:最优解情况下虚线穿过的样本点,也就是支持这种最优情况的样本点。
-06-核函数(kernel):将向量的维度从低维映射到高维,降低运算复杂度。

二、Python实现

X = [[2, 0], [1, 1], [2,3]]
y = [0, 0, 1]

from sklearn import svm
clf = svm.SVC(kernel = 'linear')  # .SVC()就是 SVM 的方程,参数 kernel 为线性核函数
clf.fit(X, y)  
print(clf.predict([[2,0]])) # 预测一个新的点

print(clf) # 打印分类器 clf 的一系列参数
print(clf.support_vectors_)
print(clf.support_) # 属于支持向量的点的 index 
print(clf.n_support_)  # 在每一个类中有多少个点属于支持向量

三、SVM算法特性

  • 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以 SVM 不太容易产生 overfitting。
  • SVM 训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。
  • 一个 SVM 如果训练得出的支持向量个数比较少,那么SVM 训练出的模型比较容易被泛化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值