先引用百度里的介绍:
若所研究的线性规划模型的约束条件全是小于类型,那么可以通过标准化过程引入M个非负的松弛变量。松弛变量的引入常常是为了便于在更大的可行域内求解。若为0,则收敛到原有状态,若大于零,则约束松弛。
对线性规划问题的研究是基于标准型进行的。因此对于给定的非标准型线性规划问题的数学模型,则需要将其化为标准型。一般地,对于不同形式的线性规划模型,可以采用一些方法将其化为标准型。其中,当约束条件为“≤”(“≥”)类型的线性规划问题,可在不等式左边加上(或者减去)一个非负的新变量,即可化为等式。这个新增的非负变量称为松弛变量(剩余变量)。在目标函数中一般认为新增的松弛变量的系数为零。
其实约束条件中的不等式也是特殊的等式,引入松弛变量后,可使用的工具更多,求解也会更容易。下面还会介绍人工智能中松弛变量的应用。
常用的求解方法就是,拉格朗日乘数法:
带有不等式约束的问题的基本形式如下:
具体的例子:
首先引入拉格朗日函数:
对函数中四个变量进行求导,并令其导数为0:
求解出解,之后带入函数中求得极值。
人工智能中松弛变量
人工智能中的线性分类约束,通常都属于“硬间隔”分类法,即要求每个节点都必须满足响应的约束,这样对噪声是非常敏感的,当大量样本中出现一些不符合规律的点时,会对结果产生严重的影响。所以引入松弛变量,给分类的阈值加一个非负的变量。这样对于原本小于阈值1的点(离群点),就放弃对它的精确分类,这作为一种损失,好处就是不用移动分类的间隔线。如下,但对于离群点添加了松弛变量后,必然造成损失,那么对于优化的问题就要体现出损失,那么就要衡量损失,通常或。把损失放入目标函数中还需添加一个惩罚因子C。对比如下:
对于添加了松弛变量后的优化问题,只有离群点才有松弛变量,即未离群的点松弛变量为0。对于离群越远的点,松弛变量越大。C代表了一个权重,即离群的点造成的损失比重,而且C是在解优化问题之前必须确定的值,是一个定值,优化其实也是调C参数的过程(不断迭代尝试),每个C值对应一个分类器。C对于处理数据集偏斜很多作用,当正负两类样本节点数量差距过大时,可以适当增大样本节点少的类别的C值。每个分类器都有分类线,每次调整的时候线都有可能移动;此时有些点不离群,调整之后可能离群了,反之亦然,调整之后都要计算目标函数的值,优化的过程就是这样的迭代过程。在原始的低维空间中,样本相当的不可分,无论你怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点。对比如下: