「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

Rによるデータサイエンス(07/XX)

 Rについて

をベースに学んでいく。
 今回は多次元尺度法(PP.97-105)を扱う。

8. 多次元尺度法

 多次元尺度法は、個体間の親近性データを2次元または3次元空間に配置する方法である。データから距離(ないし類似度)を計測し、それに基づき座標値を求め、視覚的にその相対的関係を考察する。類似したものは近方に、そうでないものは遠方に配置される。

8.1 距離

 n個の個体にp個の項目を有するデータX_{n\times p}=\left(\boldsymbol{X}_{i}\right)があるとする。データが量的であれば何らかの距離の定義に基づき距離行列D_{n\times n}=(d_{ij})を求めることができる。ここでd_{ij}は個体iと個体jの距離を表す。

 数学的に集合X上の距離d:X\times X\rightarrow\mathbb{R}は以下を満たすような関数を指す:

  • 非負性:{}^{\forall}x,{}^{\forall}y\in X\left(d(x,y)\geq0\right)
  • 同一律d(x,y)=0\Leftrightarrow x=y
  • 対称律:{}^{\forall}x,{}^{\forall}y\in X\left(d(x,y)=d(y,x)\right)
  • 三角不等式:{}^{\forall}x,{}^{\forall}y,{}^{\forall}z\in X\left(d(x,z)\leq d(x,y)+d(y,z) \right)

対称律から、距離行列の上三角部分は無視しても問題ない。
 距離はさまざまなものを定義し得る。\boldsymbol{X}_{i}=(x_{i,1},\cdots,x_{i,p})とおいて、いくつかの距離を紹介する。

8.1.1 Euclid距離


\begin{aligned}
d(\boldsymbol{X}_i,\boldsymbol{X}_j)=\displaystyle{\sqrt{\sum_{i=1}^{n}(x_{i,k}-x_{j,k})^2}}
\end{aligned}

8.1.2 Manhattan距離


\begin{aligned}
d(\boldsymbol{X}_i,\boldsymbol{X}_j)=\displaystyle{\sum_{i=1}^{n}\left|x_{i,k}-x_{j,k}\right|}
\end{aligned}

8.1.3 Minkowsky距離


\begin{aligned}
d(\boldsymbol{X}_i,\boldsymbol{X}_j)=\displaystyle{\sqrt[q]{\sum_{i=1}^{n}\left|x_{i,k}-x_{j,k}\right|^q}}
\end{aligned}

8.1.4 最大距離

 これは\mathrm{Chebyshev}距離とも呼ばれるものである。


\begin{aligned}
d(\boldsymbol{X}_i,\boldsymbol{X}_j)=\displaystyle{\max_{1\leq k\leq p}\left|x_{i,k}-x_{j,k}\right|}
\end{aligned}

8.1.5 Canberra距離


\begin{aligned}
d(\boldsymbol{X}_i,\boldsymbol{X}_j)=\displaystyle{\sum_{k=1}^{p}\frac{|x_{i,k}-x_{j,k}|}{|x_{i,k}|+|x_{j,k}|}}
\end{aligned}

8.1.5 Mahalanobis距離

 同じ分布に従う2つの確率ベクトル\boldsymbol{X}_i,\boldsymbol{X}_jの分散共分散行列が\Sigmaであるとき


\begin{aligned}
d(\boldsymbol{X})=\sqrt{(\boldsymbol{X}_i-\boldsymbol{X}_j)^{\prime}\Sigma^{-1}(\boldsymbol{X}_i-\boldsymbol{X}_j)}
\end{aligned}

で定義する。
 なお\boldsymbol{X}_1,\cdots,\boldsymbol{X}_nを1つの集団と考え、これらの平均ベクトルを\boldsymbol{\mu}=(\mu_1,\cdots,\mu_p),また分散共分散行列を\Sigmaとおくとき、\boldsymbol{X}とその集団との\mathrm{Mahalanobis}距離は


\begin{aligned}
d(\boldsymbol{X})=\sqrt{(\boldsymbol{X}_i-\boldsymbol{\mu})^{\prime}\Sigma^{-1}(\boldsymbol{X}_j-\boldsymbol{\mu})}
\end{aligned}

で定義する。

8.2 類似度

 距離と逆の概念として類似度がある。類似度の場合、値が大きいほど個体間の関連性が強いと判断する。これにもいくつかの定義があり得る。

8.2.1 相関係数

 類似度として最も知られているのは\mathrm{Pearson}相関係数rである。


\begin{aligned}
r=\displaystyle{\frac{\displaystyle{\sum_{k=1}^{p}(x_{ik}-\bar{x}_i)(x_{jk}-\bar{x}_j)}}{\sqrt{\displaystyle{\sum_{k=1}^{p}(x_{ik}-\bar{x}_i)^2\sum_{k=1}^{p}(x_{jk}-\bar{x}_j)^2}}}}
\end{aligned}

8.3 計量MDSのケーススタディ

 \mathrm{cmdscale}関数を用いて実証してみる。距離行列D_{n\times n}から以下の変換


\begin{aligned}
z_{ij}=\displaystyle{-\frac{1}{2}\left(d_{ij}^2-\sum_{i=1}^{n}\frac{d_{ij}^2}{n}-\sum_{j=1}^{n}\frac{d_{ij}^2}{n}+\sum_{i=1}^{n}\sum_{j=1}^{n}\frac{d_{ij}^2}{n^2}\right)}
\end{aligned}

によりZ_{n\times n}=(z_{ij})を計算し、その固有ベクトルを点の座標とする方式である。

####################
### 多次元尺度法 ### 
####################
library(ggplot2)
library(MASS)

#
data(eurodist)
eur_cmd <- data.frame(x = cmdscale(eurodist)[,1],
                      y = cmdscale(eurodist)[,2],
                      loc = row.names(cmdscale(eurodist)))
row.names(eur_cmd) <- NULL

ggplot(eur_cmd,aes(x = x, y = y)) + geom_point() + geom_text(aes(label = loc), hjust = 0.5, vjust = -0.5)

# 推定値の当てはまりの良さは相関係数で測る
dhat <- dist(eur_cmd)
cor(eurodist,dhat)^2

# irisでやってみる
data(iris)

iris_dist <- dist(iris[-5], method = "euclid")
iris_cmd <- data.frame(x = cmdscale(iris_dist)[,1],y = cmdscale(iris_dist)[,2], name = factor(c(rep("S",50),rep("C",50),rep("V",50))))

ggplot(iris_cmd,aes(x = x, y = y, color = name)) + geom_point() + theme_light() + theme(plot.title = element_text(hjust = 0.5),legend.position = "none",
                                                                                        legend.title=element_text(size = 10),
                                                                                        legend.text=element_text(size = 10))

補足 スペック情報

エディション Windows 10 Home
バージョン 20H2
プロセッサ Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz 1.50 GHz
実装 RAM 8.00 GB
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
R バージョン 3.6.3 (2020-02-29)
RStudio バージョン 1.2.5033
プライバシーポリシー お問い合わせ