LT:村田 剛志/Google Colaboratory によるネットワーク分析・可視化

Data Visualization Japan Meetup 2020(2020年12月28・29日開催)における、村田 剛志さん(東京工業大学)のLTです。


東京工業大学の村田と申します。本日は「Google Colaboratory によるネットワーク分析・可視化」というタイトルでお話しさせていただきます。

この Data Visualization Japan Meetup には過去3回ほど参加させていただいて、非常に興味深く拝聴しておりました。そのような場でお話しさせていただくのは大変光栄に思っております。

自己紹介

東京工業大学で人工知能、主にネットワークの分析や処理に関する研究をしております。こういう本も書いております。

なぜネットワークを分析するのか

そもそもネットワーク構造・グラフ構造というのは、世の中のいろいろな種類のものが表現できるものです。

そのネットワークを分析することによって——

  • 中心的な人物を見つける
  • 将来どういうつながりができるかを予測する
  • ネットワークの中の派閥と、派閥間の関係を捉える
  • 口コミの情報がどう伝播していくか/していかないか
  • 最近で言えば、感染症がどう拡大していくか

こうしたことを理解したり制御したりする上で、ネットワーク構造を分析するのは価値があると思って研究を続けております。

Jupyter Notebook と Google Colaboratory

Jupyter Notebook については先ほどのご発表でもありましたので皆さんご存知かと思いますが、ブラウザ上でコードやコメントを書きながら対話的に処理していくプラットフォームで、機械学習やデータサイエンスにおいていろいろ使われています。

その Jupyter Notebook 環境を簡単に使う方法として Google Colaboratory があります。

  • Google のクラウド環境で動作する無料の Jupyter Notebook 環境
  • Google アカウントさえあれば、Python コードをブラウザ上で対話的に実行できる
  • コードも計算結果も Google ドライブを介して共有できる

「Google Colaboratory」で検索していただければ、どういうものかすぐ分かるかと思います。

実際にどう使っているか

この環境を使って実際にネットワーク分析をどうやるか。

昨年、人工知能学会の「AIツール入門」というところで簡単なチュートリアルをやりました。だいたい50人くらい集まって、分析に関する入門のお話をしました。スライドと Python コードもサイトに公開してあります。

そういうものをベースに、本学の大学院の講義もやっています。

  • ネットワークを分析してコミュニティを見つけて色付けする
  • いろいろな形の人工的なネットワークを生成して描画する
  • その次数分布をプロットする

こうしたプログラムを組む、ということを「複雑ネットワーク」という大学院の講義で学生相手にやったりしております。

感染症のネットワークモデル

最近の話題として、COVID-19 で皆さん大きな影響を受けているかと思います。

病気の感染をネットワーク上でモデル化するという話は、割と昔からやられているトピックです。モデル化する上では4つの要因があります。

  1. 人間同士がどういうネットワークでつながっているか
  2. 病気の感染確率がどれくらいか
  3. 感染者数
  4. 回復する確率、あるいは亡くなってしまう確率

この4つのパラメータからネットワークをモデル化することができます。非常に荒っぽいモデルではありますが。

そういうモデルで、たとえば——

  • S:感染していない人の集合(Susceptible)
  • I:感染した人の集合(Infected)
  • R:治った人の集合(Recovered)

とする SIR モデルが、これも割と古くから提案されています。

パラメータを設定して、S・I・R の人数が時間とともにどう変化していくかをプロットするライブラリがあります。Python 上で感染症のシミュレーションをやるライブラリとして NDlib というものがあります。

入力は、先ほど申し上げたようにネットワーク、最初の感染者の数、感染する確率、治る確率。それによって時間変化がプロットされる、というものです。

これを実際に大学院の授業でやっていて、Colaboratory 上でコードにして、いろいろパラメータを動かすことでグラフの形が変わっていくという授業をしたりしております。

書籍と解説記事

いま申し上げたような内容を、昨年『Pythonで学ぶネットワーク分析』という本にまとめて出版しました。ネットワークに割と特化した話ですが、ご興味のある方はお手に取っていただけたら幸いです。

また最近では、COVID-19 に対してネットワークサイエンスがどう貢献できるかという話が真面目な問題としてあります。NatureScience といった科学雑誌に、もっと複雑なモデルを提案する論文がいろいろ投稿されています。

そうしたものをいくつかかいつまんで紹介した**解説記事を、今年の人工知能学会誌に出しました。**ご興味のある方はオンラインで購入いただいてもいいのですが、私までメールをいただければ、再配布をしないという条件のもとでお送りします。

以上で発表を終わりにしたいと思います。どうもありがとうございました。

Built with Hugo
Theme Stack designed by Jimmy