我们紧接上一节核函数(1),在本节中讨论一些细节。
上一节中,用到了地标L,那么如何选择地标呢?
通常是根据训练集的数量选择地标的数量,即若训练集中有m个实例,则我们选取m个地标,并且令:。这样做的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上,即:
于是,我们就可以将核函数运用到SVM中,修改我们的SVM假设为:
给定x,计算新特征 f ,当时,预测 y=1,否则反之。
相应的修改代价函数为:
在具体实施过程中,我们还需对最后的正则化项进行些微调整 ,在计算时,我们用代替,其中M是根据我们选择不同的核函数而设置的不同的矩阵。这样做的原因是为了简化计算。注意,这样一来,核函数不再适用于逻辑回归,因为使用M计算将非常耗费时间(这里不懂,留待以后解决,有懂的小伙伴可以留言)。
现如今,有很多成熟好用的SVM软件包(如,liblinear,libsvm),我们不需要自己动手实现最小化SVM代价函数的方法,只需编写我们需要的核函数即可,记住,如果我们使用高斯核函数等类的核函数,那么在使用之前进行特征缩放(归一化)是非常必要的。
当然,SVM也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel),当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,很容易拟合,可以采用这种不带核函数的SVM。
下面是支持向量机的两个参数 C 和 σ 的影响:
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差;
C较小时,相当于 λ 较大,可能会导致欠拟合,高偏差;
σ 较大时,可能会导致低方差,高偏差;
σ 较小时,可能会导致低偏差,高方差。