SlideShare a Scribd company logo
1 of 6
2011.02 作成

                    マハラノビス距離とユークリッド距離の違い

  車のスピードと停車するまでに必要な距
 離を測定した2変数の cars データセットを




                                                              100 120
 用いて、データ中心からの各データポイント                                                   図1
 の距離を測定する。
  我々が通常距離と呼んでいるものはユーク




                                                              80
 リッド距離だが、相関のある多変量データを




                                                      dist

                                                              60
 取り扱う際にはマハラノビス距離の方が便利。




                                                              40
  方法 1 標準化してユークリッド距離を測定




                                                              20
  変数 dist と speed はそれぞれ尺度が違う

                                                              0
 のでそのままで距離計算をすると第 1 変数                                                      5        10         15      20    25
 の影響が第 2 変数よりも大きくなる。                                                                       speed
  これを避けるために、       まず2変数をそれぞ
 れ標準化し(図 2)、それから二乗和の平方根
 をとって距離を計算する。
         3




                                                                            Histogram of d1
                   図2
         2




                                                                                                 図3
         1




                                                         15
  dist




                                          Frequency

                                                         10
         0
         -1




                                                         5
                                                         0




              -2        -1      0    1

                             speed                                      0       40         80         120
         3




                                                                                          d1
                   図4
         2




                                         距離 d1 が 120 を越える外れ値は 49 番のデ
         1
dist




                                         ータポイント。次に他のデータから外れ気
         0




                                         味なのは緑で示すデータポイントで、距離
                                         が遠い順に 48, 47, 509, 35, 23 番が分布の
         -1




                                         外側にあるということになる。

               -2       -1     0     1

                             speed
方法 2 マハラノビス距離による測定

   方法 1 のユークリッド距離のかわりに、平均値ベクトルと共分散行列から算出するマハ
  ラノビス距離を使用してみる。
   方法 1 と同様、ヒストグラム(図 5)を作成し、で大きな距離とる柱二つ分の色を変えて
  データポイントを表示したのが図 6。緑表示されているのは、データ番号 23 番のみ。


                      Histogram of d2




                                                       120
                                    図5
             30




                                                       80
Frequency




                                                dist
             20




                                                       40
             10




                                                       0
             0




                  0    2   4   6    8    10                  5   10    15     20   25
                               d2                                     speed



             「標準化+ユークリッド距離」と「マハラノビス距離」の違いは、マ
             ハラノビス距離がデータ分散だけでなく相関も考慮しているというこ
             と。つまり、データを多変量標準化して距離尺度を作成していること
             になる。


  ○ マハラノビス距離

            平均値ベクトルが                                  、共分散行列がΣである多変量デー
  タ                                           は、以下により算出される。
おまけ:マハラノビス距離とユークリッド距離の違い

  データ NmA は、独立なデータ数 1000 の正規乱数を二つ組み合わせたもので、NmB もデ
  ータ数 1000 の正規乱数だが変数間に 0.8 の相関がある。

   この二種類のデータについて、それぞれユークリッド距離とマハラノビス距離を計算し、
  データ中心から距離 2 以内の部分を緑、さらに距離 1 以内の部分を赤に塗ってみた。


                      無相関ユーク ッ
                            リド                                                           無相関マ ノ ス
                                                                                             ハラ ビ
          3




                                                                             3
          2




                                                                             2
          1




                                                                             1
NmA[,2]




                                                                   NmA[,2]
          0




                                                                             0
          -1




                                                                             -1
          -2




                                                                             -2
          -3




                                                                             -3




                -3    -2    -1         0       1       2       3                   -3    -2    -1         0       1       2       3

                                NmA[,1]                                                            NmA[,1]



                      相関0.8ユーク ッ
                              リド                                                         相関0.8マ ノ ス
                                                                                               ハラ ビ
          3




                                                                             3
          2




                                                                             2
NmB[,2]




                                                                   NmB[,2]
          1




                                                                             1
          0




                                                                             0
          -1




                                                                             -1
          -2




                                                                             -2
          -3




                                                                             -3




               -3    -2    -1      0       1       2       3                      -3    -2    -1      0       1       2       3

                                NmB[,1]                                                            NmB[,1]



   データが正規分布に従う場合、各データポイントのデータ中心(平均値ベクトル)から
  のマハラノビス距離は F 分布に従う。
Rコード

data(cars)          # cars データ呼び出し
dat<- as.matrix(cars)      # リスト属性の cars データを行列属性に変換して
dat に格納
d <- ncol(dat)             # d: 変数の数
n <- nrow(dat)             # n: データ数
plot(dat)                  # 図 1 が表示される

##### ユークリッド距離による試算

dat.s<- scale(dat)   # 標準化
plot(dat.s)          # 図 2 が表示される

d1 <- sqrt(dat[,1]^2 + dat[,2]^2) # 第一変数と第二変数の二乗和の平方根で距
離計算
hist(d1)                   # 計算された距離をヒストグラムに。図 3。

flg<- rep(1, n)            # 色表示用のデータフラグ作成。初期値は 1(黒)
flg[which(d1>80)] <- 3          # 距離 d1 が 80 を越えるデータを 3(緑)に
flg[which(d1>120)] <- 2         # 距離 d1 が 120 を越えるデータを 2(赤)に
plot(dat.s, pch=20, col=flg)    # 図 4 表示
which(flg==2)       # 赤表示されるデータの番号がわかる。No.49
which(flg==3)       # 緑表示されるデータの番号がわかる。No. 23, 35, 47, 48,
509

##### マハラノビス距離による試算
cv <- cov(dat)             # 共分散行列計算
mn<- colMeans(dat) # 平均値ベクトル算出
d2 <- mahalanobis(dat, mn, cv)    # マハラノビス距離算出
hist(d2)                   # 図 5 の表示

flg2 <- rep(1, n)          # 色表示用のデータフラグ作成。初期値は 1(黒)
flg2[which(d2>6)] <- 3          # 距離 d1 が 6 を越えるデータだけ 3(緑)に
flg2[which(d2>8)] <- 2          # 距離 d1 が 8 を越えるデータだけ 2(赤)に
plot(dat, pch=20, col=flg2)     # 図 4 表示
which(flg2==2)             # 赤表示されるデータの番号がわかる。No.49
#################### おまけ ####################
rm(list=ls(all=TRUE))      # 作業領域のクリア
library(mvtnorm)           # rmvnorm(多変量正規乱数)関数用
set.seed(25)          # 乱数の再現性確保のため

# 共分散行列作成
c08 <- matrix(0.8, ncol=2, nrow=2)
#                    # 対角成分を 1 に
(diag(c08) <- 1)     # 算式を括弧で囲むと内容表示
n1 <- 1000           # 作成するデータ数

# 正規分布データ
NmA<- cbind(rnorm(n1), rnorm(n1))
       # 単変量の独立な正規分布データを組み合わせただけ
NmB<- rmvnorm(n=n1, mean=c(0, 0), sigma=c08)
       # 相関 0.8 の多変量正規分布データ

cor(NmA);     cor(NmB)      # 実相関

# ユークリッド距離の計算
#eucA<- sqrt(diag(scale(NmA) %*% t(scale(NmA))))
#eucB<- sqrt(diag(scale(NmB) %*% t(scale(NmB))))
eucA<- sqrt(diag(NmA %*% t(NmA)))
eucB<- sqrt(diag(NmB %*% t(NmB)))

#マハラノビス距離の計算
mahA<- mahalanobis(NmA, apply(NmA, 2, mean), cov(NmA))
mahB<- mahalanobis(NmB, apply(NmB, 2, mean), cov(NmB))
       # パラメータはデータ・平均値ベクトル・共分散行列
# ユークリッド距離と比較可能にする
# F 検定統計量の計算
eucA.s <- eucA * (n1 - 2)* n1 /((n1^2 - 1)* 2)
eucB.s<- eucB * (n1 - 2)* n1 /((n1^2 - 1)* 2)
mahA.s <- mahA * (n1 - 2)* n1 /((n1^2 - 1)* 2)
mahB.s<- mahB * (n1 - 2)* n1 /((n1^2 - 1)* 2)

# 正規分布の 1σ(約 68.27%)     、2σ(約 95.45%)にあたるF分布の%値を算出
cf1<- qf(0.6827,2, n1 - 2)
cf2<- qf(0.9545, 2, n1 - 2)

# 色設定     距離 1 より内側を赤に
eucA.cl <- rep(1, 1000);
       eucA.cl[which(eucA< 2)] <- 3
       eucA.cl[which(eucA< 1)] <- 2
eucB.cl <- rep(1, 1000);
       eucB.cl[which(eucB< 2)] <- 3
eucB.cl[which(eucB< 1)] <-   2
mahA.cl <- rep(1, 1000);
       mahA.cl[which(mahA.s<cf2)]   <- 3
       mahA.cl[which(mahA.s<cf1)]   <- 2
mahB.cl <- rep(1, 1000);
       mahB.cl[which(mahB.s<cf2)]   <- 3
       mahB.cl[which(mahB.s<cf1)]   <- 2

par(mfrow=c(2,2))      # 2 行 2 列にグラフィック画面分割
  plot(NmA, pch=20,   col=eucA.cl, main="無相関ユークリッド")
  plot(NmA, pch=20,   col=mahA.cl, main="無相関マハラノビス")
  plot(NmB, pch=20,   col=eucB.cl, main="相関 0.8 ユークリッド")
  plot(NmB, pch=20,   col=mahB.cl, main="相関 0.8 マハラノビス")

More Related Content

What's hot

異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知hagino 3000
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだことnishio
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?Deep Learning JP
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法Hidetoshi Matsui
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningssuserca2822
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布についてHiroshi Shimizu
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学Ken'ichi Matsui
 
データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析Seiichi Uchida
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing FlowAkihiro Nitta
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門shima o
 
第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習Naoya Chiba
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデルYohei Sato
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)Kota Matsui
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方Shinagawa Seitaro
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向ohken
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズムnishio
 

What's hot (20)

異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?
 
Data-Centric AIの紹介
Data-Centric AIの紹介Data-Centric AIの紹介
Data-Centric AIの紹介
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learningベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
ベイズ深層学習5章 ニューラルネットワークのベイズ推論 Bayesian deep learning
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学
 
データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing Flow
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズム
 

Viewers also liked

異常行動検出入門(改)
異常行動検出入門(改)異常行動検出入門(改)
異常行動検出入門(改)Yohei Sato
 
異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知Ken'ichi Matsui
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編Koichi Hamada
 
Fisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight MapsFisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight MapsTakao Yamanaka
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-Koichi Hamada
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門Takeshi Arabiki
 
20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」tetsuro ito
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習Hidekazu Tanaka
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門Momoko Hayamizu
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Takeshi Mikami
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木 Miyoshi Yuya
 

Viewers also liked (12)

異常行動検出入門(改)
異常行動検出入門(改)異常行動検出入門(改)
異常行動検出入門(改)
 
異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
 
Fisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight MapsFisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight Maps
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門
 
20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
決定木学習
決定木学習決定木学習
決定木学習
 

More from wada, kazumi

Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理wada, kazumi
 
2018Rユーザ会用
2018Rユーザ会用2018Rユーザ会用
2018Rユーザ会用wada, kazumi
 
Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017wada, kazumi
 
Ⅲ. 資料編 2017
Ⅲ. 資料編 2017Ⅲ. 資料編 2017
Ⅲ. 資料編 2017wada, kazumi
 
Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017wada, kazumi
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017wada, kazumi
 
2017Rユーザ会用
2017Rユーザ会用2017Rユーザ会用
2017Rユーザ会用wada, kazumi
 
Rデモ03_データ分析編2016
Rデモ03_データ分析編2016Rデモ03_データ分析編2016
Rデモ03_データ分析編2016wada, kazumi
 
Rデモ02_入出力編2016
Rデモ02_入出力編2016Rデモ02_入出力編2016
Rデモ02_入出力編2016wada, kazumi
 
Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016wada, kazumi
 
統計環境R_データ分析編2016
統計環境R_データ分析編2016統計環境R_データ分析編2016
統計環境R_データ分析編2016wada, kazumi
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016wada, kazumi
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016wada, kazumi
 
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slidesharewada, kazumi
 
Rプログラミング03 データ分析編
Rプログラミング03 データ分析編Rプログラミング03 データ分析編
Rプログラミング03 データ分析編wada, kazumi
 
Rプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモRプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモwada, kazumi
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
Rプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモRプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモwada, kazumi
 
Rプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモRプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモwada, kazumi
 
Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩wada, kazumi
 

More from wada, kazumi (20)

Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理
 
2018Rユーザ会用
2018Rユーザ会用2018Rユーザ会用
2018Rユーザ会用
 
Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017
 
Ⅲ. 資料編 2017
Ⅲ. 資料編 2017Ⅲ. 資料編 2017
Ⅲ. 資料編 2017
 
Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
2017Rユーザ会用
2017Rユーザ会用2017Rユーザ会用
2017Rユーザ会用
 
Rデモ03_データ分析編2016
Rデモ03_データ分析編2016Rデモ03_データ分析編2016
Rデモ03_データ分析編2016
 
Rデモ02_入出力編2016
Rデモ02_入出力編2016Rデモ02_入出力編2016
Rデモ02_入出力編2016
 
Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016
 
統計環境R_データ分析編2016
統計環境R_データ分析編2016統計環境R_データ分析編2016
統計環境R_データ分析編2016
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016
 
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare
 
Rプログラミング03 データ分析編
Rプログラミング03 データ分析編Rプログラミング03 データ分析編
Rプログラミング03 データ分析編
 
Rプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモRプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモ
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
Rプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモRプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモ
 
Rプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモRプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモ
 
Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩
 

マハラノビス距離とユークリッド距離の違い

  • 1. 2011.02 作成 マハラノビス距離とユークリッド距離の違い 車のスピードと停車するまでに必要な距 離を測定した2変数の cars データセットを 100 120 用いて、データ中心からの各データポイント 図1 の距離を測定する。 我々が通常距離と呼んでいるものはユーク 80 リッド距離だが、相関のある多変量データを dist 60 取り扱う際にはマハラノビス距離の方が便利。 40 方法 1 標準化してユークリッド距離を測定 20 変数 dist と speed はそれぞれ尺度が違う 0 のでそのままで距離計算をすると第 1 変数 5 10 15 20 25 の影響が第 2 変数よりも大きくなる。 speed これを避けるために、 まず2変数をそれぞ れ標準化し(図 2)、それから二乗和の平方根 をとって距離を計算する。 3 Histogram of d1 図2 2 図3 1 15 dist Frequency 10 0 -1 5 0 -2 -1 0 1 speed 0 40 80 120 3 d1 図4 2 距離 d1 が 120 を越える外れ値は 49 番のデ 1 dist ータポイント。次に他のデータから外れ気 0 味なのは緑で示すデータポイントで、距離 が遠い順に 48, 47, 509, 35, 23 番が分布の -1 外側にあるということになる。 -2 -1 0 1 speed
  • 2. 方法 2 マハラノビス距離による測定 方法 1 のユークリッド距離のかわりに、平均値ベクトルと共分散行列から算出するマハ ラノビス距離を使用してみる。 方法 1 と同様、ヒストグラム(図 5)を作成し、で大きな距離とる柱二つ分の色を変えて データポイントを表示したのが図 6。緑表示されているのは、データ番号 23 番のみ。 Histogram of d2 120 図5 30 80 Frequency dist 20 40 10 0 0 0 2 4 6 8 10 5 10 15 20 25 d2 speed 「標準化+ユークリッド距離」と「マハラノビス距離」の違いは、マ ハラノビス距離がデータ分散だけでなく相関も考慮しているというこ と。つまり、データを多変量標準化して距離尺度を作成していること になる。 ○ マハラノビス距離 平均値ベクトルが 、共分散行列がΣである多変量デー タ は、以下により算出される。
  • 3. おまけ:マハラノビス距離とユークリッド距離の違い データ NmA は、独立なデータ数 1000 の正規乱数を二つ組み合わせたもので、NmB もデ ータ数 1000 の正規乱数だが変数間に 0.8 の相関がある。 この二種類のデータについて、それぞれユークリッド距離とマハラノビス距離を計算し、 データ中心から距離 2 以内の部分を緑、さらに距離 1 以内の部分を赤に塗ってみた。 無相関ユーク ッ リド 無相関マ ノ ス ハラ ビ 3 3 2 2 1 1 NmA[,2] NmA[,2] 0 0 -1 -1 -2 -2 -3 -3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 NmA[,1] NmA[,1] 相関0.8ユーク ッ リド 相関0.8マ ノ ス ハラ ビ 3 3 2 2 NmB[,2] NmB[,2] 1 1 0 0 -1 -1 -2 -2 -3 -3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 NmB[,1] NmB[,1] データが正規分布に従う場合、各データポイントのデータ中心(平均値ベクトル)から のマハラノビス距離は F 分布に従う。
  • 4. Rコード data(cars) # cars データ呼び出し dat<- as.matrix(cars) # リスト属性の cars データを行列属性に変換して dat に格納 d <- ncol(dat) # d: 変数の数 n <- nrow(dat) # n: データ数 plot(dat) # 図 1 が表示される ##### ユークリッド距離による試算 dat.s<- scale(dat) # 標準化 plot(dat.s) # 図 2 が表示される d1 <- sqrt(dat[,1]^2 + dat[,2]^2) # 第一変数と第二変数の二乗和の平方根で距 離計算 hist(d1) # 計算された距離をヒストグラムに。図 3。 flg<- rep(1, n) # 色表示用のデータフラグ作成。初期値は 1(黒) flg[which(d1>80)] <- 3 # 距離 d1 が 80 を越えるデータを 3(緑)に flg[which(d1>120)] <- 2 # 距離 d1 が 120 を越えるデータを 2(赤)に plot(dat.s, pch=20, col=flg) # 図 4 表示 which(flg==2) # 赤表示されるデータの番号がわかる。No.49 which(flg==3) # 緑表示されるデータの番号がわかる。No. 23, 35, 47, 48, 509 ##### マハラノビス距離による試算 cv <- cov(dat) # 共分散行列計算 mn<- colMeans(dat) # 平均値ベクトル算出 d2 <- mahalanobis(dat, mn, cv) # マハラノビス距離算出 hist(d2) # 図 5 の表示 flg2 <- rep(1, n) # 色表示用のデータフラグ作成。初期値は 1(黒) flg2[which(d2>6)] <- 3 # 距離 d1 が 6 を越えるデータだけ 3(緑)に flg2[which(d2>8)] <- 2 # 距離 d1 が 8 を越えるデータだけ 2(赤)に plot(dat, pch=20, col=flg2) # 図 4 表示 which(flg2==2) # 赤表示されるデータの番号がわかる。No.49
  • 5. #################### おまけ #################### rm(list=ls(all=TRUE)) # 作業領域のクリア library(mvtnorm) # rmvnorm(多変量正規乱数)関数用 set.seed(25) # 乱数の再現性確保のため # 共分散行列作成 c08 <- matrix(0.8, ncol=2, nrow=2) # # 対角成分を 1 に (diag(c08) <- 1) # 算式を括弧で囲むと内容表示 n1 <- 1000 # 作成するデータ数 # 正規分布データ NmA<- cbind(rnorm(n1), rnorm(n1)) # 単変量の独立な正規分布データを組み合わせただけ NmB<- rmvnorm(n=n1, mean=c(0, 0), sigma=c08) # 相関 0.8 の多変量正規分布データ cor(NmA); cor(NmB) # 実相関 # ユークリッド距離の計算 #eucA<- sqrt(diag(scale(NmA) %*% t(scale(NmA)))) #eucB<- sqrt(diag(scale(NmB) %*% t(scale(NmB)))) eucA<- sqrt(diag(NmA %*% t(NmA))) eucB<- sqrt(diag(NmB %*% t(NmB))) #マハラノビス距離の計算 mahA<- mahalanobis(NmA, apply(NmA, 2, mean), cov(NmA)) mahB<- mahalanobis(NmB, apply(NmB, 2, mean), cov(NmB)) # パラメータはデータ・平均値ベクトル・共分散行列 # ユークリッド距離と比較可能にする # F 検定統計量の計算 eucA.s <- eucA * (n1 - 2)* n1 /((n1^2 - 1)* 2) eucB.s<- eucB * (n1 - 2)* n1 /((n1^2 - 1)* 2) mahA.s <- mahA * (n1 - 2)* n1 /((n1^2 - 1)* 2) mahB.s<- mahB * (n1 - 2)* n1 /((n1^2 - 1)* 2) # 正規分布の 1σ(約 68.27%) 、2σ(約 95.45%)にあたるF分布の%値を算出 cf1<- qf(0.6827,2, n1 - 2) cf2<- qf(0.9545, 2, n1 - 2) # 色設定 距離 1 より内側を赤に eucA.cl <- rep(1, 1000); eucA.cl[which(eucA< 2)] <- 3 eucA.cl[which(eucA< 1)] <- 2 eucB.cl <- rep(1, 1000); eucB.cl[which(eucB< 2)] <- 3
  • 6. eucB.cl[which(eucB< 1)] <- 2 mahA.cl <- rep(1, 1000); mahA.cl[which(mahA.s<cf2)] <- 3 mahA.cl[which(mahA.s<cf1)] <- 2 mahB.cl <- rep(1, 1000); mahB.cl[which(mahB.s<cf2)] <- 3 mahB.cl[which(mahB.s<cf1)] <- 2 par(mfrow=c(2,2)) # 2 行 2 列にグラフィック画面分割 plot(NmA, pch=20, col=eucA.cl, main="無相関ユークリッド") plot(NmA, pch=20, col=mahA.cl, main="無相関マハラノビス") plot(NmB, pch=20, col=eucB.cl, main="相関 0.8 ユークリッド") plot(NmB, pch=20, col=mahB.cl, main="相関 0.8 マハラノビス")