クラス HybsMahalanobis
- java.lang.Object
-
- org.opengion.penguin.math.statistics.HybsMahalanobis
-
public class HybsMahalanobis extends java.lang.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)
コンストラクタ。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 boolean
check(double[] vec)
与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。double
distance(double[] vec)
マハラノビス距離を計算します。double[]
getAverage()
平均配列を返します。double[][]
getCovariance()
共分散配列を返します。double[]
getDataDistance()
コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。double
getLimen()
閾値を返します。static void
main(java.lang.String[] args)
ここからテスト用mainメソッド。void
setAverage(double[] ave)
平均配列をセットします。void
setCovariance(double[][] cvr)
共分散配列をセットします。void
setLimen(double lim)
閾値をセットします。
-
-
-
コンストラクタの詳細
-
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(java.lang.String[] args)
ここからテスト用mainメソッド。- パラメータ:
args
- ****************************************
-
-