【问题标题】:The Mahalanobis distance between a point and the mean vector is always the same一个点和平均向量之间的马氏距离总是相同的
【发布时间】:2018-02-12 12:50:27
【问题描述】:

我最近正在尝试执行一些数据清理算法。当我尝试计算数据集中的点与平均向量之间的马氏距离时,看起来是一样的。

例如,我有一个像这样的数据集:

{{2,2,3},{4,5,9},{7,8,9}}

平均向量是:

{13/3,5,7}

而协方差矩阵为:

{{6.333333333333333,7.5,7.0},{7.5,9.0,9.0},{7.0,9.0,12.0}}

那么{2,2,3},{4,5,9},{7,8,9}和均值向量的距离都是8290542,比较奇怪。在纸上计算后,结果是一样的。

有人知道我的代码或想法有什么问题吗?如果有人可以帮助我,我将不胜感激。以下是我在处理此问题时使用的一些代码。

import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.stat.correlation.Covariance;
import org.apache.mahout.math.*;
import org.apache.mahout.common.distance.MahalanobisDistanceMeasure;

public class Test {

    public static void main(String[] args) {
        double[] a = {2,2,3};
        Vector aVector = new DenseVector(a);

        double[] b = {4,5,9};
        Vector bVector = new DenseVector(b);

        double[] c = {7,8,9};
        Vector cVector = new DenseVector(b);


        double[] mean = {13/3,5,7};
        Vector meanVector = new DenseVector(mean);

        MahalanobisDistanceMeasure measure = new MahalanobisDistanceMeasure();

        double[][] ma = {{2,2,3},{4,5,9},{7,8,9}};
        RealMatrix matrix = new Covariance(ma).getCovarianceMatrix();
        Matrix math = new DenseMatrix(matrix.getData());

        measure.setCovarianceMatrix(math);

        measure.setMeanVector(meanVector);
        System.out.println(matrix.toString());
        System.out.println(measure.distance(meanVector,cVector));

    }


}

【问题讨论】:

  • 我认为第三个新的应该说 c 的新密集向量,但你重复了 b
  • 13/3 也可能评估为 4。您可能需要 13.0/4.0 或 13.0d/4.0d
  • @JeremyKahan 虽然我像你说的那样更新了我的代码,但 a、b 和 c 的马氏距离仍然相同。
  • 我发布了如何在不使用 apache.mahout 库的情况下计算马氏距离的代码示例。 stackoverflow.com/questions/69233869/…

标签: java data-mining mahout data-cleaning mahalanobis


【解决方案1】:

需要使用更多数据。

否则,平均向量 + 协方差矩阵会过拟合您的数据,并给出相同的距离。

对于 3d 数据,至少使用 20 个点。

【讨论】:

  • 非常感谢,我用了真实的数据集,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 2016-04-14
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多