状況設定

例として用いるデータは時系列データとします。例えば、下図のようなネットワークを考えます。t=0であるノード(例えば、ノード0)にパルスを与えます。そのパルスが時刻tが経つとネットワーク上を伝わっていきます。そのデータから、コミュニティを導き、最終的にネットワークを再現する実験を考えます。

f:id:muskat:20180502101249p:plain

図1、ネットワーク

 

f:id:muskat:20180504230807p:plain

図2、時系列データの概要

ノード上を伝わる時系列データは図2のようになる。この図でははじめにノード0にパルスを加えて、その後t=1から描いている。

 

ここでΔtを時間の解像度として、その時間解像度で相関を考えることにより、ノード間のつながりを考えたい。ノードi,j間のリンクの重みをノードi,jの相関の強さ

f:id:muskat:20180505185111p:plain

で表すとする。この相関の強さでリンクの重みを表すと、次のような条件でコミュニティを定義したときに、既存のコミュニティ解析の結果とあるΔt(と後述のε)で一致することを示すことがこの実験のテーマである。

 

コミュニティの条件

f:id:muskat:20180505192024p:plain

ここで、εはパラメータである。この条件を満たす、i,j,kが同じコミュニティに属すると定義する。コミュニティを定義するパラメータは全部でΔtとεの2つである。この2つのパラメータを変化させて、既存のコミュニティとの対応関係を見つけるのがこの実験のテーマである。

 



実験のはじまり

さて、前回はネットワークの概要を書きました。その中で、コミュニティ解析が無秩序なデータが秩序立って見えるクラスタリングという手法の一つであると言いました。クラスタリングを使うことで、データを人が理解する形にできるだけでなく、機械つまりAIの教師データとして利用できる形にすることができます。

 

コミュニティ解析の手法で現在一番使われているものはリンクの密度が高いものを抜き出すものです。一つ一つのノードに対してリンクが何本つながっているかを確認して、互いにリンクが密なノードの集合を探します。そもそものコミュニティの定義をリンクの疎密で定義している以上、この手法がもっとも単純で妥当な方法な気がします。

 

そもそもコミュニティ解析はネットワークがあることが前提ですが、ネットワークがわからない場合に使用されるクラスタリング手法との関係はどうなっているのでしょうか。ネットワークを用いないクラスタリング手法では、データを座標上に点として表したとき、点と点の距離を計算して近いもの同士を同じクラスターに属するとします。この距離の逆数をリンクの重みとしてそのデータをネットワークで表現したとき、このネットワークのコミュニティ解析の結果はおそらく、ネットワークを用いないクラスタリングによって出したクラスターと同じような結果になるでしょう。この予想はつまり、距離によってクラスタリングするということは、リンクを距離(の逆数)で表したときのネットワークのコミュニティ解析することと同じということです。

 

距離以外の基準を用いてクラスタリングすることができるのと同様にして、リンクの重みを様々に定義してコミュニティ解析することができます。では例えば、相関の大きさによってリンクの重みを定義してコミュニティ解析することは、座標上のデータ点をクラスタリングする手法ではどう表されるでしょうか。もし、座標上のデータ点の互いの距離と相関の大きさが反比例の関係にあるなど、距離と相関が一定の関係で表すことができるなら、距離の大きさによってクラスタリングすることで相関がリンクの重みのネットワークのコミュニティと同じような結果が導くことができるでしょう(前述の予測が正しいとき)。

 

では、データ間の相関がデータ間の距離に依らないときはどうなるでしょうか。そのようなときには、相関の強さを基準にしてクラスタリングすることで、相関の強さをリンクの重みとしたネットワークのコミュニティ解析の結果と同じような結果を導けるでしょう。しかし、そのようなときはもはやデータ点を高次元にプロットする可視化はあまり意味を持たなくなるかもしれません。なぜなら、距離の遠近がわかりやすいような一般的な座標上のデータプロットは相関が距離によらいないときのデータ表現としてはあまり適切とはいないでしょう。距離が意味を持たないような表現方法をみても状況をつかむのにはわかりづらいし、混乱します。

 

そのようなデータ間の相関と距離の関係性が不明なときに、相関をリンクの重みとしてネットワークを描くと距離と相関の大きさがある程度関係を持った可視化ができるで、状況を捉えやすくなります。

 

座標からネットワークへの写像は相関の大きさが鍵を握っています。相関の大きさが代ればネットワークが変わります。言わずもがな、相関の定義が代ればネットワークは変わります。相関がネットワークにおける座標軸の役割を担っています。

 

では、相関をどのように定義するべきでしょうか。時系列データであればデータ間の相関の強さは相関係数の大きさで表され、様々な計算方法があります。時系列データがしっかりあれば、それから相関を厳密に計算しネットワーク解析してクラスタリングすることができます。

 

しかしながら、現実的には時系列データが十分にある状況はあまりないように思います。データが欠落していたり、時間の解像度として十分ではなかったり、そもそもデータ量が十分なかったりすると思います。そのような状況で強引に相関を計算してコミュニティ解析しても結果は真の結果と同じである保証がないばかりか、全く違う結果になるかもしれません。

 

データ量が十分ではなく、相関の計算結果が真の相関と全く違うときでもコミュニティだけは真のものに近づけるように、コミュニティ解析手法ないしは相関の計算手法を考えようというものがこのブログで書いていく研究テーマになります。

 

イメージとしては、解像度の悪いぼやけた画像でも、大雑把にはどこに何があるかわかる。その大雑把なグループがコミュニティに対応すると考えています。さらにデータ量が増えれば、画像の詳細がはっきりする。つまりネットワークのリンクがはっきり見えるというものです。リンクからコミュニティを計算する従来の手法の逆で、コミュニティがはじめにきて、その後リンクがわかるというものを目指します。

 

次回は実験の詳細を説明します。

 

 

 

 

実験ノート

これは実験ノートです。どんな実験かの説明と、これからどうするのかということをこれから徒然と書いていきます。

 

まず、これはネットワーク科学というものの研究の実験ノートです。ネットワーク科学とは、あらゆる物事をネットワークで抽象的に表現して説明します。例えば、友人関係などをネットワークで表したりして、情報の伝達の仕方、グループ(コミュニティ)がどこにあるか、などを調べて解析する学問分野です。ネットワークの数理的な解析方法を研究する基礎的な学問ですので、その応用範囲は広いです。例えば、友人関係ネットワークや、交通(物流)のネットワークや、動物の交配のネットワーク、通信機器(携帯)のネットワークや、もっと抽象的には商品と商品の関連性(同時に売れるなど)をネットワークで表すことができます。物事の因果性や相関をネットワークで表現するとありとあらゆる概念をネットワークで表現することができます。ミクロな正解では、微生物、あるいは原子や電子の振る舞いもネットワークで捉えることができます。そのようなとても一般的な概念であるネットワークを数理的に解析しようとしているのが、ネットワーク科学です。より解析的な手法による研究は幾何学の分野ではグラフ理論とも呼ばれます。ネットワーク科学はグラフ理論では扱わないような巨大なネットワークに関する性質を焦点に行います。

 

ネットワーク科学とは

巨大で複雑なネットワークを解析するための手法を研究する学問分野

 

ネットワークとは何かを議論する前に、まずそれがどんなものかを見てみます。百聞は一見にしかずということです。ネットワークを作ることは下のようなサイトを使えば簡単にできます。

graphonline.ru

このサイトで作ったネットワークが↓です。

f:id:muskat:20180502101249p:plain

これがネットワークです。一般的にネットワークと呼ばれるものとほとんど同じです。 

このネットワークを使って、ネットワークをというものを説明します。まず、構成要素としては○で書かれたノードと、ーで書かれたリンクがあります。今はわかりやすくノードには番号が書かれています。0,1,2,3,4,5...19という感じです。リンクに関しては番号は振ってありません。一般的にリンクには番号を振らないことが多いです。理由としては、そもそもリンクよりノードに着目する場合が多いこと、また、リンクは両サイドに必ずノードを伴う性質があるため、ノード3,4の間のリンクといったように呼ばれます。リンクの両サイドに必ずノードを伴う性質は、そもそもネットワークのリンクの定義によって明記されています。つまりリンクとはノード間のつながりを表すものであるということがリンクの定義になります。「ノード間」という意味はリンクの両サイドにノードがあるということと同義になります(少なくともネットワーク科学においてはそのように解釈しています)。このように、ネットワークおいては単純にノードとリンクが構成要素として扱われます。

 

ネットワークのノードは様々な特徴の観点から解析されます。ここでは詳しくは説明しませんが、例えば、ノードに何本のリンクがつながっているのかをすべてのノードに対してリンクの分布をみることによって、解析したりします。また、あるノード間にリンクが何本あるかでノード間の距離を定義することで、ある特徴をもったノードは距離が近いか遠いかを分析することもできます。例えば、世界中の人と知り合いのネットワークを作った時に、世界中の誰とでも6人くらいの知り合いを通せばつながることができるという研究があります(つまり世界中の誰とでも距離6でつながっています)。自分の知り合いの知り合いの・・・ということを6回繰り返すと、だいたいアメリカの大統領にもつながりますし、近くのスーパーで働いている人にもつながります。このようにネットワークのノード(あるいはリンク)に対しては様々な研究がされています。

  

ネットワーク科学の中で特に盛んに研究されている分野がコミュニティ解析になります。コミュニティ解析とはネットワークの中からコミュニティを見つけることになります。またコミュニティとはグループのことです。例えば↓の線で囲んだ部分がコミュニティになります。

f:id:muskat:20180502110025p:plain

 

コミュニティないではリンクが密で、コミュニティ間はリンクが疎になっているのがコミュニティの特徴です。このコミュニティを見つける方法を考えて見出すことがコミュニティ解析で行われることです。これは明確に決定できる問題ではないです。つまり方程式で解くといった解析的な解法はいまのところありません。どれくらい密であれば、コミュニティと呼べるのでしょうか。ネットワークにもよりますが、すべてのネットワークに対応した解法はいまのところありません。

 

コミュニティはネットワーク科学意外の分野ではクラスターとも呼ばれます。データ解析ではデータの特徴のあるまとまりのことはクラスターと呼ぶことが一般的です。そのような分野ではクラスターを見つける問題はクラスタリングと呼ばれます。データがネットワークで表現できるときのクラスタリングの手法の一つとしてコミュンティ解析があると考えてることができます。つまり、このようになります。

f:id:muskat:20180502111814p:plain

 クラスタリングの応用は機械学習の分野で知られています。一番利用シーンが多いのが機械学習の教師データ作成のときです。機械学習によってデータをあるグループに分類したいが、学習のためのグループ分けされた正解データがないときに、クラスタリングでグループ分けします。そうすることで、機械学習する前の教師データの加工に使用することができます。データの一点がノードとして、そのデータ間の相関をリンクとすることでネットワークを作成しコミュニティを検出することでクラスタリングしたことになります。クラスタリングではデータを類似性に基づいてグループわけしますが、その分け方にはデータ間の相関の強さなどが直接は反映されていないことが多いです。この点に関してコミュニティ解析はデータ間の相関に一番重きをおいてデータを分類することができます。データ自体の静的な性質によりグループ分けするクラスタリングと相関などの動的な性質によってグループ分けするコミュニティ解析はデータ分析や機械学習の分野で近年ますます重要視されているツールです。中でもコミュニティ解析は複雑さゆえに発展が遅れてきましたが、近年になって研究が活発化してきました。