• 追加された行はこの色です。
  • 削除された行はこの色です。
*はじめに [#w8050692]
『Rによるバイオインフォマティクスデータ解析』の7.8節「階層クラスタリング」を参考にして,回帰分析をします.
#html{{
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=tohgoroh-22&o=9&p=8&l=as1&asins=4320057082&ref=tf_til&fc1=444B4C&IS2=1&lt1=_blank&m=amazon&lc1=444B4C&bc1=FFFFFF&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
}}


*準備 [#i005634f]
Rのインストールについては,次のページを見てください.
-[[MacでRを使う>機械学習/MacでRを使う]]
-[[WindowsでRを使う>機械学習/WindowsでRを使う]]

ここでは,標準パッケージの''stats''と''USArrests''データセットを使います.
USArrestsデータセットは,アメリカ合衆国の州ごとの殺人の発生件数,暴行の発生件数,都市部の人口割合,強姦の発生件数を格納したデータです.
犯罪の発生件数については人口10万人当たりの件数で,1973年のデータです.
#geshi(rsplus){{
> head(USArrests)
           Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6
Colorado      7.9     204       78 38.7
}}


*クラスタリング [#j0ec994d]
クラスタリングは,分類対象のデータ集合をいくつかのグループに分割するものです.
分割された部分データ集合を''クラスター''といいます.

クラスタリングの手法には,主に''階層的アプローチ''と''分割最適化アプローチ''があります.
ここでは,前者の階層的アプローチをやります.


*階層クラスタリング [#wbf466ca]
階層クラスタリングには,トップ・ダウンに階層化する分岐型とボトム・アップに階層化する凝集型があります.
ここでは,後者の凝集型をやります.

階層クラスタリングでは,まず,1つのデータだけを含むクラスターをデータと同じ数だけ作ります.
それから,最も近い(類似している)クラスター同士を結合してより大きい新しいクラスターを作ります.
それから,最も近い(似ている)クラスター同士を結合してより大きい新しいクラスターを作ります.
これを全てのクラスターが一つに結合されるまで繰り返します.

Rで階層型クラスタリングを用いるには,''hclust''関数を用います.
hclust関数への引数には距離行列を与えます.
そこで,距離行列を''dist''関数で計算します.
#geshi(rsplus){{
> Cluster <- hclust(dist(USArrests))
> plot(Cluster)
}}
#ref(usarrests_hclust_complete_euclidean.png,nolink,50%)

この図を見ると,どのクラスターとどのクラスターが結合したのかがわかります.


*距離 [#ge6d4b61]
上でも説明したように,凝集型階層クラスタリングでは最も近い(似ている)クラスター同士をくっつけますが,この「最も近い(似ている)」クラスターを決めるのに,距離尺度が必要になります.

一般的な距離尺度としては,''ユークリッド距離''が用いられています.
\[ d({\bf x}_1, {\bf x}_2) = \sqrt{ \sum_{i=1}^p \left( x_{2,i} - x_{1,i} \right)^2 } \]

ユークリッド距離の他に,''マンハッタン距離''(マンハッタンでのタクシーを利用するときのように,一つの軸と並行に移動することしかできないときの移動距離)
\[ d({\bf x}_1, {\bf x}_2) =\sum_{i=1}^p \left| x_{2,i} - x_{1,i} \right| \]
を使うこともできます.
マンハッタン距離を使うには,dist関数にオプション''method="manhattan"''を指定します.
#geshi(rsplus){{
> Cluster <- hclust(dist(USArrests, method="manhattan"))
> plot(Cluster)
}}
#ref(usarrests_hclust_complete_manhattan.png,nolink,50%)

この他にも,いくつもの距離尺度が提案されています.
類似度と距離尺度に付いてはこちらにたくさんまとめられています.
-[[類似度と距離:http://wikiwiki.jp/cattail/?%CE%E0%BB%F7%C5%D9%A4%C8%B5%F7%CE%A5]] - CatTail Wiki*



*結合方式 [#f30f8931]
ユークリッド距離もマンハッタン距離も二つのデータ同士の間の距離を表していますが,どのクラスターとどのクラスターが最も近い(似ている)のかを直接的には表していません.

求めた距離に基づいて,どのクラスターとどのクラスターを結合するのかを決めなくてはなりません.
これが結合方式です.

上の二つの例でも用いられた標準の方式は,''Complete''という方式で,クラスターに含まれるデータの中で最も離れたところにあるデータ同士の間の距離をクラスター同士の距離として最も近い(似ている)クラスターを結合します.

''Simple''という方法では,反対に,クラスターに含まれるデータの中で最も近いところにあるデータ同士の間の距離をクラスター同士の距離として最も近い(似ている)クラスターを結合します.
結合方式をSimpleにするには,hclust関数にオプション''method="simple"''を指定します.
#geshi(rsplus){{
> Cluster <- hclust(dist(USArrests), method="single")
> plot(Cluster)
}}
#ref(usarrests_hclust_simple_euclidean.png,nolink,50%)

''Average''という方法では,クラスターに含まれるデータの平均値同士の間の距離をクラスター同士の距離として最も近い(似ている)クラスターを結合します.
Simpleと同じように,hclust関数にオプション''method="average"''と指定すると,結合方式をAverageにすることができます.
#geshi(rsplus){{
> Cluster <- hclust(dist(USArrests), method="average")
> plot(Cluster)
}}
#ref(usarrests_hclust_average_euclidean.png,nolink,50%)

''Median''という方法では,クラスターに含まれるデータの中央値同士の間の距離をクラスター同士の距離として最も近い(似ている)クラスターを結合します.
結合方式をMedianにするには,hclust関数にオプション''method="median"''を指定します.
#geshi(rsplus){{
> Cluster <- hclust(dist(USArrests), method="median")
> plot(Cluster)
}}
#ref(usarrests_hclust_median_euclidean.png,nolink,50%)

''Centroid''という方法では,クラスターに含まれるデータの重心同士の間の距離をクラスター同士の距離として
最も近い(似ている)クラスターを結合します.
結合方式をCentroidにするには,hclust関数にオプション''method="centroid"''を指定します.
> Cluster <- hclust(dist(USArrests), method="centroid")
> plot(Cluster)
}}
#ref(usarrests_hclust_centroid_euclidean.png,nolink,50%)



*参考文献 [#ubdf2be8]

-[[類似度と距離:http://wikiwiki.jp/cattail/?%CE%E0%BB%F7%C5%D9%A4%C8%B5%F7%CE%A5]] - CatTail Wiki*



この記事はまだ書きかけです.

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS