我正在尝试计算大数据空间中协方差矩阵(以及均值)的稳健估计。我知道 FastMVE 和 FastMCD(最小协方差行列式和最小体积椭球)算法,但我不知道 Apache Spark/其他地方是否已经有任何实现。你会帮忙吗?
谢谢并恭祝安康,
我正在尝试计算大数据空间中协方差矩阵(以及均值)的稳健估计。我知道 FastMVE 和 FastMCD(最小协方差行列式和最小体积椭球)算法,但我不知道 Apache Spark/其他地方是否已经有任何实现。你会帮忙吗?
谢谢并恭祝安康,
首先,重要的是要指出,您很可能会使用 FastMCD[0] 或 FastMVE[1,p199]算法,它们是实际 MCD 和 MVE估计器的随机近似值。这些近似值的质量(特别是对异常值的实际鲁棒性)以及为获得它们而需要部署的计算工作主要取决于一个参数,该参数决定了两种算法使用的随机开始数。
通常,在大多数植入中,此数字默认设置为 500,但用户可以更改。为了保证算法的最大鲁棒性,它应该增长为(具体公式见[2]),其中是数据集中的变量数。因此,使用规定数量的子集的值超过 30 是不切实际的,人们必须接受由此产生的鲁棒性损失(鲁棒性损失可以使用 [2] 中的公式计算)。
另一方面,对于固定,获得 FastMCD 和 FastMVE 的计算成本符合亚线性增长(观察的数量)这要归功于一种称为随机子采样的技巧(参见 [0],第 3.3 节的解释)。因此,获得 FastMCD/FastMVE 拟合的计算成本基本上由下式确定(通过随机开始的次数)。现在,尽管原则上非常相似,但 FastMVE 算法比 FastMCD 稍微简单一些,并且在计算相同数量的起始子集时需要大约四分之一的时间很大。
--确切的MCD和MVE不是随机的,而是需要的顺序起点,除非两者都和很小,没有太多实际用途(尽管,大多数实现都允许您要求它们,请参阅链接的答案以获取有关如何在 中执行此操作的示例)rrcov。
c您将在 R 包中找到 FastMCD 和 FastMVE 的良好开源实现rrcov。其他较旧的 FastMCD 实现存在于 Matlab 库Libra中。
现在,对于与您的变量数量相当的问题,您可能需要查看 OGK。OGK 是一个鲁棒的散射估计器,它避开了 FastMCD 和 FastMVE 的一个关键(并且计算量大!)属性:仿射等方差。作为回报,OGK 拟合的计算成本要低得多(一到两个数量级之间,具体取决于和) 并且它是确定性的。OGK的开源c实现也包含在R包rrcov中。参见 [2] 对所有这些方法以及其中一些方法的经验比较。
我还要注意,如果您愿意使用排名已知值的协方差矩阵的近似值,一个可能吸引人的替代方法是使用稳健的 PCA 方法。