1. SVM算法特性:
1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting
1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。
1.3 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。
2. 线性不可分的情况(linearly inseparable case)
2.1 数据集在空间中对应的向量不可被一个超平面区分开
2.2 两个步骤来解决:
- 利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中
- 在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理
下图更容易理解,将一维数据映射到二维空间,就线性可分啦
2.3 如何利用非线性映射把原始数据转化到高维中?
思考问题:
- 如何选择合理的非线性转化把数据转到高纬度中?
- 如何解决计算内积时算法复杂度非常高的问题?
解决方法:
- 使用核方法(kernel trick)