机器学习实战之支持向量机SVM-2

续:机器学习实战之支持向量机SVM-1

后来对前面的代码进行优化,主要是3方面:

1.更加合理选择j,取代原来的随机选择j;

j是从已更新的alpha值的列表中选取,也就是已发现的支持向量列表中选取。

选择原则是:max(abs(Ei-Ej)),

2.选择ai,先遍历整个数据集,后面只遍历支持向量数据集;只更新支持向量的ai,更加合理。

3.将数据结构化,整洁易懂。

对非线性数据的处理,要用到核函数。

机器学习实战之支持向量机SVM-2

机器学习实战之支持向量机SVM-2

这里用到高斯核函数,只用用核函数代替原来代码中的内积,就可以了。

代码中是将数据集和单条数据的内积都保存到(m,m)矩阵k中,用到内积的情况下直接调用就可以。

需要注意的是:

用到核函数以后,原来的w就失去了意义。

核函数用在两个高维映射的内积的情况下,将其转换成二维内积的计算方式。

二维的非线性优化问题,转化成高维,就成了线型优化问题;高维映射的内积,通过核函数转化成二维内积来进行计算。

机器学习实战之支持向量机SVM-2


里面有两个手动设定的参数,一个是高斯函数的delta值,一个是C;

delta值的设置关系到准确率:存在一个delta值的最优范围。1.3左右。

机器学习实战之支持向量机SVM-2


机器学习实战之支持向量机SVM-2


机器学习实战之支持向量机SVM-2



支持向量的最优数目,就是在保证高的准确率条件下,尽可能的少,以减少运算量。

机器学习实战之支持向量机SVM-2