クラス HybsMahalanobis

java.lang.Object
org.opengion.penguin.math.statistics.HybsMahalanobis

public final class HybsMahalanobis extends Object
apache.commons.mathを利用した、マハラノビス距離関係の処理クラスです。 相関を考慮した距離が求まります。 教師無し学習的に、異常値検知に利用可能です。 閾値は95%区間の2.448がデフォルトです。(3なら99%) 「Juan Francisco Quesada-Brizuela」氏の距離計算PGを参照しています。 学術的には様々な改良が提案されていますが、このクラスでは単純なマハラノビス距離を扱います。
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ
    説明
    HybsMahalanobis(double[][] matrix)
    距離計算がtrueの形の簡易版コンストラクタです。
    HybsMahalanobis(double[][] matrix, boolean calc)
    コンストラクタ。
    HybsMahalanobis(double[][] covarianceData, double[] averageData)
    コンストラクタ。
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    boolean
    check(double[] vec)
    与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。
    double
    distance(double[] vec)
    マハラノビス距離を計算します。
    double[]
    平均配列を返します。
    double[][]
    共分散配列を返します。
    double[]
    コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。
    double
    閾値を返します。
    static void
    main(String[] args)
    ここからテスト用mainメソッド。
    void
    setAverage(double[] ave)
    平均配列をセットします。
    void
    setCovariance(double[][] cvr)
    共分散配列をセットします。
    void
    setLimen(double lim)
    閾値をセットします。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • HybsMahalanobis

      public HybsMahalanobis(double[][] matrix, boolean calc)
      コンストラクタ。 与えたデータマトリクスを元にマハラノビス距離を求めるための準備をします。 (平均と共分散を求めます) 引数calcにtrueをセットすると各点のマハラノビス距離を計算します。 データ = { { 90 ,60 }, { 70, 80 } } のような形としてデータを与えます。
      パラメータ:
      matrix - 値のデータ
      calc - 距離計算を行うかどうか
    • HybsMahalanobis

      public HybsMahalanobis(double[][] matrix)
      距離計算がtrueの形の簡易版コンストラクタです。
      パラメータ:
      matrix - 値データ
    • HybsMahalanobis

      public HybsMahalanobis(double[][] covarianceData, double[] averageData)
      コンストラクタ。 計算済みの共分散と平均、閾値を与えるパターン。
      パラメータ:
      covarianceData - 共分散
      averageData - 平均配列
  • メソッドの詳細

    • getAverage

      public double[] getAverage()
      平均配列を返します。
      戻り値:
      平均
    • getCovariance

      public double[][] getCovariance()
      共分散配列を返します。
      戻り値:
      共分散
    • getLimen

      public double getLimen()
      閾値を返します。
      戻り値:
      閾値
    • setAverage

      public void setAverage(double[] ave)
      平均配列をセットします。
      パラメータ:
      ave - 平均
    • setCovariance

      public void setCovariance(double[][] cvr)
      共分散配列をセットします。
      パラメータ:
      cvr - 共分散
    • setLimen

      public void setLimen(double lim)
      閾値をセットします。 距離の二乗がカイ2乗分布となるため、 初期値は2.448で、95%区間を意味します。 2が86%、3が99%です。
      パラメータ:
      lim - 閾値
    • getDataDistance

      public double[] getDataDistance()
      コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。
      戻り値:
      各点のマハラノビス距離の配列
    • distance

      public double distance(double[] vec)
      マハラノビス距離を計算します。
      パラメータ:
      vec - 判定する点(ベクトル)
      戻り値:
      マハラノビス距離
    • check

      public boolean check(double[] vec)
      与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。 閾値以下ならtrue、超えている場合はfalseを返します。 (異常値判定)
      パラメータ:
      vec - 判定する点(ベクトル)
      戻り値:
      閾値以下かどうか
    • main

      public static void main(String[] args)
      ここからテスト用mainメソッド。
      パラメータ:
      args - ****************************************