基于分类边界的方法:将低维空间的点映射到高维空间,使它们成为线性可分,再使用线性划分的原理来判断分类边界。内存消耗大,难以解释,运行和调参麻烦。
能够处理非线性特征的相互作用;无需依赖整个数据;可以提高泛化能力。
当观测样本很多时,效率并不是很高;对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;对缺失数据敏感。
[1] 给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
[2] 除了进行
线性分类
之外,SVM还可以核技巧有效地进行
非线性分类
,将其输入隐式映射到高维特征空间中。当数据未被标记时,不能进行监督式学习,需要用非监督式学习,它会尝试找出数据到簇的自然聚类,并将新数据映射到这些已形成的簇。将支持向量机改进的聚类算法被称为支持向量聚类,当数据未被标记或者仅一些数据被标记时,支持向量聚类经常在工业应用中用作分类步骤的预处理。
[3] SVM分为SVC和SVR两个方法:
SVC中也可以实现多类分类问题,
而且默认使用的是 1vs1 的投票机制,需要建立的分类器很多。SVC也考虑到了累不平衡问题,处理方式在fit方法fit(X, y, sample_weight=None)。
SVR用来预测或者回归。
接下来主要介绍SVC方法。
1 2 3 4 5 6 7 8 9 10 11 12
|
from sklearn import svm
X = [[0, 0], [1, 1], [1, 0]] y = [0, 1, 1] clf = svm.SVC() clf.fit(X, y)
result = clf.predict([[2, 2], [3, 3]]) print(result) print(clf.support_vectors_) print(clf.support_) print(clf.n_support_)
|
适于二分类的机器学习算法
,
决策树
,
卷积神经网络
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
[2]
https://blog.csdn.net/clover_daisy/article/details/54616496
[3]
https://blog.csdn.net/sinat_35257860/article/details/70140508
[4]
https://www.cnblogs.com/xiaotan-code/p/6695049.html