蛇ノ目の記

技術のことも。そうでないことも。

みんなのPython勉強会#32に行った話

みんなのPython勉強会#32に行ってきた。

startpython.connpass.com

今回の内容は

  • Kubernetes

  • Kaggle

  • Network Embedding

「Kubernetesのエコシステムとその影響」

Dockerも触ったことないインフラ面弱すぎマンとしてはKubernetesの話のレベルがかなり高かった……。あ、KubernetesってK8Sって略すらしいっすよ(唯一、把握できたこと

「Road to kaggle master」

機械学習コンペプラットフォームであるKaggleの話。 めざせKaggleマスター。コンペ上位10%に入るともらえるメダルが集まるとマスターになれる仕組みみたい。賞金付きのコンペもあるので興味湧いてくる。

  • 初級編

  • 中級編

  • 上級編

に分かれていて聞きやすかった。

  • 初級編

Kaggleに入門したらまずはTitanicの生存者予測のコンペをやるのがよさそう。他のユーザのコードが公開されているので、チュートリアルして参考にすると捗りそう。

初級者がハマるのはXgboostというアルゴリズム。これは高い精度が出るので、意味もわからず使ってしまうという罠があるみたい。

  • 中級編

中級者の課題は、特徴量の抽出とバリデーションセットの構築。

コンペで使うデータセットから以下に特徴量を抽出するか。Jupyter Notebookで可視化して効いてきそうな値を探したりする。

バリデーションセットは特に時系列データの際に注意が必要。 学習データ・バリデーションセットで未来と過去を分ける工夫をしたりする。

  • 上級編

上級まで来ると、機械学習モデルをコンペの評価指標へ最適化してさらに高いスコアを目指す。そのためにはアルゴリズムの理解・ハイパーパラメータの調節が必要になってくる。

「いまNetwork embeddingが熱い!」

複雑ネットワーク科学の話。 学生時代に少しだけ複雑ネットワークに絡むことをやっていたので熱が入る。

WWWの構造や交友関係、細胞の代謝ネットワークまでが複雑ネットワークという構造になっている。

ネットワークが表現する対象をノード、繋がりをエッジと呼ぶ。WWWならWebサイトがノードでリンクがエッジ。

細胞から人間関係、インターネットまでが同じ構造になっていると考えるとロマンがすごい。

複雑ネットワークの性質として2つ挙げる。

  • 膨大なリンクを持つ極わずかなノード(ハブ)・大してリンクが持ってない大多数のノード

  • ネットワークの規模によらず全てのノード同士は数ステップで繋がっている

6次の隔たり」という例がある。世界中のどの人同士も約6人の知り合いを介して繋がっている、というもの。日本でPythonエンジニアやってる人とサバンナで携帯使ってるマサイ族の人が6人で繋がるようなことになる。実際に繋がるかは置いておいて、これを可能にするのが膨大なリンクを持つノードと理解している。何千何百の知り合いがいる人と繋がっていれば、その先にいる人が地球の裏側にいることも全然あり得るだろう。それを繰り返すと、日本のPythonエンジニアからマサイ族に到達する。

ハブの役割に着目して伝染病の感染をモデル化するといった応用事例がある。

複雑ネットワークにはBetweeness Centralityという値がある。和訳すると媒介中心性。辻さんのスライドの引用が以下。

自分以外のノード間の接続に、自分がどれくらいの影響度合いで関わっているかを表現

この値を使うと、ネットワーク内になるコミュニティ検出ができる。Twitterでいうところの〜クラスタ。この値が高いノードはコミュニティ間の橋渡し役になっていると考えられ、そこを基準にすればネットワークからコミュニティ構造を探し出せる。

複雑ネットワークの考えをWeb開発に応用すると、「この商品を買った人はこれも買っています」「あなたのフォロワーはこの人をフォローしています」ができるようになる。購入履歴やフォロー状況をベクトル化して、ネットワーク構造をつくる。これがNetwork Embedding。

実際のECサイトSNSのノードはあまりに膨大。しかし購入した商品やフォローしているユーザはそのごく一部で、ベクトル化したときに次元がやたら大きいだけでほとんどの値が0になる。コンピュータに計算させるときにもつらいので、ぐっと縮約する。そこでDeep Learningが使われているらしい。Deep Autoencoderという。そして縮約したデータを機械学習に使うとか。

複雑ネットワークを応用することで、実世界の様々な物事を機械学習アルゴリズムで扱うことができそう(小並感

複雑ネットワークの本としては、この分野の第一人者アルバート=ラズロ・バラバシによる「新ネットワーク思考」がわかりやすいし面白い。学術書ではなく科学読み物なのでハードルもそんなに高くないのでおすすめ。

LT

エディタで書いたMarkdown形式のスライドをGitで管理して公開までできるGitPitchの紹介と布教をするLTをやった。

GitPitch Presents: github/NaoY-2501/GitPitch-Slides