【发布时间】:2016-05-28 11:49:06
【问题描述】:
我有一个 Python 脚本,我需要经常更新均值和协方差矩阵。我目前正在做的是,每次我得到一个新的数据点 $x$(一个向量)时,我都会重新计算平均值和协方差,如下所示:
data.append(x) # My `data` is just a list of lists of floats (i.e., x is a list of floats)
self.mean = np.mean( data, axis=0) # self.mean is a list representing the center of data
self.cov = np.cov( data, rowvar=0)
问题是这对我来说不够快。无论如何通过增量更新mean 和cov 而不根据所有data 重新计算它们来提高效率吗?
增量计算意味着应该很容易,我可以弄清楚。我的主要问题是如何更新协方差矩阵self.cov。
【问题讨论】:
-
阅读this wikipedia article 并使用在线算法,用于方差和协方差。远离以下建议来跟踪平方和,因为它们可能在数值上不稳定。
-
本文介绍了一种快速更新均值等矩的方法arxiv.org/abs/1510.04923
-
@Jaime Nah,它只有在数百次迭代后才会收敛!
标签: python numpy normal-distribution