使用低等级属性进行最大值/最小值搜索(或排序)

计算科学 线性代数 矩阵 机器学习
2021-12-12 21:27:01

我正在考虑以下问题:

假设有一个半正定矩阵X大小的n(例如,内核)。认为X可以近似为一个低秩矩阵,XGGT.

有没有办法找到k- 每行的最大/最小值X无需明确计算并遍历所有n2条目?

当然,解决方案可以是近似的或概率的……有什么想法吗?

2个回答

这个问题相当不简单。

秩为 r 的低秩表示不会导致找到最小和最大条目的简单方法。Xn×n=An×rBr×nTr

然而,对于 r=1 的特殊情况 { , u可以,然后考虑到行中找到个最小或最大条目,对于因此,对于,您当然可以将计算减少到r=1Xn×n=uvTu,vRnkkvO(kn)uikiO(k)i=1,,nr=1O(kn)

不幸的是,当时,事情变得棘手。以下关于 MathOverflow的问题讨论了计算整个矩阵的最大最小元素的选项,这是一个非常相似的问题。其中一个答案给出了的精确算法,该算法使用已知技术在 2 维和 3 维中找到凸包,也可以用于您的问题。但我怀疑这种特殊方法能否以有效的方式成功推广到更高的维度()。r>1r=2,3r>3

另一个答案提到了一个非常有趣的想法,即使用 -net的每一行/列,以计算错误。我还没有尝试这个选项,但它在技术上是有意义的,并且应该可以扩展到一次查找值一行(通过一次仅将的 1 行映射到网络,同时在那里保留的记录)。方面是指数的ϵrABO(nr+(1/ϵ)r)ϵkABr,这将使其仅适用于任何体面的r≪≪≪nϵ

几种可能的方法: