单纯形上的投影可以计算如下。
这种情况下的拉格朗日公式如下:
$$左(x,\mu\right)=\frac{1}{2}{\left\|x-y\right\|}^{2}+\mu\left(\boldsymbol{1}^{T}x-1\right)\tag1$$
诀窍是隐式地保留非负约束。
因此,对偶函数如下所示:
\开始{align}g\左(\mu\right)&=\inf_{x\suckeq 0}L\左(x,\mu\right)&&\text{}\\&=\inf_{x\succeq 0}\sum_{i=1}^{n}\left(\frac{1}{2}{\left){x}_{i} -{y}(y)_{i} \右)}^{2}+\mu{x}_{i} \right)-\mu&&\text{组件形式}\tag2\结束{对齐}
利用组件明智的形式,给出了解决方案:
\开始{align}x_i^\ast=\左(y_i-\mu\右)_+\tag3\结束{对齐}
其中,解决方案通过投影包含非负约束${\mathbb{R}}_{+}$
通过找到$\亩$保持约束(注意,因为上面是等式约束,$\亩$可以有任何值,并且不限于非负性美元\lambda$).
目标函数(来自KKT)如下所示:
\开始{align}0=h\左(\mu\右)=\sum_{i=1}^{n}{x}_{i} ^{\ast}-1&=\sum_{i=1}^{n}{\left({y}(y)_{i} -\mu\right)}_{+}-1\tag4\结束{对齐}
以上是分段线性函数$\亩$.
由于函数是连续的,但它是不可微的,因为它的分段性质理论说,我们必须使用无导数的方法来求根。可以使用二分法例如。
函数导数由以下公式给出:
$$\开始{align}\frac{\mathrm{d}}{\mathm{d}\mu}h\左{y}_{i} -\mu\right)}_{+}\\&=\sum_{i=1}^{n}-{\mathbf{1}}_{\left\{{y}(y)_{i} -\mu>0\right\}}\结束{对齐}$$
实际上,可以使用牛顿迭代法求解(因为落入两个截面之间的接合处的概率几乎为零)。
准确/精确解决方案
如果我们查看函数的值$h\left(\mu\right)=\sum_{i=1}^{n}{left({y}(y)_{i} -\mu\right)}_{+}-1$人们可以很容易地推断出计算精确解的方法:
![在此处输入图像描述](https://i.sstatic.net/4gK4X.png)
在上面的参数中$\亩$取向量的值$ {y}_{我}$边缘有附加值(值大于最大值$ {y}(y)_{我}$和最小值的较低值$ {y}(y)_{我}$).
通过迭代这些值,可以很容易地跟踪每边值大于的2个值$ 0 $然后降低$ 0 $(如果其中一个为零,则为$\亩$). 因为它是线性函数,我们有2个点,所以我们可以推断出模型的所有参数$y=a x+b$.比的最佳值$\hat{\mu}=-\frac{b}{a}$.
我编写了MATLAB代码,在数学堆栈交换问题2327504-GitHub.我扩展了该案例的方法美元\总额{x}_{i} =r,\;r>0$(伪半径)。
有一个测试将结果与通过CVX公司.