机器学习--支持向量机(三)对偶问题、松弛变量详解

上篇讲到了对偶的式子即:

但是什么是对偶?从哪里能体现到对偶的特性?上面的式子为什么是对\large \alpha求最大值?之前不是求最小问题吗?下面给大家讲解一下原因。

先给出最初的求最小值的表达式,存在约束条件:

                                             \large \underset{w}{min} \frac{\left \| w \right \|^{2}}{2}

                            受限于       \large y_{i}*(w^{T}x_{i} + b) \geq 1,i = 1,2,3,4,,,,N

为了容易数学计算,通过拉格朗日乘子法把约束项添加到求极值的式子中即:

                                 \large L(w,b,\alpha ) = \frac{\left \| w \right \|^{2}}{2}-    \large \sum_{i=1}^{n}\alpha _{i}*(y_{i}*(w^{T}x_{i}+b)-1)

                                   其中要求 \large \alpha>0

现在我们来分析一下,这个式子所代表的物理意义:

首先对\large \alpha求极大值即:

 

 好,到这里我们先看看\small L(w,b,\alpha )为什么是对\large \alpha求极大值而不是极小值呢?(此时针对的是未知数\large \alpha,w和b可以先默认为常数即梯度中提的控制变量)

主要原因是我们引入了约束条件,先分析一种情况即满足约束的情况:

如果\small y_{i}*(w^{T}x_{i}+b)>1,则\small (y_{i}*(w^{T}x_{i}+b)-1)>0,又因为\large \alpha\geq 0,所以整个约束项\small \sum_{i=1}^{n}\alpha _{i}*(y_{i}*(w^{T}x_{i}+b)-1) >0 的,如果此时 \small L(w,b,\alpha )\large \alpha求极大值,那么\small \sum_{i=1}^{n}\alpha _{i}*(y_{i}*(w^{T}x_{i}+b)-1)应该最小才对,因\small \frac{\left \| w \right \|^{2}}{2}-    \small \sum_{i=1}^{n}\alpha _{i}*(y_{i}*(w^{T}x_{i}+b)-1),被减数不变的情况下,减数越小,值就越大,所以此时\large \alpha取0,即我们的式子为:

                                                   \large L(w,b,\alpha ) = \frac{\left \| w \right \|^{2}}{2}

和最初的式子一样了,也就是说在满足条件的情况下,并不影响我们最初所求的式子,如果不满足约束条件呢?

如果\small y_{i}*(w^{T}x_{i}+b)<1时,同理可得:\small \sum_{i=1}^{n}\alpha _{i}*(y_{i}*(w^{T}x_{i}+b)-1) <0,此时\small L(w,b,\alpha )\large \alpha的极大值为\small \propto即无穷大,此时的\large \alpha为无穷大,这个时候我们最初的式子就被淹没了,即使w,b你取任意值都无法求得极小值,这就是加入约束项所导致的结果,这时候大家会不会想,是不是一旦类别分错了是不是就意味着无法求解,目前是这样的,但是后面会针对分错引入松弛变量或者是惩罚函数可以很好的解决这个分错就会无穷大的问题,后面会详细讲解。

好 到这里 我们再看看这个式子:

现在大家应该不难理解了,上式先针对\large \alpha求L的极大值,如果满足约束条件,则再去针对w,b的极小值这样就可以解决问题了,但是呢?这样求解并没有那么简单,怎么办呢?此时就引入了对偶的特性即:

大家能看到这个式子和上面的式子有什么不同呢?是的,求极值的顺序不同了,这里是先对w,b进行求极小值,然后在对\large \alpha求极大值,这就是对偶了即max和min对调,具有对偶特性(对偶是用字数相等、结构形式相同、意义对称) ,大家知道对偶的原因了吧,现在我们再看看这样做是否合理呢?

       我们先从直观上来看一下,对偶之前所求的是最大值中的最小值,对偶之后所求的最小值中的最大值,从表面看最大值中的最小值也要比最小值中的最大值要大,可以说,对偶后的值是对偶前的值的一个下届,其实在某些条件下他们是等价的,数学中有证明,对偶的目的是什么呢?其实就是为了消去w、b,现在就可以对w、b求偏导,令其等于0,然后在带入上式就得到下面这个式子了:

这里就解释了为什么求最大值的原因的了,这个式子有什么特点呢?

我们先看看这样化简有什么好处?

第一个好处就是未知数的个数下降了, 把前面含有w和b的未知数消去了,现在的未知数只剩下\large \alpha _{i}\large \alpha _{j},其他未知数都为已知量,只需要求出\large \alpha就可以求出w和b了:

                                      

                                 

所以现在把问题转移到求拉格朗日因子上了,现在的问题是怎么求 \large \alpha

这个形式一般是通过MSO算法(Sequential minimal optimization),什么是SMO算法呢?在讲解之前还要先讲一下线性不可分情况(这里狭隘理解为线性不可分,因为这里的不可分属于离群值的处理),我们从开始到现在都是线性可分的分情况即:

数据没有相互重合交叉的,然而这是理想情况的数据,现实中更多的数据是线性不可分的,是如下情况:

 这样的数据无法使用线性函数进行分离,如果使用上面的推到过程会面临一个问题,前面提到过,在引入拉格朗日乘子时,如果是不满足约束条件,结果就会是无穷大,无法分类,然而我们常见的数据就是这样的,怎么办才能使用支持向量进行处理呢?

解决方法为引入松弛变量和惩罚函数:

 上图红线和蓝线就是边界线了,而绿线就是分离平面了(针对高维来说),我们最初的目标是希望边界空间越大越好,求倒数后就是\tiny \underset{w}{min} \frac{\left \| w \right \|^{2}}{2}越小越好,这是针对线性可分的情况,现在的问题是我们的数据并不是都在一侧或者你找不到一个线性可分的分离面,如上图中的紫线,在实点的分类中有两个空心点,而空心点中有一个实心点,基于此我们引入惩罚函数,如下式,其中\varepsilon是数据点距离正确分类那边边界线的距离即是紫线所示,约束项1-\varepsilon的意思就是针对错误数据进行偏移边界线,相当于平移边界线,怎么体现我们希望边界空间越大越好,分错的点越少越好的特性呢?在原理的基础上增加惩罚项,同时增加一个松弛因子,使其总和最小的意思就是希望边界空间尽量的大,同时希望分错的点尽量的小。

 

 公式中蓝色的部分为在线性可分问题的基础上加上的惩罚函数部分,当xi在正确一边的时候,ε=0,R为全部的点的数目,C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C徆小的时候,分错的点可能会徆多,不过可能由此得到的模型也会不太正确,所以如何选择C是有徆多学问的,不过在大部分情况下就是通过经验尝试得到的。

现在我们来详细看看为什么是1-\varepsilon _{i},松弛因子到底如何降低这种离群值分错的,先给出图:

上图画圆圈的数据就是支持向量了,开始分析,我们引入的松弛变量\large \varepsilon_{n}\geq 0是针对每一个数据点的,对于位于正确边缘内部和边缘边界的点\large \varepsilon_{n}=0,如上图的右下角的点此时ε=0,并不影响分类,然而对于其他点\large \varepsilon_{n}=\left | y_n - y(x_{n}) \right |,其中\large y_{n}是决策边界即值为1或者-1,而\large y(x_n)是决策面了,强调一下,上图的红线为决策平面,两边是决策边界,对于位于决策面的点\large y(x_n)=0,此时\large \varepsilon_{n}=1,看上图,如\large \varepsilon_{n}> 1说明被分错了的点,此时\large 1-\varepsilon _{n}<0,这时整个决策平面就变为\large y_i(w^Tx_{i}+b)\geq 1-\varepsilon _{n},相当于\large y_i(w^Tx_{i}+b)\geq -?即红线向上左上方平移了,正好可以把离群值分类正确,同理其他可能也是这样分析的,很聪明的方法,他不是一个参数针对所有点,他是通过每一个数据点进行实时调整,同时也因为增加的松弛变量,整个支持向量变多了,这在后面引入核函数后去预测新数据的计算能看出来,因为参与计算的只是支持向量参与运算,这也是起名为支持向量的关键之处。

好,到这里我们加入了线性不可分的情况,然后在进行上面的那些分析,即加入拉格朗日乘子,在经过对偶变化得到了一个新的对偶后的式子,如下(数学公式不推了,和上面一样的):

我们发现和线性可分的情况相比,只有约束条件变化,其他和线性可分形式是一样的,,而且关键的变化的是拉格朗日乘子系数有了上界,我们从上面知道,一旦线性可分分错了,结果就为无穷大,无穷大的原因就是\alpha可以取到无穷大,有了这个条件后就避免了上面的问题,其实想想也是可以想通的,因为分错的原因也是线性不可分的一种情况,因此上面的式子更具有普遍性,更适合我们真实世界的数据。

好,分析到这里我们发现无论是线性可分和不可分问题,我们把问题都转化为其拉格朗日的因子\large \alpha上,因此只需求出这个参数,问题就解决了,同时该式还有更好的特点,那就是可以处理高维问题,这个到后面再说,下面就是如何求解这个\alpha参数,上面我们知道可以利用SMO算法进行求解,那么什么是SMO呢?他有什么神奇的能力可解决这个问题?

到这里基本上支持向量机的原理就讲完了,后面就是计算上面的式子了,同时计算推广到高维的情况,通常使用SMO算法进行处理,高维情况使用核函数比较方便,后面会一一详细讲解,我们下节先对smo算法进行详解。

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值