机器学习第七周(三)--using SVM

Using SVM

使用SVM中需要确定参数C以及核函数。
前一讲中我们提到标记点的选取和核函数的选择尤为重要。作者这里列举了一些核函数,但只推荐线性核函数和高斯核函数,其它用的都较少。

几种常见核函数

线性核函数

线性核函数也叫无核函数,满足θTx≥0,则预测结果y=1。当你的特征数量n很大,但数据量m很小时,由于数据量不足,在这种情况下如果使用其他核函数,你可能会过拟合,因此,此时线性核函数是一个合理的选择。

高斯核函数

注意:如果你有大小很不一样的特征变量,在使用高斯核函数之前,对它们进行归一化是很重要的。

多项式核函数

多项式核函数一般用的也很少。

多分类

多分类
对于多分类情况,可以选择合适的SVM包,大部分SVM包已经内置了多分类函数。
还有一种方法是前面逻辑回归提到的一对多的方法,假设K分类,你需要训练出K个SVM,每一个SVM把一个类同其它类分开。

Logistic Regression vs SVM

什么时候该用逻辑回归什么时候该用SVM呢?
逻辑回归和SVM对比
n是特征变量的个数,m是训练样本数

  • 1、如果n(相对于m)大很多时,使用逻辑回归,或者使用无核函数的SVM(线性核函数)。
    如文本分类的问题,特征数量n=10000,而且如果你的训练集大小为m=10,在这个问题中,你有10000个特征变量,对应10000个词,但是你只有10个训练样本。这种情况下就比较适合使用逻辑回归或者线性核函数的SVM了。
  • 2、如果n较小,m是中等大小,(例如n为1到1000之间的值,m为10到10000之间的值)那么使用高斯核函数的SVM效果好一些。
  • 3、如果n很小,m很大时(如n=1000,m=100000+),那么高斯核函数的SVM运行起来会很慢,这种情况下,需要尝试手动地创建更多的特征变量,然后使用逻辑回归或者无核函数的SVM(线性核函数)。

注意:逻辑回归和不带核函数的SVM它们是非常相似的算法,如上图中,有时候它们表现是相似的。根据实现的具体情况,其中一个可能会比另一个更加有效。具体选择。


SVM vs NN?

什么时候采用神经网络呢?
对于上面所有的情况,一个好的神经网络也很可能会非常有效,但是神经网络训练起来可能会很慢。但是如果你有一个非常好的SVM实现包,它会运行得比较快,比神经网络快很多。

SVM vs NN

SVM的优化问题,实际上是一个凸优化问题。因此好的SVM优化软件包总是会找到全局最小值,或者接近它的值。 对于SVM,你不需要担心局部最优。在实际应用中,局部最优对神经网络来说不是非常大,但是也不小。所以使用SVM,你不用考虑这部分问题。