这篇笔记整理下支持向量机(support vector machine)的相关知识点。
支持向量机也是一种用来处理分类问题的算法,与逻辑回归相比,其假设函数发生了变化,不再是Sigmoid函数,而是线性的分段函数,如下图所示,
支持向量机的代价函数为
支持向量机所做的是寻找一个直线来划分数据,使得该直线离两类数据集的距离最大,如下图所示。因此,支持向量机也被称为“大间距分离器”。
SVM的计算过程如下,
1)将每个数据集标记为landmark,
2) 计算每一个数据与这些landmark的相似度函数,得到一个新的特征矢量f =(f1, f2, f3....)'。这里计算相似度的函数,称为kernel函数。Kernel函数有多种选择,
3) 计算theta*f,如果其大于0, 则预测y=1
4) 求解最优化问题,寻找最优的theta值,使得代价函数取极小值。
实际使用SVM包解决问题时,所需要做的是选择合适的C值和kernel函数。C值太大,对应overfit问题,C值太小,对应underfit问题。
对于SVM和线性回归的比较,假设数据集的特征维度为n,数据数目为m,
1)当n>>m时,采用线性回归
2)n较小,m不是特别大的时候,采用SVM
3) 当n<<m时,寻找更多的特征,然后使用线性回归