支持向量机的学习说是刚刚开始,又不合理,只能说隔了很长的时间再看,终于在分类这块的层面上有了新的认识。
总的来说,支持向量机分为线性支持向量机和非线性支持向量机,线性支持向量机又可以分为硬间隔最大化线性支持向量机和軟间隔最大化线性支持向量机;非线性支持向量机需要选择合适的核函数,从而达到非线性分类。
线性支持向量机和线性分类和logictic regression分类的比较:
(1)线性支持向量机只支持二分类,而逻辑回归既支持二分类又支持多分类;
(2)进行二分类的时候,逻辑回归模型原始输出为g(z),可以解释为概率(x是正例时候的概率);线性支持向量机算法输出是SVM模型,给出一个新的数据点x,模型基于w'x的值做预测,默认情况下,如果w'x》=则结果为正例,否则为负。
昨天参照网上的例程写了一个二分类的小程序,有一下几点体会:
(1)训练模型前,一定要对数据进行预处理,一般是数据归一化吧,因为分类基本上是把复杂的大量数据分成简单的类别,值域上最容易造成很大的差别。如果你的数据是随机生成的【0,1】或者【-1,1】的随机数据,本人认为到不用再归一化了,视分类情况而定吧。
(2)对训练数据和测试数据的标记,在训练和预测的时候,数据的组成部分里是一直都有标记的,对每一组数据进行标记,而不是想当然的对某一行或者某一列进行标记,标记矩阵的维数要和输入的训练数据和测试数据的维数相同,要不然就不能对所有的样本进行标记。
(3)初学阶段即使是直接调用MATLAB中的函数模型,也要懂得算法的理论原理,要不然知识机械的调用,算法是怎样运行的和你一点关系都没有。