SlideShare a Scribd company logo
1 of 30
Download to read offline
Topological data analysis
大林一平
京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST
2015 年 3 月 KMC 春合宿
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 1 / 30
自己紹介
数学者 (力学系,応用数学)
4 月から東北大の WPI-AIMR に移ります
WPI(World Premier International Research Center
Initiative)
Advanced Institute for Materials Research
仙台駅前 (誇張あり) に引越ししました
Ruby
Ruby/SDL
Ruby Reference manual
net/*, rexml, openssl など
KMC サーバの保守管理をしていました
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 2 / 30
趣味など
数学
プログラミング
roguelike
シューティング
ゲーム音楽
非電源ゲーム
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 3 / 30
概要
ホモロジーとは図形の穴を分類し,その数を数え
ることである.
パーシステントホモロジーを使うと,穴の大きさ
なんかもある程度わかる
これらは計算機で計算可能である
計算してみよう
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 4 / 30
穴の大きさや数を調べてどうするの?
軽石や活性炭のような多孔質の物体では穴がその
機能性に重要
消臭剤
数や大きさが知りたい
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 5 / 30
完全に秩序的な構造(結晶)と完全にランダムな構造
(液体や気体) の中間的な構造を特徴付ける可能性
ガラスなど
結晶は群論的な構造
液体,気体は確率論的な構造 (統計力学など)
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 6 / 30
計算幾何学
データから計算機によって幾何的な情報を取りだす/計
算する
ボロノイ図
空間探索/検索
kd-tree
oct-tree
三角形分割
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 7 / 30
トポロジーとは?
幾何学の一分野で,空間,図形の「つながり具合を調べ
る」のが問題
例えば図形に穴が空いているかどうかといった問
題を考える
結び目 (knot) や組紐 (braid)
平面グラフ
この講座では,最も応用範囲の広い「ホモロジー」につ
いて考える
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 8 / 30
ホモロジー
図形の「穴」を分類して,その数を数える
穴の種類とは?
どうやって数えるの
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 9 / 30
穴の種類について
3 次元であれば,穴の種類は 2 つある.
ドーナツの穴,筒
穴の内側が見える
紐を通せる
豆腐の鬆,風船
穴の内側が見える
紐を通せない
実は 0 次元の穴を連結成分の個数とすると都合がよい.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 10 / 30
浮き輪の穴は何個?
穴の内側は見れない
でも紐は通せる
実は 2 種類の穴の「両方」では?
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 11 / 30
平面グラフのオイラーの定理
平面グラフの辺,頂点,面,の数の間には以下の関係が
ある.
(面の数) − (辺の数) + (頂点の数) = 1
これはグラフが連結の場合.
この定理を使ってビットマップ画像の穴の数を数えて
みよう.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 12 / 30
頂点の数 = 40
辺の数 = 62
ビットマップの画素数 = 21
(面の数) = (辺の数) − (頂点の数) + 1 = 62 − 40 + 1 = 23
(画像の穴の数) = (面の数) - (画素数) = 2
画像の連結性を仮定すれば数を数えるだけで穴の個数
がわかる
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 13 / 30
1次元の穴を定義してみよう
以下の図には,頂点が 6 個,辺が 7 個,面が 1 個あり,
穴は 1 個である.
ここで突然であるが,係数が Z/2Z で基底が頂点/辺/面
であるベクトル空間を C0, C1, C2 と置く.係数が Z/2Z
だと同じものを 2 つ足すと 0 になる.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 14 / 30
穴とは? →ループではないか.
線形写像 ∂1 : C1 → C0 を,
∂1(辺) = (辺の一方の頂点) + (辺のもう一方の頂点) と
すると,∂1(ループ) = 0 となっている.
つまりループとは ker∂1 で表されるのでは? ループの
個数とは dim ker∂1 では?
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 15 / 30
緑のループは 2 つの赤のループの和ということに注意す
ると dim ker∂1 = 2
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 16 / 30
この図形ではループの一方は埋まっているため穴では
ない.
→埋まっているループとそうでないループを区別する
必要がある.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 17 / 30
線形写像 ∂2 : C2 → C1 を,∂2(面) = (面の各辺) で定
義すると,∂2(A) の像がループになっている.
→これが埋まっているループだろう.→つまり埋まっ
ているループの個数は dim im∂2.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 18 / 30
結局,穴の個数は
dim ker∂1 − dim im∂2
と言える.で,これは行列の rank を計算すればよい.
行列の rank は掃き出し法で計算機で計算できる!
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 19 / 30
2次元の穴の場合
この場合は 3 次元データを考える必要がある.頂点,
辺,面に加えてキューブを考える.そして,
∂3(キューブ) = キューブの各面
∂2(面) = (面の各辺)
とすると,先程と同様にして
dim ker∂2 − dim im∂3
が 2 次元の穴の個数.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 20 / 30
色々なcomplex
長方形以外でも同じ計算法で様々な場合に計算でき
ます.
Vietris-Rips complex
(n-単体はPairwise で近い
n+1個の頂点からなる)
Simplicial complex
(三角形分割)
Alpha complex
(ボロノイ図から定義される)
実習には alpha complex を使います.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 21 / 30
α-complex
point clound data(空間上の点の集合,左図) に円 (すべ
て同じ半径) を貼り付けて穴を見付ける
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 22 / 30
穴の生死とパーシステントホモロジー
円の半径を 0 から大きくしていくことを考える.
a hole is born
at radius
接する
a hole is dead at radius
すると,ある r1 で穴が生じ,連続的に変化していって r2
で消える.この穴の種類と数に加えて,各穴の生死の情
報を保持しているのがパーシステンスホモロジーで
ある.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 23 / 30
a hole is born
at radius
接する
a hole is dead at radius
穴の死の時刻 (半径) はおよそ穴の大きさを表して
いる
穴の生の時刻はループを構成する点の密度を表し
ている
生死の時刻差はそれが穴としてどれくらい意味が
あるか,を示している.
(ループを構成する点の密度)≈(穴の大きさ) ならばその
穴はあまり穴の体をなしていない
生死の時刻差が小さいならば,その穴はノイズ的なもの
と見なしてよい
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 24 / 30
パーシステンスダイアグラム
各「穴」の誕生時刻を x 軸に,死亡時刻を y 軸にプロッ
トしたもの
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
"./exmaple/circle.txt"
入力データ
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
"./h1.txt"
ここ
対
角
線
パーシステンスダイアグラム
対角線の側にある点は「ノイズ的」点.そこから離れた
点が 1 つある.これが入力データの中央の穴を表して
いる.
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 25 / 30
パーシステントホモロジー関連
実は点集合データ with 円 (or 球) でなくとも色んな設定
で計算できる.
点ごとに半径の大きさに重みを付けて考える
例えば高分子の原子配置データで原子の種類ごとに重み
を付けるとか
グレイスケールデータで二値化閾値を段階的に変
化させたときの穴の生成と消滅の様子を調べる
この場合は穴の大きさではなく「くっきり度」みたいな
ものを調べている
2 つの白黒データの「差」を穴の様子という観点か
ら調べる
データが何らかの理由で歪んだときの歪み具合を調べる
当然 3 次元とかでもできるよ
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 26 / 30
色々なアイデア
パーシステンスダイアグラムを特徴量として機械
学習する
適当なベクトル空間に埋め込む方法がいくつか開発され
ている
カーネル関数を構成してカーネル法を用いる
2D, 3D の両方のデータに使える
2D/3D 画像など
パーシステンスダイアグラムでコンピュータ診断
支援
血管とか臓器のデータとか
CT スキャンのような 3 次元データを取る方法が色々活用さ
れている
適当な特徴量に集約する
分子の変形性と穴の関係
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 27 / 30
ソフトウェアについて
パーシステントホモロジーを計算するソフトウェアは
結構たくさんある
radhom
http://capd.sourceforge.net/capdRedHom/
perseus
http://www.sas.upenn.edu/~vnanda/perseus/
phat http://code.google.com/p/phat/
dipha https://code.google.com/p/dipha/
α-complex はドロネー三角形分割で計算できるので,
適当な計算幾何のソフトウェアを使う (CGAL など)
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 28 / 30
参考文献
Jan Reininghaus, et al.: phat, dipha
高速&並列計算に対応した persistent homology 計算ラ
イブラリ
平岡裕章: タンパク質構造とトポロジー ―パーシ
ステントホモロジー群入門
日本語で唯一の本
H.Edelsbrunner, J.Harer: Computational
Topology, An Introduction. American
Mathematical Society, 2010
T.Kaczynski, K.Mischaikow, M.Mrozek:
Computational Homology, 2004
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 29 / 30
まとめ
ホモロジーとは図形の穴を分類し,その数を数え
ることである.
パーシステントホモロジーを使うと,穴の大きさ
なんかもある程度わかる
これらは計算機で計算可能である
パーシステントホモロジーは幾何データの重要な
特徴量になりうる
夢は広がる
大林一平   (京大マイコンクラブ (KMC)/京都大学数学教室/JST-CREST)Topological data analysis 2015 年 3 月 KMC 春合宿 30 / 30

More Related Content

Viewers also liked

Using Topological Data Analysis on your BigData
Using Topological Data Analysis on your BigDataUsing Topological Data Analysis on your BigData
Using Topological Data Analysis on your BigDataAnalyticsWeek
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Shoot Morii
 
Gaucheでマクロを書こう
Gaucheでマクロを書こうGaucheでマクロを書こう
Gaucheでマクロを書こうHideaki Nagamine
 
Topological data analysis
Topological data analysisTopological data analysis
Topological data analysisSunghyon Kyeong
 
Tutorial of topological data analysis part 3(Mapper algorithm)
Tutorial of topological data analysis part 3(Mapper algorithm)Tutorial of topological data analysis part 3(Mapper algorithm)
Tutorial of topological data analysis part 3(Mapper algorithm)Ha Phuong
 
Tutorial of topological_data_analysis_part_1(basic)
Tutorial of topological_data_analysis_part_1(basic)Tutorial of topological_data_analysis_part_1(basic)
Tutorial of topological_data_analysis_part_1(basic)Ha Phuong
 
Introduction to Topological Data Analysis
Introduction to Topological Data AnalysisIntroduction to Topological Data Analysis
Introduction to Topological Data AnalysisTatsuki SHIMIZU
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門Tatsuki SHIMIZU
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編京大 マイコンクラブ
 
Topological Data Analysis: visual presentation of multidimensional data sets
Topological Data Analysis: visual presentation of multidimensional data setsTopological Data Analysis: visual presentation of multidimensional data sets
Topological Data Analysis: visual presentation of multidimensional data setsDataRefiner
 

Viewers also liked (20)

Using Topological Data Analysis on your BigData
Using Topological Data Analysis on your BigDataUsing Topological Data Analysis on your BigData
Using Topological Data Analysis on your BigData
 
Pietのエディタを作った話
Pietのエディタを作った話Pietのエディタを作った話
Pietのエディタを作った話
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
 
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
 
SSL で守られる生活
SSL で守られる生活SSL で守られる生活
SSL で守られる生活
 
Gaucheでマクロを書こう
Gaucheでマクロを書こうGaucheでマクロを書こう
Gaucheでマクロを書こう
 
Topological data analysis
Topological data analysisTopological data analysis
Topological data analysis
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Tutorial of topological data analysis part 3(Mapper algorithm)
Tutorial of topological data analysis part 3(Mapper algorithm)Tutorial of topological data analysis part 3(Mapper algorithm)
Tutorial of topological data analysis part 3(Mapper algorithm)
 
Tutorial of topological_data_analysis_part_1(basic)
Tutorial of topological_data_analysis_part_1(basic)Tutorial of topological_data_analysis_part_1(basic)
Tutorial of topological_data_analysis_part_1(basic)
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
Introduction to Topological Data Analysis
Introduction to Topological Data AnalysisIntroduction to Topological Data Analysis
Introduction to Topological Data Analysis
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門
 
Ultra piet
Ultra pietUltra piet
Ultra piet
 
Practical topology
Practical topologyPractical topology
Practical topology
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
Altseed
AltseedAltseed
Altseed
 
文字コード基礎論A
文字コード基礎論A文字コード基礎論A
文字コード基礎論A
 
Topological Data Analysis: visual presentation of multidimensional data sets
Topological Data Analysis: visual presentation of multidimensional data setsTopological Data Analysis: visual presentation of multidimensional data sets
Topological Data Analysis: visual presentation of multidimensional data sets
 

More from 京大 マイコンクラブ

かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話京大 マイコンクラブ
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換京大 マイコンクラブ
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」京大 マイコンクラブ
 

More from 京大 マイコンクラブ (20)

テキストファイルを読む💪 第1回
テキストファイルを読む💪  第1回テキストファイルを読む💪  第1回
テキストファイルを読む💪 第1回
 
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
 
Common Lisp入門
Common Lisp入門Common Lisp入門
Common Lisp入門
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
 
セミコロンレスc++
セミコロンレスc++セミコロンレスc++
セミコロンレスc++
 
エンジニアと健康
エンジニアと健康エンジニアと健康
エンジニアと健康
 
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったらもし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
 
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
 

Topological data analysis