线性SVM分类器在很多情况下表现得出乎意料地好
但是很多数据集并不是线性可分的。
处理非线性数据集方法:
1.增加更多的特征。例如多项式特征(正如你在第4章所做的那样);在某些情况下可以变成线性可分的数据。
但是低次数的多项式不能处理非常复杂的数据集,而高次数的多项式却产生了大量的特征,会使模型变得慢。
你可以运用一个被称为“核技巧”(kernel trick)的神奇数学技巧。它可以取得就像你添加了许多多项式,甚至有高次数的多项式。
2.定义一个相似函数,即高斯径向基函数(Gaussian Radial Basis Function,RBF)转换特征,特征转换后变为线性可分特征。
最简单的方法是在数据集中的每一个样本的位置创建地标。这将产生更多的维度从而增加了转换后数据集是线性可分的可能性。但缺点是,m个样本,n个特征的训练集被转换成了m个实例,m个特征的训练集(假设你删除了原始特征)。这样一来,如果你的训练集非常大,你最终会得到同样大的特征。
“核” 技巧再一次显现了它在 SVM 上的神奇之处:高斯核让你可以获得同样好的结果成为可能,就像你在相似特征法添加了许多相似特征一样。