クラス HybsMahalanobis


  • public 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)
      コンストラクタ。
    • コンストラクタの詳細

      • 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 - ****************************************