矩阵子集选择问题求解问询
各位好呀,我最近卡在一个矩阵子集选择的优化问题上了,想过来请教下大家有没有好的求解思路或者可行的算法。先把问题的具体设定和数学表述理清楚:
我们要从任意的实数矩阵 $\mathbf{A}\in\mathbb{R}^{m\times n}$ 里挑选特定的行和列元素组成子集矩阵。这里我定义了一个选择矩阵 $\mathbf{S}\in\mathbb{R}^{m\times n}$,它的每个元素满足 $S(i,j)=x_i \cdot y_j$,最终筛选后的矩阵就是 $\mathbf{A}_s = \mathbf{S} \odot \mathbf{A}$,其中 $\odot$ 指的是哈达玛积(Hadamard product)。
约束条件方面,选中的行和列的总数量要满足 $\sum_{i=1}^{m} x_i + \sum_{j=1}^{n} y_j = \gamma(m + n)$,这里的 $\gamma$ 是介于0和1之间的常数。
这个问题的数学优化模型可以完整写成:
$$
\begin{aligned}
& \min_{\mathbf{S}} & & | \mathbf{A} - \mathbf{S} \odot \mathbf{A} |F^2 \
& \text{Subject to} & & S(i,j)=x_i \cdot y_j \
& & & \sum{i=1}^{m} x_i + \sum_{j=1}^{n} y_j = \gamma(m + n) \
& & & x_i \in {0, 1}, \quad y_j \in {0, 1}
\end{aligned}
$$
因为目标函数其实等价于最小化被舍弃元素的Frobenius范数平方,本质上就是要让保留下来的元素尽可能少损失原矩阵的信息,但又要满足行和列的选择数量约束。我自己试了一些简单的枚举思路,但当矩阵规模大的时候完全不现实,所以想问问有没有更高效的方法?麻烦各位大佬不吝赐教啦!
备注:内容来源于stack exchange,提问作者Hao WANG

