CSDN这渣排版……还是看这里吧……点击打开链接
最小椭圆覆蓋问题
上凸优化的时候老师讲了一个问题:给定一堆样本点,如何用一个最小的椭圆把它们全部包括进来。其实就是解一个凸优化问题:
minimizeA,bsubject to det(A) ||Axi+b||≤1 i=1,2,…,mA≥0
之所以写成这种形式,是因为椭圆的方程可以表达为:
(x−a)TW(x−a)≤1
其中
W
是一个描述椭圆形状的正定矩阵,
a
是椭圆的中心,而椭圆的面积与
det(W)
成正比。根据正定阵的性质,
W
一定可以分解为一个矩阵
A
及其转置的乘积,
W=ATA
,
det(W)=det(A)2
。因此最小化
det(W)
就是最小化
det(A)
。
相比第二种写法,第一种写法的好处在于将二次不等式变成了仿射的。在使用CVX工具箱的时候,向量的二次不等式约束是不被接受的。
用多个椭圆覆蓋样本
上一节的问题可以推广到用多个椭圆覆蓋所有样本。当样本本身具有比较明显的聚集情况时,这样显然能更好地刻画样本的分布情况。我读到的这篇文章A Minimum Volume Covering Approach with a Set of Ellipsoids就是在解决这个问题。
如果引入E个椭圆,我们的优化问题就变成了下面的形式:
minimizeAe,be,ηsubject to ∑e=1Edet(Ae) ∑eηei||Aexi+be||≤1 i=1,2,…,m∑e=1Eηei=1Ae≥0 e=1,2,…,E
其中
ηei
的取值为{0, 1},当
ηei=1
表示第i个样本应当被第e个椭圆覆蓋。
需要注意的是,由于我们引入了η这个离散变量,我们的优化问题不再是凸的了,无法直接用凸优化的方式求解。为了解决这个问题,文章作者采用了一种迭代算法,在每一步迭代中,需要做两件事:
1. 固定现有的η(i),求解A(i)和b(i);
2. 固定A(i)和b(i),对样本重新划分,得到η(i+1);如果新的划分跟上一轮迭代没有区别则中止迭代。
我觉得这个算法的巧妙之处在于将原来非凸的问题转化成了一些更小规模的凸优化问题,使得求解变得非常方便。不过缺点也是显而易见的:如果初始的样本划分η(1)没有做好,那么算法就可能收敛到一个较差的结果。这让我想起了k-means算法:同样简单实用,同样依赖于一个好的初值。
思考
第一眼看到这个问题我的想法是用GMM(混合高斯)来做,得到高斯分布之后拿个平面一切就是一个椭圆。不过后来我又想到两者的优化目标是不一样的:椭圆覆蓋问题对于处在椭圆外的样本点惩罚是无穷大(即不允许有样本没被覆蓋),而混合高斯则是一个有限值。因此混合高斯对于outlier的鲁棒性肯定更高。另外由于高斯函数的特性,每一个样本点都有一定可能性属于任意一个高斯分布,也就是说ηei是一个[0, 1]区间内的连续值。这也是为什么混合高斯模型可以用EM算法直接求解而不用担心局部最优的问题。
原文作者也讨论了outlier的问题,做法是引入一个类似SVM里的松弛系数,然后把这个松弛系数也加进目标函数里,像下面这样
minimizeAe,be,η,ξsubject to ∑e=1Edet(Ae)+C∑i=1mξi ∑eηei||Aexi+be||≤1+ξi i=1,2,…,m∑e=1Eηei=1 i=1,2,…,mξi≥0 i=1,2,…,mAe≥0 e=1,2,…,E
吐槽
- 搞控制论这帮人为啥要用椭圆?k-means跟GMM多方便啊。
- 想不通啊,这么一篇文章是如何发在PAMI上的!!!