核函数的概念以及在SVM上的应用
高斯核函数
激励函数中
现在准备用新的特征值 来替换
将定义为两个向量的相似度:
例如,有一个标记向量,某个样本的特征向量和其的相似度为:
PS: 是 x向量的范数。
该核函数又称之为高斯核函数(Gaussian Kernels)。
当和很相似时,;当两者差距很大时,。
高斯核函数中有个关键参数,它的大小决定了,该函数值的变化速度。当很小时,的变化就会很快,两个向量一点细微的差距就会本放大。当变大时,则相反:
举个例子,假设设计三个新的特征变量:
当时,通过预测函数预测为1。
我们假设
当样本x接近时,,,,可以得出上述表达式为,可以预测该样本的输出为1,以此类推,可以得出在标记向量附近的向量即预测为1,远离的预测为0:
应用到支持向量机上
选取标记向量
在实际应用中,将每个样本作为标记向量。
假设有样本,同样的,将每个样本都定义为标记点,,即:。
对于某一个样本来说:
= similarity
= similarity
...
= similarity
...
= similarity
PS:在这其中,第个样本向量和第个标记向量是同一个,所以值为1。
对于某一个样本的新的特征向量,同样的始终为1,是一个m+1的向量。
当使用新的特征值后,当时,即可预测输出值为1。
支持向量机的代价函数为:
将新的特征值替换到支持向量机的代价函数中去:
可以看到将替换成了,中是统计从1到m的参数了,因为,新的特征向量是m+1维向量,而且不用修正。
核函数也可以用到逻辑回归上,但是这样计算成本会很高,速度会慢许多。而在SVM上,有许多针对核函数的优化方法,使得核函数在SVM上运行良好。
SVM使用事项
在使用SVM时一般都是使用第三方包提供的SVM优化算法,我们仅需提供:
- 参数C
- 选择核函数
参数C
参数C可以看作,与相关的:
- C过大时,会导致高方差,过拟合的问题;
- C过小时,会导致高偏差,欠拟合的问题。
因此需要选取折中的C值,可以通过选取多个C值,然后在交叉验证集上简直多个C值的误差,选择最小的。
核函数选择
在核函数的选择上,一般有两种,一个是不用核函数,一个是高斯核函数。
不用核函数也称为线性核函数。它和逻辑回归的算法效果类似。当训练集有大量的特征值,但是样本数量不是太多时,这时拟合一个线性的边界条件会有比较好的效果,也即一般会不使用核函数或使用线性核函数。
高斯核函数 则需要去选择
参数
- 当过小时,核函数的变化速度会很剧烈,会导致高方差的现象;
- 当过大时,核函数的变化速度会很平缓,会导致高偏差的现象。
当训练集的特征值不是特别多,而且有大量的样本数量时可以选择高斯核函数。
当使用高斯核函数时,一个很重要的操作就是特征值的缩放,因为计算相似度时,会计算,当每个特征值的取值范围相差很大时,求得的范数会受范围大的特征值的影响。为了避免这种情况,需要缩放到相近的范围内。
多分类问题
在处理多元分类问题时,与逻辑分类和神经网络类似,也是训练多个SVM训练器,然后比较取性能最好的一个。
更方便的方式是使用第三方的库函数来实现多元分类问题。
逻辑回归和SVM
定义:n = 样本的特征值数量,m = 样本的数量。
-
当n相对于m来时很大时,比如n=10000,m=1000时,这时选择逻辑回归或者不使用核函数的SVM;
-
当n比较小,m中等大小,比如n=1000,m=10000时,选择SVM(使用高斯核函数)的效果会比较好;
-
当n比较小,m非常大时,比如n=1000,m=50000+时,这时通常手动添加更多的特征值,然后使用逻辑回归或者不使用核函数的SVM来处理。
而神经网络算法,通常都会比这两者来的慢,且需要良好的设计才能取得较好的效果。而且使用SVM时不用担心遇到局部最优的问题。
转载自:
https://codeeper.com/2020/02/01/tech/machine_learning/svm_kernels.html