美文网首页
核函数的概念以及在SVM上的应用

核函数的概念以及在SVM上的应用

作者: 爱吃鱼的夏侯莲子 | 来源:发表于2020-02-01 09:08 被阅读0次

高斯核函数

激励函数中\theta^Tx=\theta_0 + \theta_1x_1 + \theta_2x_2 + ... + \theta_nx_n

现在准备用新的特征值f_1,f_2,... 来替换 x_1,x_2,...

f定义为两个向量的相似度:

例如,有一个标记向量l^{(i)},某个样本的特征向量x和其的相似度为:
f_i = similarity(x, l^{(i)}) = exp(-\frac{|| x-l^{(i)} ||^2}{2\sigma^2})

PS:|| x || 是 x向量的范数。

该核函数又称之为高斯核函数(Gaussian Kernels)

xl^{(i)}很相似时,f_i \approx 1;当两者差距很大时,f_i \approx 0

高斯核函数中有个关键参数\sigma,它的大小决定了,该函数值的变化速度。当\sigma很小时,f_i的变化就会很快,两个向量一点细微的差距就会本放大。当\sigma变大时,则相反:

举个例子,假设设计三个新的特征变量f_1,f_2,f_3
\theta_0 + \theta_1f_1 + \theta_2f_2 + \theta_3f_3 \geq 0时,通过预测函数h(\theta)预测为1。

我们假设\theta_0=-0.5, \theta_1=1, \theta_2=1, \theta_3=0

当样本x接近l_1时,f_1 \approx 1f_2 \approx 0f_3 \approx 0,可以得出上述表达式为-0.5 + 1 + 0 + 0 = 0.5,可以预测该样本的输出为1,以此类推,可以得出在标记向量l_1,l_2附近的向量即预测为1,远离的预测为0:

应用到支持向量机上

选取标记向量

在实际应用中,将每个样本作为标记向量。
假设有样本x^{(1)},x^{(2)},...,x^{(m)},同样的,将每个样本都定义为标记点,l^{(1)},l^{(2)},...,l^{(m)},即:x^{(1)}=l^{(1)},x^{(2)}=l^{(2)},...,x^{(m)}=l^{(m)}

对于某一个样本(x^{(i)},y^{(i)})来说:
f_1^{(i)} = similarity(x^{(i)}, l^{(1)})
f_2^{(i)} = similarity(x^{(i)}, l^{(2)})
...
f_i^{(i)} = similarity(x^{(i)}, l^{(i)})=1
...
f_m^{(i)} = similarity(x^{(i)}, l^{(m)})

PS:在这其中,第i个样本向量和第i个标记向量是同一个,所以值为1。

对于某一个样本的新的特征向量f^{(i)}=\left[ \begin{matrix} f^{(i)}_0 \\\ f^{(i)}_1 \\\ f^{(i)}_2 \\\ ... \\\ f^{(i)}_m \end{matrix}\right],同样的f^{(i)}_0始终为1,f是一个m+1的向量。

当使用新的特征值后,当\theta^Tf \geq 0时,即可预测输出值为1。

支持向量机的代价函数为:
J(\theta)=-C \sum_{i=1}^m [y^{(i)} cost_1(\theta^Tx) + (1-y^{(i)}) cost_0(\theta^Tx)] + \frac{1}{2} \sum_{j=1}^n \theta_j^2

将新的特征值替换到支持向量机的代价函数中去:

J(\theta)=-C \sum_{i=1}^m [y^{(i)} cost_1(\theta^Tf^{(i)}) + (1-y^{(i)}) cost_0(\theta^Tf^{(i)})] + \frac{1}{2} \sum_{j=1}^m \theta_j^2

可以看到将x^{(i)}替换成了f^{(i)}\sum_{j=1}^m \theta_j^2中是统计从1到m的参数了,因为,新的特征向量是m+1维向量,而且\theta_0不用修正。

核函数也可以用到逻辑回归上,但是这样计算成本会很高,速度会慢许多。而在SVM上,有许多针对核函数的优化方法,使得核函数在SVM上运行良好。

SVM使用事项

在使用SVM时一般都是使用第三方包提供的SVM优化算法,我们仅需提供:

  • 参数C
  • 选择核函数

参数C

参数C可以看作\frac{1}{\lambda},与\lambda相关的:

  • C过大时,会导致高方差,过拟合的问题;
  • C过小时,会导致高偏差,欠拟合的问题。

因此需要选取折中的C值,可以通过选取多个C值,然后在交叉验证集上简直多个C值的误差,选择最小的。

核函数选择

在核函数的选择上,一般有两种,一个是不用核函数,一个是高斯核函数。

不用核函数也称为线性核函数。它和逻辑回归的算法效果类似。当训练集有大量的特征值,但是样本数量不是太多时,这时拟合一个线性的边界条件会有比较好的效果,也即一般会不使用核函数或使用线性核函数。

高斯核函数 则需要去选择\sigma^2

参数\sigma^2

  • \sigma^2过小时,f核函数的变化速度会很剧烈,会导致高方差的现象;
  • \sigma^2过大时,f核函数的变化速度会很平缓,会导致高偏差的现象。

当训练集的特征值不是特别多,而且有大量的样本数量时可以选择高斯核函数。

当使用高斯核函数时,一个很重要的操作就是特征值的缩放,因为计算相似度时,会计算|| x-l^{(i)} ||^2,当每个特征值的取值范围相差很大时,求得的范数会受范围大的特征值的影响。为了避免这种情况,需要缩放到相近的范围内。

多分类问题

在处理多元分类问题时,与逻辑分类和神经网络类似,也是训练多个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

相关文章

  • 核函数的概念以及在SVM上的应用

    高斯核函数 激励函数中 现在准备用新的特征值 来替换 将定义为两个向量的相似度: 例如,有一个标记向量,某个样本的...

  • 超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

    在 SVM 白板推导| 由最大间隔化目标演化的损失函数推导过程 中白板手推了 SVM 的原理,并介绍了硬间隔核函数...

  • Polynomial Kernel

    核函数实现转换 + 内积 首先采用线性核配合原始SVM;然后考虑对偶配合各种核函数

  • sklearn中随机测试数据:sklearn包中SVM算法库的使

    目录 SVM相关知识点回顾1.1. SVM与SVR1.2. 核函数sklearn中SVM相关库的简介2.1. 分类...

  • 072 FM&FFM

    FM和SVM多项式核差异 SVM多项式核函数 上式中可以看出多项式核起到对特征交叉的作用,但是当样本中存在大量的稀...

  • 机器学习小组第十周打卡

    学习目标 知识点描述:致敬真神:支持向量机 学习目标: SVM算法原理及数学推导 SVM算法中的核函数 SVM算法...

  • 2018-12-16

    svm糖尿病预测 项目描述:基于python的sklearn库实现用svm预测糖尿病患者,使用rbf核函数。svm...

  • 支持向量机(support vector machine)

    SVM是一种二分类模型,他的基本模型是定义在特征空间上的间隔最大的线性分类器。当使用不同的核函数时,可以使得SVM...

  • 10 SVM - 核函数

    09 SVM - 线性不可分模型 十一、核函数初识 假设: 函数Ф是一个从低维特征空间到高维特征空间的一个映射,那...

  • LR与SVM

    LR 最大化似然函数: 决策边界: 核函数:, 实际中LR不采用核函数方法,因为SVM只依赖于支持向量,而LR考虑...

网友评论

      本文标题:核函数的概念以及在SVM上的应用

      本文链接:https://www.haomeiwen.com/subject/kcsnthtx.html