Lnton 羚通算法算力云平台【OpenCV-Python】教程:如何理解 SVM

线性可分

下图有两种类型的数据,红色和蓝色。在 kNN 中,对于一个测试数据,我们用来测量它与所有训练样本的距离,并取距离最小的一个。测量所有的距离需要大量的时间,存储所有的训练样本需要大量的内存。但是考虑到图像中给出的数据,我们需要那么多吗?

 

考虑另一个想法。我们找到一条直线,f (x) = a x 1 + b x 2 + c f (x)=ax_1+bx_2+cf (x)=ax 1+bx 2+c,它将两个数据分为两个区域。当我们得到一个新的 test_data X XX 时,只需将它代入 f (X) f (X) f (X)。如果 f ( X ) > 0 f (X)>0f (X)>0,它属于蓝色组,否则它属于红色组。我们可以称这条线为决策边界。这是非常简单、高效和节省内存的。这种可以用一条直线 (或高维的超平面) 分为两部分的数据称为线性可分数据。

所以在上图中,你可以看到有可能会有很多这样的线,我们到底选哪一个呢?直观地说,这条线应该离所有点越远越好。为什么?因为输入的数据中可能会有噪声。该数据不应影响分类精度。所以选择一条最远的线可以增强对噪音的免疫力。所以 SVM 所做的是找到一条与训练样本距离最小的直线 (或超平面)。请看下图中穿过中心的粗体线。

 

线性不可分

假设有一些数据不能用一条直线将他们分成两部分。假如:-3,3 属于类别 X, -1,1 属于类别 O,很明显,他们不能线性可分,但是也有一些方法可以解决这些问题,我们可以通过方程 f (x) = x 2 f (x)=x^2f (x)=x 2 将数据映射,这样,9 分为 X 和 1 分为 O,就变成可分的了。我们可以将一维数据转换为二维数据。我们可以用 f (x) = ( x , x 2 ) f (x)=(x,x^2) f (x)=(x,x 2) 函数来映射这个数据。然后 X 变成 (-3,9) 和 (3,9),而 O 变成 (-1,1) 和 (1,1)。这也是线性可分的。简而言之,低维空间中的非线性可分数据在高维空间中变为线性可分的可能性更大。

一般来说,可以将 d 维空间中的点映射到某个 D 维空间 (D>d) 来检验线性可分性的可能性。有一种思想可以通过在低维输入 (特征) 空间中进行计算来帮助计算高维 (核) 空间中的点积。

参数 C 应该如何选择?很明显,这个问题的答案取决于训练数据的分布方式。虽然没有普遍的答案,但考虑以下规则是有用的:

较大的 C 值给出的解错误分类错误较小,但边际较小。考虑到在这种情况下,错误分类的代价是昂贵的。由于优化的目的是使参数最小,因此不允许出现很少的误分类错误。C 值越小,解的余量越大,分类误差越大。在这种情况下,最小化没有考虑那么多的和项,所以它更专注于找到一个有大 Margin 的超平面。

Lnton 羚通 svm 可以通过多种方法扩展到多类别分类问题。此外,SVM 对于大规模数据集的训练可能会比较耗时,因此在处理大规模数据时,常常使用优化算法和特征选择等技巧来加速训练过程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值