SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Tokyo.R #11 (2011/01/29)
『Rによるデータサイエンス』第 II 部第 6 章

「自己組織化マップ」
SOM:Self-Organizing Map
発表者: Bob#3(TwitterID:@bob3bob3)
初心者の方へ

●
    今日のお話はあまり初心者向けではありません…
    –   @sakaue さんの Japan.R での講義資料が素晴らし
         いのでお勧めです。
         ●
             http://lab.sakaue.info/wiki.cgi/JapanR2010?page=JapanR2010AM
自己組織化マップとは?
●
    Teuvo Kohonen が 1980 年代前半に提案した
    手法。
●
    ニューラルネットワークモデルの一種で、人間
    が脳の中で情報を分類・整理する過程を模した
    方法。
●
    多次元データをより低次元(多くの場合は2次
    元)のマップに落とし込み可視化する、というの
    が良く使われるケース。その意味で主成分分
    析や MDS に似ている。
●
    格子状または蜂の巣状のグリッドを用意し、そ
    れぞれの部屋(ユニット)に似たものを集めてゆ
    く。
●   クラスタリングの一種としても使われる。
要は
「脳内メーカー」



  http://maker.usoko.net/nounai/
事例紹介
RでSOM
●   主なパッケージと関数

    –   {som} som()
    –   {class} SOM(), batchSOM()
    –   {kohonen} som()
    –   {wccsom} wccsom()
RでSOM
●   主なパッケージと関数

    –   {som} som()
    –   {class} SOM(), batchSOM()
    –   {kohonen} som()  ← 今回紹介するのはコレ!
    –   {wccsom} wccsom()
毎度おなじみ「あやめ」のデータ
●    いわゆる「フィッシャーのあやめのデータ」

●    3品種の菖蒲のがく片の長さと幅、花びらの長さと幅のデー
     タ (n=150) 。

●
     詳しくはウィキペディア(英語版)で!
    –   http://en.wikipedia.org/wiki/Iris_flower_data_set
    setosa               versicolor                         virginica
{kohonen} som()
library(kohonen) # パッケージの読み込み
set.seed(10)   # 乱数種の指定

# som() はマトリクスしか受け付けないので変換
iris.mat <- as.matrix(iris[,1:4])

# グリッドの大きさを指定。ただし「 x*y < サンプルサイズ」
# topo はグリッドの形状の指定。格子状の場合は“ rect”
# 蜂の巣状の場合は“ hexa”
GRID <- somgrid(xdim=3, ydim=3, topo="hexa")

# 自己組織化マップの実行
iris.som <- som(iris.mat, # 分析するデータ。マトリクス
                grid=GRID, # グリッドの指定
                rlen=1000) # 反復回数

# 各個体がどのユニットに分類されたかは $unit.classif に入っている
table(iris.som$unit.classif)
# 1 2 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25
# 18 7 5 6 19 6 4 3 4 8 3 8 4 11 2 6 8 2 9 7 5 5
とりあえず、 plot() !
   plot(iris.som, bg="#FFFF99")




      Sepal.Length   Petal.Length
      Sepal.Width    Petal.Width
バリエーション
plot(iris.som, bg="#FFFF99",   plot(iris.som, bg="#FFFF99",
     codeRendering="stars")         codeRendering="lines")
マップ!
                          Mapping plot




                                   ve ve
                                    ve
                                       ve           ve ve
                                                   ve ve
                                     ve veve      veveve
                                ve veve ve
                                    ve ve        veve
                                                     ve
                                                    ve
                                                     ve
                                                    ve
                                                     ve
                                   vive veve
                                      ve ve          ve
                                    ve ve
                                     ve               ve   ve
                                     ve              ve ve
                                                   ve

                                                 ve
     se se
    se
                                             vi
                                              vi
                                             vi vi
    sese
     se
    se se                       ve
     sese                 ve           vi vivi vi
                                           ve vi
  sese se
       se
   se se
   se se                   ve               vi
                                            vivi
                                              ve
se se sese                   ve          vi vi
                                             vi


                 se
                                     vi                vi
                                     vi
                                    vi
                 se se
                   se
                  se
                 se se          vivivivivi
                                  vi vi                    vi
                                                        vivi
                                       vi              vivi
                                                       vivi
              se se se
                 sesese
                   sese
                  sese
                     se                vi
                                   vi vi
             sese se se
                 se              vi vivivi            vi
                                                       vi
                                                      vi
                                                          vi
                     se             vi
                                  vi vi vi
ユニットごとの個体数
収束の様子
                                                  Training progress




                                0.030
Mean distance to closest unit

                                0.025
                                0.020




                                        0   200     400               600   800   1000

                                                          Iteration
さらにユニットをクラスタリング
                       Mapping plot




                                          ve
                                                                    ve
                                                              ve veve
                                         ve ve ve
                                          ve veve                  ve
                                                                veve
                                                                     ve
                                          vi veve ve
                                        veveveve ve
                                              ve              veveveve
                                         ve ve
                                           ve ve              veveve
                                                                   ve
                                           veve
                                             ve                ve veve
                                                                ve


      se
      se                                              vi
    se sese                                       vi
    se se se
           se            ve        ve             vi vivi
       se
    se se
       se se
        se                                          vivi
                                                      vevi
     se
      se se                  ve
                              ve                   vi vi ve
                                                      vive
            se                                       vi vi
       se

                 se se                                           vi
             se se                    vi vivi
                                       vi vi vi
               sesesese se
                  se                                          vi
             sesese se
               sesese
                sese
                                         vi
                                       vi vi
                                        vi                    vi vi
                se
              se se se
                  se                vi vi vi
                                     vi vi
                                    vi vivivi           vi     vi vivi
                                                              vi vi vi
                 se                        vi
            se                              vi
                 se
                                                         vi
書き方
# 色と記号の設定
COL <- c("#FF3300", "#339966", "#0041FF")
BGC <- c("#FFFF99", "#76E4A6", "#B4EBFA")
SP <- as.numeric(iris[,5])
LBL <- c("se","ve","vi")

# マップ
plot(iris.som, type="mapping", labels=LBL[SP], col=COL[SP], bg=BGC[1])
# ユニットごとの個体数
plot(iris.som, type="counts")
# 収束の様子
plot(iris.som, type="changes")

# ユニットをクラスタリングして色づけ
BGC <- c("#FFFF99", "#76E4A6", "#B4EBFA")
iris.som.dist <- dist(iris.som$codes)^2
CLST <-cutree(hclust(iris.som.dist,"ward"),3)
plot(iris.som, type="mapping", labels=LBL[SP], col=COL[SP], bgcol=BGC[CLST])
グリッドを細かくすると
                                                 Mapping plot
                                     se
 se                se se se   se                 se
                                                  se
                                                 se                                          se                  ve
                                                                                                                ve
           se                            se
                    se                                                                                          ve
                 se se          se
                            se se             se
                                               se                                                                     ve
    se
   se     se    se     se se
                         se se        se
se     se    se      se se        se     sese                                                ve          ve     ve
                                                                                                         ve
                           se
      se         se        se
                           se          se        se
                                                  se
                                                 se    se                               ve        ve                  vi
                                                                                   ve
                                                                       veve                   ve
                                                                                   ve
       ve                             ve         ve
       ve        ve        ve         ve               ve                               ve         ve                ve
                                                ve
                                                             ve                    ve
                      ve         ve                                      ve        ve                   ve
                                                                                                         ve     ve
                                           ve
                            ve                                                                                        ve
     vi vi                                       ve               vi
                                                                  vi      ve                                          ve
                                                        ve
  vi                            vi                                                                      ve
  vi                   vi                   vi
                                            vi              ve      vi             vi                    ve
                                                                                                        ve
                                                  vi                                 vi
       vi        vi        vi                                                         vi           ve
                                       vi                                                                            vi
vi                                                            vi                             vi
vi          vi                   vi
                                vi                           vi                                                 vi
                                                  vi vi                  vi        vi
                                       vi                           vi                             ve     vi
                                                                                                           vi         vi
                 vi         vi                   vi     vi         vi         vi                                     vi
  vi vi                    vi                                                        vi
主成分分析やMDSでは
書き方

# グリッドを細かくすると
GRID <- somgrid(xdim=12, ydim=12, topo="hexa")
iris.som <- som(iris.mat, grid=GRID, rlen=1000)
iris.som.dist <- dist(iris.som$codes)^2
CLST <-cutree(hclust(iris.som.dist,"ward"),3)
plot(iris.som, type="mapping", labels=LBL[SP],
     col=COL[SP], bgcol=BGC[CLST])

# 主成分分析の場合
iris.pca <- princomp(iris[,-5])
plot(iris.pca$scores[,1:2], pch=21, bg=COL[SP], main=" 主成分分析 ")

# 非計量 MDS (マンハッタン距離)の場合
library(MASS)
iris.mds <- isoMDS(dist(iris[-143,-5], "man"))
plot(iris.mds$points, pch=21, bg=COL[SP], main=" 非計量 MDS")
ご清聴、ありがとうございました。

Mais conteúdo relacionado

Mais de osamu morimoto

Tokyo.R #22 Association Rules
Tokyo.R #22 Association RulesTokyo.R #22 Association Rules
Tokyo.R #22 Association Rulesosamu morimoto
 
Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.osamu morimoto
 
tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.osamu morimoto
 

Mais de osamu morimoto (6)

Tokyo.R #22 Association Rules
Tokyo.R #22 Association RulesTokyo.R #22 Association Rules
Tokyo.R #22 Association Rules
 
Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.Tokyo.R8 brand positioning 2010.08.28.
Tokyo.R8 brand positioning 2010.08.28.
 
Tokyo r7 sem_20100724
Tokyo r7 sem_20100724Tokyo r7 sem_20100724
Tokyo r7 sem_20100724
 
Tokyo r6 sem3
Tokyo r6 sem3Tokyo r6 sem3
Tokyo r6 sem3
 
Tokyo webmining5
Tokyo webmining5Tokyo webmining5
Tokyo webmining5
 
tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.tokyo webmining3 2010.04.17.
tokyo webmining3 2010.04.17.
 

Último

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 

Último (8)

プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 

Tokyo r 11_self_organizing_map

  • 1. Tokyo.R #11 (2011/01/29) 『Rによるデータサイエンス』第 II 部第 6 章 「自己組織化マップ」 SOM:Self-Organizing Map 発表者: Bob#3(TwitterID:@bob3bob3)
  • 2. 初心者の方へ ● 今日のお話はあまり初心者向けではありません… – @sakaue さんの Japan.R での講義資料が素晴らし いのでお勧めです。 ● http://lab.sakaue.info/wiki.cgi/JapanR2010?page=JapanR2010AM
  • 3. 自己組織化マップとは? ● Teuvo Kohonen が 1980 年代前半に提案した 手法。 ● ニューラルネットワークモデルの一種で、人間 が脳の中で情報を分類・整理する過程を模した 方法。 ● 多次元データをより低次元(多くの場合は2次 元)のマップに落とし込み可視化する、というの が良く使われるケース。その意味で主成分分 析や MDS に似ている。 ● 格子状または蜂の巣状のグリッドを用意し、そ れぞれの部屋(ユニット)に似たものを集めてゆ く。 ● クラスタリングの一種としても使われる。
  • 6. RでSOM ● 主なパッケージと関数 – {som} som() – {class} SOM(), batchSOM() – {kohonen} som() – {wccsom} wccsom()
  • 7. RでSOM ● 主なパッケージと関数 – {som} som() – {class} SOM(), batchSOM() – {kohonen} som()  ← 今回紹介するのはコレ! – {wccsom} wccsom()
  • 8. 毎度おなじみ「あやめ」のデータ ● いわゆる「フィッシャーのあやめのデータ」 ● 3品種の菖蒲のがく片の長さと幅、花びらの長さと幅のデー タ (n=150) 。 ● 詳しくはウィキペディア(英語版)で! – http://en.wikipedia.org/wiki/Iris_flower_data_set setosa versicolor virginica
  • 9. {kohonen} som() library(kohonen) # パッケージの読み込み set.seed(10) # 乱数種の指定 # som() はマトリクスしか受け付けないので変換 iris.mat <- as.matrix(iris[,1:4]) # グリッドの大きさを指定。ただし「 x*y < サンプルサイズ」 # topo はグリッドの形状の指定。格子状の場合は“ rect” # 蜂の巣状の場合は“ hexa” GRID <- somgrid(xdim=3, ydim=3, topo="hexa") # 自己組織化マップの実行 iris.som <- som(iris.mat, # 分析するデータ。マトリクス grid=GRID, # グリッドの指定 rlen=1000) # 反復回数 # 各個体がどのユニットに分類されたかは $unit.classif に入っている table(iris.som$unit.classif) # 1 2 4 5 6 7 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 18 7 5 6 19 6 4 3 4 8 3 8 4 11 2 6 8 2 9 7 5 5
  • 10. とりあえず、 plot() ! plot(iris.som, bg="#FFFF99") Sepal.Length Petal.Length Sepal.Width Petal.Width
  • 11. バリエーション plot(iris.som, bg="#FFFF99", plot(iris.som, bg="#FFFF99", codeRendering="stars") codeRendering="lines")
  • 12. マップ! Mapping plot ve ve ve ve ve ve ve ve ve veve veveve ve veve ve ve ve veve ve ve ve ve ve vive veve ve ve ve ve ve ve ve ve ve ve ve ve ve se se se vi vi vi vi sese se se se ve sese ve vi vivi vi ve vi sese se se se se se se ve vi vivi ve se se sese ve vi vi vi se vi vi vi vi se se se se se se vivivivivi vi vi vi vivi vi vivi vivi se se se sesese sese sese se vi vi vi sese se se se vi vivivi vi vi vi vi se vi vi vi vi
  • 14. 収束の様子 Training progress 0.030 Mean distance to closest unit 0.025 0.020 0 200 400 600 800 1000 Iteration
  • 15. さらにユニットをクラスタリング Mapping plot ve ve ve veve ve ve ve ve veve ve veve ve vi veve ve veveveve ve ve veveveve ve ve ve ve veveve ve veve ve ve veve ve se se vi se sese vi se se se se ve ve vi vivi se se se se se se vivi vevi se se se ve ve vi vi ve vive se vi vi se se se vi se se vi vivi vi vi vi sesesese se se vi sesese se sesese sese vi vi vi vi vi vi se se se se se vi vi vi vi vi vi vivivi vi vi vivi vi vi vi se vi se vi se vi
  • 16. 書き方 # 色と記号の設定 COL <- c("#FF3300", "#339966", "#0041FF") BGC <- c("#FFFF99", "#76E4A6", "#B4EBFA") SP <- as.numeric(iris[,5]) LBL <- c("se","ve","vi") # マップ plot(iris.som, type="mapping", labels=LBL[SP], col=COL[SP], bg=BGC[1]) # ユニットごとの個体数 plot(iris.som, type="counts") # 収束の様子 plot(iris.som, type="changes") # ユニットをクラスタリングして色づけ BGC <- c("#FFFF99", "#76E4A6", "#B4EBFA") iris.som.dist <- dist(iris.som$codes)^2 CLST <-cutree(hclust(iris.som.dist,"ward"),3) plot(iris.som, type="mapping", labels=LBL[SP], col=COL[SP], bgcol=BGC[CLST])
  • 17. グリッドを細かくすると Mapping plot se se se se se se se se se se ve ve se se se ve se se se se se se se ve se se se se se se se se se se se se se se se sese ve ve ve ve se se se se se se se se se se ve ve vi ve veve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve ve vi vi ve vi vi ve ve ve vi vi ve vi vi vi vi ve vi vi ve ve vi vi vi vi vi vi ve vi vi vi vi vi vi vi vi vi vi vi vi vi vi vi vi vi ve vi vi vi vi vi vi vi vi vi vi vi vi vi vi
  • 19. 書き方 # グリッドを細かくすると GRID <- somgrid(xdim=12, ydim=12, topo="hexa") iris.som <- som(iris.mat, grid=GRID, rlen=1000) iris.som.dist <- dist(iris.som$codes)^2 CLST <-cutree(hclust(iris.som.dist,"ward"),3) plot(iris.som, type="mapping", labels=LBL[SP], col=COL[SP], bgcol=BGC[CLST]) # 主成分分析の場合 iris.pca <- princomp(iris[,-5]) plot(iris.pca$scores[,1:2], pch=21, bg=COL[SP], main=" 主成分分析 ") # 非計量 MDS (マンハッタン距離)の場合 library(MASS) iris.mds <- isoMDS(dist(iris[-143,-5], "man")) plot(iris.mds$points, pch=21, bg=COL[SP], main=" 非計量 MDS")