拉格朗日乘数法是在推导主成分分析时重要的数学技巧,今天这篇文章就来总结一下我对拉格朗日乘数法的学习。
我们先来一个简单的例子,假如x是一个长度为D的向量,其中包含了x1,…,xD个随机变量。现在又有一函数f(x),我们想知道当x12+…+ xD2=1,也就是xTx=1时,f(x)的最大值是多少。
假如没有这个约束条件,那么我们可以能会选择对f(x)求一阶导使其等于0,然后我们这些拐点用二阶导验证其是否为Local maximum,最后比较得出Global maximum。
这个方法有两个问题,第一个最直接的问题就是没有考虑到约束条件xTx=1;其次,如果f(x)关于x单调递增,那么直接求导将没有办法帮助我们找到需要的结果。
所以,为了找到满足约束条件的前提下的f(x)的最大值,我们需要使用拉格朗日乘数法。
在具体讲解拉格朗日乘数法如何解决本例子之前,我们先来看一个更普适性的例子,假如我们有以下函数:
【函数1】
其中λ为我们新引入的变量。大家可以想象,如果这时我们想要寻找该函数的极值,需要使两个偏导都等于0:
关于λ的偏导是十分容易的,它就等于g(x),也就是说对于所有满足g(x)=0的x,其中有一个x能够使整个函数1取到最大值。而由于g(x)始终为0,所以这个最大值也是当g(x)=0时,f(x)的最大值。
上面的逻辑有一些tricky,大家可以多读几遍消化一下。总得来说,我们通过在f(x)后面添加一个新项,保证我们求出来了当g(x)=0时,f(x)的最大值。大家肯定发现了这个结果与我们前述情境的目标完美契合(我们想知道当x12+…+ xD2=1,也就是xTx=1时,f(x)的最大值是多少)。我们可以令g(x)=1-xTx,那么遵照前述的方法,我们就可以计算出当1-xTx=0,也就是xTx=1时,f(x)的最大值。
这一方法就被称为拉格朗日乘数法(Lagrange Multiplier Method),而其中新加项的λ即为相应的拉格朗日乘数(Lagrange Multiplier)。
我们来将上述方法运用到具体的实例中,假如:
那么我们可以运用拉格朗日乘数法,添加一项新项:
对其关于x求导:
将结果等于0即可得出:
所以,通过拉格朗日乘数法,我们发现了所有矩阵S的特征向量能够使f(x)=xTSx达到极值。那么我们如何判断哪个特征向量能够使其取到最大值呢?我们可以在方程两边左乘xT,即可还原出f(x):
所以,我们只需要选取最大特征根对应的特征向量,即可使f(x)达到最大值。
上面都是关于拉格朗日乘数法的讲解和应用,实际上,如果掌握了这一方法,PCA的推导也将变得十分简单。如果你觉得你还是对拉格朗日乘数法一知半解,我可以在提供一幅维基百科上的插图辅助理解:
如图,我们可以把虚线看作f(x, y)的“等高线”,也就是在位于同一条虚线上,所有x, y的取值组合都会导向相同的f(x, y)值。同时,这个f(x, y)是一个“盆地”,也就是中间低,两边高的架构。而拉格朗日乘数法在做的,就是当x, y满足某种关系g(x, y)=c时,寻找满足条件下的f(x, y)的最大or最小值(这里的图示似乎是一个寻找最小值的例子)。
如上,就是有关拉格朗日乘数法的全部内容,如果你觉得本文章对你有帮助,也请不要忘记给个二连(赞和在看,在看一定要点啊!)。