クラス HybsMahalanobis
java.lang.Object
org.opengion.penguin.math.statistics.HybsMahalanobis
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
getLimen()
閾値を返します。static void
ここからテスト用mainメソッド。void
setAverage
(double[] ave) 平均配列をセットします。void
setCovariance
(double[][] cvr) 共分散配列をセットします。void
setLimen
(double lim) 閾値をセットします。
-
コンストラクタの詳細
-
HybsMahalanobis
コンストラクタ。 与えたデータマトリクスを元にマハラノビス距離を求めるための準備をします。 (平均と共分散を求めます) 引数calcにtrueをセットすると各点のマハラノビス距離を計算します。 データ = { { 90 ,60 }, { 70, 80 } } のような形としてデータを与えます。- パラメータ:
matrix
- 値のデータcalc
- 距離計算を行うかどうか
-
HybsMahalanobis
距離計算がtrueの形の簡易版コンストラクタです。- パラメータ:
matrix
- 値データ
-
HybsMahalanobis
コンストラクタ。 計算済みの共分散と平均、閾値を与えるパターン。- パラメータ:
covarianceData
- 共分散averageData
- 平均配列
-
-
メソッドの詳細
-
getAverage
平均配列を返します。- 戻り値:
- 平均
-
getCovariance
共分散配列を返します。- 戻り値:
- 共分散
-
getLimen
閾値を返します。- 戻り値:
- 閾値
-
setAverage
平均配列をセットします。- パラメータ:
ave
- 平均
-
setCovariance
共分散配列をセットします。- パラメータ:
cvr
- 共分散
-
setLimen
閾値をセットします。 距離の二乗がカイ2乗分布となるため、 初期値は2.448で、95%区間を意味します。 2が86%、3が99%です。- パラメータ:
lim
- 閾値
-
getDataDistance
コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。- 戻り値:
- 各点のマハラノビス距離の配列
-
distance
マハラノビス距離を計算します。- パラメータ:
vec
- 判定する点(ベクトル)- 戻り値:
- マハラノビス距離
-
check
与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。 閾値以下ならtrue、超えている場合はfalseを返します。 (異常値判定)- パラメータ:
vec
- 判定する点(ベクトル)- 戻り値:
- 閾値以下かどうか
-
main
ここからテスト用mainメソッド。- パラメータ:
args
- ****************************************
-