バイオ・データ・マイニング/Rでスペクトラル・クラスタリングを使う
をテンプレートにして作成
開始行:
*はじめに [#f4553c33]
『Rによるバイオインフォマティクスデータ解析』の7.10節「ス...
#html{{
<iframe style="width:120px;height:240px;" marginwidth="0"...
}}
*準備 [#e03b8e43]
Rのインストールについては,次のページを見てください.
-[[MacでRを使う>機械学習/MacでRを使う]]
-[[WindowsでRを使う>機械学習/WindowsでRを使う]]
[math]k[/math]平均法が苦手なデータとして,二重円のデータ...
[math]-4[/math]から[math]4[/math]までの二次元の一様乱数を...
#geshi((rsplus){{
x = runif(1000) * 8 - 4
y = runif(1000) * 8 - 4
data = cbind(x, y)
c2 = (x^2 + y^2) < 16 & (x^2 + y^2) > 9
c1 = (x^2 + y^2) < 4 & (x^2 + y^2) > 1
logo = data[(c2 | c1),]
plot(logo)
}}
#ref(logo.png,nolink,50%)
まずは[math]k[/math]平均法を試して見ます.
#geshi(rsplus){{
km = kmeans(logo, 2)
plot(logo, col=km$cluster, pch=km$cluster)
}}
#ref(logo_kmeans.png,nolink,50%)
やはり[math]k[/math]平均法ではうまくクラスタリングできま...
スペクトラル・クラスタリングは,''kernlab''パッケージで提...
そこで,kernlabパッケージをインストールします.''install....
#geshi(rsplus){{
install.packages("kernlab")
library(kernlab)
}}
*スペクトラル・クラスタリング [#n0aec749]
スペクトラル・クラスタリングは,距離行列(類似度行列)を...
スペクトラル・クラスタリングを行うには,''specc''コマンド...
speccコマンドには,データとクラスター数を引数として与えま...
#geshi(rsplus){{
sc = specc(logo, center=2)
plot(logo, col=sc, pch=sc)
}}
#ref(logo_specc.png,nolink,50%)
スペクトラル・クラスタリングではきれいにクラスタリングで...
サンプル・データの''spirals''でも試してみます.
#geshi(rsplus){{
data(spirals)
plot(spirals)
}}
#ref(spirals.png,nolink,50%)
まず,[math]k[/math]平均法を試します.
#geshi(rsplus){{
km = kmeans(spirals, 2)
plot(spirals, col=km$cluster, pch=km$cluster)
}}
#ref(spirals_kmeans.png,nolink,50%)
次に,スペクトラル・クラスタリングを用います.
#geshi(rsplus){{
sc = specc(spirals, center=2)
plot(spirals, col=sc, pch=sc)
}}
#ref(spirals_specc.png,nolink,50%)
''specc''は内部でランダムな初期化を行っていますので,[mat...
同じ結果を得るためには,''seed.set''を用いて乱数のシード...
#geshi(rsplus){{
set.seed(0)
sc = specc(spirals, center=2)
}}
*irisデータセット [#mc2c8f40]
''irisデータセット''でもやってみましょう.
#geshi(rsplus){{
data(iris)
}}
このデータセットは,アヤメの種類(Species)をがく片の長さ...
長さと幅は連続値,種類はsetosa, versicolor, virginicaのい...
このデータセットには,setosa, versicolor, virginicaという...
ランダムに10個のデータを選択して,見てみましょう.
#geshi(rsplus){{
iris[sort(sample(1:150,10)),]
}}
#geshi(rsplus){{
Sepal.Length Sepal.Width Petal.Length Petal.Width ...
4 4.6 3.1 1.5 0.2 ...
22 5.1 3.7 1.5 0.4 ...
65 5.6 2.9 3.6 1.3 ver...
97 5.7 2.9 4.2 1.3 ver...
100 5.7 2.8 4.1 1.3 ver...
108 7.3 2.9 6.3 1.8 vi...
116 6.4 3.2 5.3 2.3 vi...
122 5.6 2.8 4.9 2.0 vi...
136 7.7 3.0 6.1 2.3 vi...
146 6.7 3.0 5.2 2.3 vi...
}}
ここでは,Speciesを除いた1列目から4列目だけを取り出して使...
#geshi(rsplus){{
iris.nolabel <- iris[1:4]
}}
4次元データですが,このうちのSepal.LengthとPetal.Lengthだ...
データを表示するときの色''col''と形''pch''にはirisのSpeci...
#geshi(rsplus){{
plot(iris.nolabel$Sepal.Length, iris.nolabel$Petal.Length,
col=as.numeric(iris$Species), pch=as.numeric(iris$Spe...
}}
#ref(iris.png,nolink,40%)
カテゴリーの数は3だとわかっていますので,クラスター数を[m...
#geshi(rsplus){{
iris.nolabel.specc <- specc(iris.nolabel, center=3)
}}
今度は色と形をクラスタリングによって得られたクラスター番...
#geshi(rsplus){{
plot(iris.nolabel$Sepal.Length, iris.nolabel$Petal.Length,
col=iris.nolabel.specc, pch=iris.nolabel.specc)
}}
#ref(iris_specc.png,nolink,40%)
残念ながら,irisデータセットはスペクトラル・クラスタリン...
*まとめ [#a640c60a]
スペクトラル・クラスタリングは,距離行列(類似度行列)を...
[math]k[/math]平均法が苦手とするようなデータでもうまくい...
(内部で行われているクラスタリングが乱数に依存する手法の...
*参考文献 [#y0547ce9]
#html{{
<iframe style="width:120px;height:240px;" marginwidth="0"...
}}
-[[クラスタリングとは(クラスター分析とは):http://www.ka...
-[[スペクトラルクラスタリングは次元圧縮しながらKmeansする...
-[[Rでk平均法を使う>バイオ・データ・マイニング/Rでk平均法...
終了行:
*はじめに [#f4553c33]
『Rによるバイオインフォマティクスデータ解析』の7.10節「ス...
#html{{
<iframe style="width:120px;height:240px;" marginwidth="0"...
}}
*準備 [#e03b8e43]
Rのインストールについては,次のページを見てください.
-[[MacでRを使う>機械学習/MacでRを使う]]
-[[WindowsでRを使う>機械学習/WindowsでRを使う]]
[math]k[/math]平均法が苦手なデータとして,二重円のデータ...
[math]-4[/math]から[math]4[/math]までの二次元の一様乱数を...
#geshi((rsplus){{
x = runif(1000) * 8 - 4
y = runif(1000) * 8 - 4
data = cbind(x, y)
c2 = (x^2 + y^2) < 16 & (x^2 + y^2) > 9
c1 = (x^2 + y^2) < 4 & (x^2 + y^2) > 1
logo = data[(c2 | c1),]
plot(logo)
}}
#ref(logo.png,nolink,50%)
まずは[math]k[/math]平均法を試して見ます.
#geshi(rsplus){{
km = kmeans(logo, 2)
plot(logo, col=km$cluster, pch=km$cluster)
}}
#ref(logo_kmeans.png,nolink,50%)
やはり[math]k[/math]平均法ではうまくクラスタリングできま...
スペクトラル・クラスタリングは,''kernlab''パッケージで提...
そこで,kernlabパッケージをインストールします.''install....
#geshi(rsplus){{
install.packages("kernlab")
library(kernlab)
}}
*スペクトラル・クラスタリング [#n0aec749]
スペクトラル・クラスタリングは,距離行列(類似度行列)を...
スペクトラル・クラスタリングを行うには,''specc''コマンド...
speccコマンドには,データとクラスター数を引数として与えま...
#geshi(rsplus){{
sc = specc(logo, center=2)
plot(logo, col=sc, pch=sc)
}}
#ref(logo_specc.png,nolink,50%)
スペクトラル・クラスタリングではきれいにクラスタリングで...
サンプル・データの''spirals''でも試してみます.
#geshi(rsplus){{
data(spirals)
plot(spirals)
}}
#ref(spirals.png,nolink,50%)
まず,[math]k[/math]平均法を試します.
#geshi(rsplus){{
km = kmeans(spirals, 2)
plot(spirals, col=km$cluster, pch=km$cluster)
}}
#ref(spirals_kmeans.png,nolink,50%)
次に,スペクトラル・クラスタリングを用います.
#geshi(rsplus){{
sc = specc(spirals, center=2)
plot(spirals, col=sc, pch=sc)
}}
#ref(spirals_specc.png,nolink,50%)
''specc''は内部でランダムな初期化を行っていますので,[mat...
同じ結果を得るためには,''seed.set''を用いて乱数のシード...
#geshi(rsplus){{
set.seed(0)
sc = specc(spirals, center=2)
}}
*irisデータセット [#mc2c8f40]
''irisデータセット''でもやってみましょう.
#geshi(rsplus){{
data(iris)
}}
このデータセットは,アヤメの種類(Species)をがく片の長さ...
長さと幅は連続値,種類はsetosa, versicolor, virginicaのい...
このデータセットには,setosa, versicolor, virginicaという...
ランダムに10個のデータを選択して,見てみましょう.
#geshi(rsplus){{
iris[sort(sample(1:150,10)),]
}}
#geshi(rsplus){{
Sepal.Length Sepal.Width Petal.Length Petal.Width ...
4 4.6 3.1 1.5 0.2 ...
22 5.1 3.7 1.5 0.4 ...
65 5.6 2.9 3.6 1.3 ver...
97 5.7 2.9 4.2 1.3 ver...
100 5.7 2.8 4.1 1.3 ver...
108 7.3 2.9 6.3 1.8 vi...
116 6.4 3.2 5.3 2.3 vi...
122 5.6 2.8 4.9 2.0 vi...
136 7.7 3.0 6.1 2.3 vi...
146 6.7 3.0 5.2 2.3 vi...
}}
ここでは,Speciesを除いた1列目から4列目だけを取り出して使...
#geshi(rsplus){{
iris.nolabel <- iris[1:4]
}}
4次元データですが,このうちのSepal.LengthとPetal.Lengthだ...
データを表示するときの色''col''と形''pch''にはirisのSpeci...
#geshi(rsplus){{
plot(iris.nolabel$Sepal.Length, iris.nolabel$Petal.Length,
col=as.numeric(iris$Species), pch=as.numeric(iris$Spe...
}}
#ref(iris.png,nolink,40%)
カテゴリーの数は3だとわかっていますので,クラスター数を[m...
#geshi(rsplus){{
iris.nolabel.specc <- specc(iris.nolabel, center=3)
}}
今度は色と形をクラスタリングによって得られたクラスター番...
#geshi(rsplus){{
plot(iris.nolabel$Sepal.Length, iris.nolabel$Petal.Length,
col=iris.nolabel.specc, pch=iris.nolabel.specc)
}}
#ref(iris_specc.png,nolink,40%)
残念ながら,irisデータセットはスペクトラル・クラスタリン...
*まとめ [#a640c60a]
スペクトラル・クラスタリングは,距離行列(類似度行列)を...
[math]k[/math]平均法が苦手とするようなデータでもうまくい...
(内部で行われているクラスタリングが乱数に依存する手法の...
*参考文献 [#y0547ce9]
#html{{
<iframe style="width:120px;height:240px;" marginwidth="0"...
}}
-[[クラスタリングとは(クラスター分析とは):http://www.ka...
-[[スペクトラルクラスタリングは次元圧縮しながらKmeansする...
-[[Rでk平均法を使う>バイオ・データ・マイニング/Rでk平均法...
ページ名: