Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pythonによるネットワーク分析の基礎とコミュニティサクセスへの応用

Higuchi kokoro
September 26, 2024
770

 Pythonによるネットワーク分析の基礎とコミュニティサクセスへの応用

Higuchi kokoro

September 26, 2024
Tweet

More Decks by Higuchi kokoro

Transcript

  1. 2024 | © Commune Inc. All rights reserved Kokoro Higuchi

    / PyCon JP 2024 2024/09/27 Pythonによるネットワーク分析の基礎と コミュニティサクセスへの応 用
  2. ©2023 Wantedly, Inc. 2024 | © Commune Inc. All rights

    reserved ネットワーク分析の基礎 コミュニティサクセスの ためのネットワーク分析 • ネットワーク分析の基本概念やアプローチの紹介 • PythonのNetworkXライブラリを 用 いたネットワークの操作 • 身 近なデータをネットワーク分析 用 のデータセットにする 方 法 • 成 長 しているコミュニティの要因分析 • コミュニティサクセスへの 示 唆 本 日 のお話しすること
  3. ©2023 Wantedly, Inc. 2024 | © Commune Inc. All rights

    reserved ネットワーク分析の基礎がわかった!と思ってもらう 本 日 の発表のゴール🏁 コミュニティ×ネットワーク分析って 面白 そう!と 思ってもらう
  4. 2024 | © Commune Inc. All rights reserved 樋 口

    心 (X: @zerebom_ 3 ) • Communeのデータサイエンティスト • 2024/01に 入 社 • Product & Dataチームに所属 • プロダクトのデータ分析やLLMやMLを 用 いた 新規機能 ・ プロダクトの開発 • 前職では推薦システムの改善 ・ 開発など 自 己 紹介 ↑資料はXに掲載
  5. 2024 | © Commune Inc. All rights reserved Part1 •

    サービスの紹介 背景: Communeについて アジェンダ • ネットワーク分析の基本概念 • ネットワーク分析のアプローチの紹介 ネットワーク分析の基礎 Part2 Part3 • NetworkXの基本操作の紹介 Pythonでのネットワークの操作 Part4 • 成 長 するコミュニティの特徴分析 コミュニティサクセスのための ネットワーク分析 Part5 • slackのスレッドデータの変換 ネットワーク分析 用 の データセットの作成
  6. 2024 | © Commune Inc. All rights reserved 食 品サービス

    ファンが商品に対して感想を 投稿したり製品の提案をする ITサービス ユーザーが機能の活 用 方 法を シェアしたり疑問解決する コミュニティで得られる事業インパクトの例 教育サービス ユーザー同 士 が励まし合い 学習モチベーションを上がる
  7. 2024 | © Commune Inc. All rights reserved 食 品サービス

    ユーザーの要望 ・ 感想が沢 山 集まる ITサービス 活 用 方 法や疑問点のシェアで サポート 工 数が減る コミューンでネットワーク分析するモチベーション 教育サービス 学習モチベーションの向上で 継続率が改善する コミュニティが正しく盛り上がるほど、事業成 長 につながる コミュニティで特に 大 事な、 人 のコミュニケーション(ネットワーク)から、 盛り上がるコミュニティの共通点を探したい!
  8. 2024 | © Commune Inc. All rights reserved Part1 •

    サービスの紹介 背景: Communeについて アジェンダ • ネットワーク分析の基本概念 • ネットワーク分析のアプローチの紹介 • 実世界での活 用 事例 ネットワーク分析の基礎 Part2 Part3 • NetworkXの基本操作の紹介 Pythonでのネットワークの操作 Part4 • 成 長 するコミュニティの特徴分析 コミュニティサクセスのための ネットワーク分析 Part5 • slackのスレッドデータの変換 ネットワーク分析 用 の データセットの作成
  9. 2024 | © Commune Inc. All rights reserved ネットワークを構成している要素 頂点(ノード

    ・ Node) • ネットワーク内の要素を表す • 分析対象の「もの」「 人 」に相当 • ex) SNSのユーザー 辺(エッジ ・ Edge) • 頂点間のつながりや関係を表す • 頂点と頂点を結ぶ線 • ex)SNSのフォロー関係
  10. 2024 | © Commune Inc. All rights reserved SNSユーザーのクラスタリング ネットワーク分析の例

    通信の最短経路の算出 https://networkx.org/nx-guides/content/algorithms/ fl ow/dinitz_alg.html https://networkx.org/nx-guides/content/exploratory_notebooks/ facebook_notebook.html
  11. 2024 | © Commune Inc. All rights reserved 森(全体俯瞰) •

    ネットワーク可視化や、 クラスタ係数など ネットワーク全体の 特徴量の計算 ネットワークのどこに着 目 するかを変えることで、 さまざまな分析が可能 ネットワーク分析にはどんなアプローチがあるのか? 林(中間レベル) • クラスタリングや経路上の ボトルネック特定 • ネットワーク内の特徴と なる経路やグループの発 見 木 (頂点や辺の特徴) • 将来の友 人 関係の予測や ネットワークの中 心人 物の 同定など
  12. 2024 | © Commune Inc. All rights reserved ネットワークの各要素に着 目

    した分析( 木 ) • ネットワークで中 心 的な 人 物の特定 • ある頂点と頂点までの最短経路の計算 • 頂点間のつながりや相互作 用 の調査
  13. 2024 | © Commune Inc. All rights reserved ネットワークのある部分に着 目

    した分析(林) • ネットワークを複数のクラスターに分割 • ブリッジやハブなど、特定の役割を果たす構造の発 見 • 情報伝達でボトルネックになっている経路の発 見
  14. 2024 | © Commune Inc. All rights reserved ネットワークの全体俯瞰(森) •

    ネットワーク全体の可視化 • ネットワーク全体がどれくらい密あるいは疎に連結か • ネットワーク全体に共通する構造の識別
  15. 2024 | © Commune Inc. All rights reserved ネットワーク分析はどんなところで便利か? 相互作

    用 や構造を分析するのに向いている 特徴 表データの分析 ネットワーク分析 データ構造 行 と列で構成された表 頂点と辺で構成されたグラフ 主な焦点 個々のエンティティとその属性 エンティティ間の関係と構造 適した問題 個々の要素の特性や傾向を理解する 構造や相互作 用 を理解し、関係性や流れを分析する データの相互依存性 低い(独 立 した観測) 高 い(相互接続された観測)
  16. 2024 | © Commune Inc. All rights reserved ネットワーク分析の基本概念 G

    = (V, E) グラフ: V: 頂点の集合, E: 辺の集合 deg(v) = |{u ∈ V|(u, v) ∈ E}| 次数: ある頂点から隣接している頂点の数 グラフと次数 次数: 2 次数: 3
  17. 2024 | © Commune Inc. All rights reserved ネットワーク分析の基本概念 D

    = 2|E| |V|(|V| − 1) 密度の低いグラフ 密度の 高 いグラフ(密度1) 密度: 頂点同 士 がどれくらい隣接しているか[0,1]
  18. 2024 | © Commune Inc. All rights reserved ネットワーク分析の基本概念 クラスター係数の

    高 いグラフ クラスター係数の低いグラフ クラスター係数:あるノードが近傍のノードとどれくらい密接に結びついているか
  19. 2024 | © Commune Inc. All rights reserved ネットワーク分析の基本概念 頂点の

    大 きさ = 媒介中 心 性の 大 きさとしたグラフ 媒介中 心 性: CB (v) = ∑ s≠v≠t σst (v) σst σst : 頂点s→tへの最短経路 σst (v): vを通る頂点s→tへの最短経路 中 心 性: 各頂点がグラフ内でどれくらい中 心 的な存在か
  20. 2024 | © Commune Inc. All rights reserved 更に詳しく学びたい 方

    は… 下記の書籍がおすすめ! 複雑ネットワーク―基礎から応 用 まで 増 田 直紀 (著), 今野 紀雄 (著) https://amzn.asia/d/ 0 gJ 4 Sso Pythonで学ぶネットワーク分析: ColaboratoryとNetworkXを使った実践 入門 村 田 剛志 (著) https://amzn.asia/ 0 QWYd 5 R
  21. 2024 | © Commune Inc. All rights reserved Part1 •

    サービスの紹介 背景: Communeについて アジェンダ • ネットワーク分析の基本概念 • ネットワーク分析のアプローチの紹介 ネットワーク分析の基礎 Part2 Part3 • NetworkXの基本操作の紹介 Pythonでのネットワークの操作 Part4 • 成 長 するコミュニティの特徴分析 コミュニティサクセスのための ネットワーク分析 Part5 • slackのスレッドデータの変換 ネットワーク分析 用 の データセットの作成
  22. 2024 | © Commune Inc. All rights reserved NetworkX 複雑なネットワーク構造の作成・操作

    ・ 分析のためのPythonライブラリ • 様々な種類のグラフの作成/分析/可視化 が可能 • NumPy、SciPyなどのライブラリとの連携も容易 https://github.com/networkx/networkx
  23. 2024 | © Commune Inc. All rights reserved ネットワークの作成と可視化 •

    頂点に要素を 足 すことや、辺に重みづけることもできる Graphオブジェクトに頂点や辺を登録する
  24. 2024 | © Commune Inc. All rights reserved ネットワークの分析 ・

    統計量の算出 頂点と辺を登録したネットワークに対してメソッドを呼び出す • グラフ内の頂点 ・ 辺の数 ・ 最短経路などを簡単に算出できる
  25. 2024 | © Commune Inc. All rights reserved 更に詳しく学びたい 方

    は… 公式のチュートリアル”nx-guides”がおすすめ! • ネットワーク分析の背景知識から 丁寧に掘り下げて説明 • Facebookのデータセットを活 用 した 実践的なチュートリアルも収録 https://networkx.org/nx-guides/index.html
  26. 2024 | © Commune Inc. All rights reserved Part1 •

    サービスの紹介 背景: Communeについて アジェンダ • ネットワーク分析の基本概念 • ネットワーク分析のアプローチの紹介 ネットワーク分析の基礎 Part2 Part3 • NetworkXの基本操作の紹介 Pythonでのネットワークの操作 Part4 • 成 長 するコミュニティの特徴分析 コミュニティサクセスのための ネットワーク分析 Part5 • slackのスレッドデータの変換 ネットワーク分析 用 の データセットの作成
  27. 2024 | © Commune Inc. All rights reserved (再掲)ネットワーク分析はどんなところで便利か? 相互作

    用 や構造を分析するのに向いている 特徴 表データの分析 ネットワーク分析 データ構造 行 と列で構成された表 頂点と辺で構成されたグラフ 主な焦点 個々のエンティティとその属性 エンティティ間の関係と構造 適した問題 個々の要素の特性や傾向を理解する 構造や相互作 用 を理解し、関係性や流れを分析する データの相互依存性 低い(独 立 した観測) 高 い(相互接続された観測)
  28. 2024 | © Commune Inc. All rights reserved ネットワーク分析でわかるコミュニティの状況 コミュニティは

    人 を頂点、関係性を辺としたネットワークと 見 なせる • インフルエンサーは誰か?(ネットワークの中 心 となる頂点の抽出) • どの 人 たち同 士 が仲が良いのか? (ネットワーク内のサブクラスターの検出) • どんな 風 に情報が流通しているのか?(ネットワークの可視化)
  29. 2024 | © Commune Inc. All rights reserved 今回の問い: 成

    長 / 停滞するコミュニティのネットワークの特徴はなにか? 成 長 するコミュニティの特徴を特定し、成 長 に再現性を持たせたい 定性的な社内の知 見 に基づく仮説 • 立 ち上げ初期に 大 量の 人 を呼んでしまうと失敗する • 情報伝達がハブ型からメッシュ型に徐々に変形していくとうまくいく • ユーザー同 士 の交流があることで、強固なコミュニティになっていく
  30. 2024 | © Commune Inc. All rights reserved コミューンにおけるネットワーク 様々なオンラインコミュニケーションからネットワークは定義出来る

    • ユーザー同 士 のフォロー機能 • DMの送信 • 投稿に対するいいね ・ リアクション • 投稿に対するコメント
  31. 2024 | © Commune Inc. All rights reserved 今回はコメントをソースとしてネットワークを構築して分析する データ量が多く、関係性をよく表しているコメントを採

    用 • ユーザー同 士 のフォロー機能 • DMの送信 • 投稿に対するいいね ・ リアクション • 投稿に対するコメント
  32. 2024 | © Commune Inc. All rights reserved 今回の実験で使うネットワークの定義 コメントのやりとりをネットワークに変換

    • 投稿にコメントしたとき、投稿者とコメントした 人 の間にエッジを張る ◦ コメント回数をエッジの重みとする ◦ 簡単にするために無向グラフとして定義する ◦ のちの分析のために管理者とユーザーを分ける
  33. 2024 | © Commune Inc. All rights reserved 実験に 用

    いるネットワークの 母 集団 ユーザー数の増加量から成 長 / 停滞コミュニティを定義する ◦ コミュニティ開設からユーザー数の増加が特に多い ・ 少ない コミュニティをピックアップし、成 長 / 停滞グループ に分割する ◦ ( = 週ごとのユーザー数を線形回帰し、傾きの値が特に 大 きい ・小 さいコミュニティ) ◦ コミュニティ開設から1 - 12ヶ 月 のデータを利 用 ◦ 開設から12ヶ 月 未満 or コメントが極端に多い ・ 少ないコミュニティは除外 ◦ → 両グループ20コミュニティ前後
  34. 2024 | © Commune Inc. All rights reserved 実験に 用

    いるネットワークの 母 集団 月 ごとのユーザー数の増加量から成 長 / 停滞コミュニティを定義する 経過 月 数 経過 月 数 月 次ユーザ数 月 次ユーザ数 成 長 コミュニティ 停滞コミュニティ
  35. 2024 | © Commune Inc. All rights reserved 実験1: 月

    ごとのネットワークの可視化 ネットワークの形から、成 長 / 停滞の原因を探る ◦ 各コミュニティの、開始n ~ n+ 1 ヶ 月 の間のコメントで作られた ネットワークの形を時系列に確認する ◦ 管理者を 赤 、ユーザーを 青 と識別可能にする ◦ 2者間のコメント数が多いほど辺を太くする
  36. 2024 | © Commune Inc. All rights reserved 実験1: 月

    ごとのネットワークの可視化の実装 ネットワーク 可視化 方 法を定義 # エッジの 大 きさを正規化するための関数
  37. 2024 | © Commune Inc. All rights reserved 実験1: 月

    ごとのネットワークの可視化の実装 ネットワークを 時系列に可視化
  38. 2024 | © Commune Inc. All rights reserved 成 長

    ・ 停滞コミュニティのネットワーク構造の差違 コメントの量的な差だけでなく、ネットワーク形状にも差違が存在する 特徴 停滞コミュニティ 成 長 コミュニティ ネットワークの構造 特定ユーザーを中 心 としたハブ型 全体的なコミュニケーションがあるメッシュ型 ユーザー同 士 の交流 少ない 多い 管理者とユーザーの 配置 管理者が中 心 的 ユーザー ・ 管理者どちらも中 心 にくることがある
  39. 2024 | © Commune Inc. All rights reserved 実験2: ネットワークごとの統計量の算出

    各コミュニティの可視化で得られた仮説をグループ全体でいえるのか確認する ◦ コミュニティごとに1年間のコメントからネットワーク統計量を計算する ◦ 成 長 / 停滞コミュニティごとに統計量の分布を確認する ◦ ネットワーク可視化の数サンプルで得られた仮説が、両グループ全体に 言 えることなのか確認する
  40. 2024 | © Commune Inc. All rights reserved 実験2-1: 成

    長 コミュニティの 方 がユーザー同 士 の交流が多い? ユーザー同 士 の交流の多さを、クラスター係数の平均値で算出する クラスター係数: あるノードがその近傍のノードとどれくらい密接に結びついているか クラスター係数 大 クラスター係数 小
  41. 2024 | © Commune Inc. All rights reserved 実験2-1: 成

    長 コミュニティの 方 がユーザー同 士 の交流が多い? 成 長 コミュニティの 方 がクラスター係数の平均値が 高 い 成 長 コミュニティの 方 がクラスター係数の平均値が 高 い つまり成 長 コミュニティはあるユーザーの知 人 同 士 が知 人 であるような、ユーザー間の交流が多いコミュニティ の 方 が多い 成 長 停滞
  42. 2024 | © Commune Inc. All rights reserved 実験2-2: 成

    長 コミュニティはユーザーが中 心 的な位置にいる? 管理者の中 心 度合いを次数の割合と、媒介中 心 性の平均値で確認する 媒介中 心 性:あるノードが他のノード間の最短経路に現れる頻度 → あるノードが他のノード間の情報の流れをどれだけ 支 えているかを表す 次数: ある頂点から隣接している頂点の数 deg(v) = |{u ∈ V|(u, v) ∈ E}|
  43. 2024 | © Commune Inc. All rights reserved 実験2-2: 成

    長 コミュニティはユーザーが中 心 的な位置にいる? 成 長 コミュニティのほうが管理者の次数割合は 小 さく、媒介中 心 性も低い 管理者の次数割合は 小 さく、 媒介中 心 性も低い つまり成 長 コミュニティはユーザーが コミュニケーションの中 心 に存在する コミュニティの 方 が多い ※ただし、両郡にユーザ数の差がある点に考慮 する必要がある 停滞 停滞 成 長 成 長
  44. 2024 | © Commune Inc. All rights reserved コミュニティサクセスへの 示

    唆 ネットワーク分析で得られた成 長 コミュニティの特徴を具体的な施策に落とす ◦ クラスター係数が 高 い → ユーザー同 士 が交流できるように体験設計する ◦ コアユーザーに依頼して、新規ユーザーに話しかけて貰う ◦ オフラインイベントでユーザー同 士 の交流を図る
  45. 2024 | © Commune Inc. All rights reserved コミュニティサクセスへの 示

    唆 ネットワーク分析で得られた成 長 コミュニティの特徴を具体的な施策に落とす ◦ ユーザーが中 心 的な位置にいる → 管理者だけがコメントや投稿をしないようにする ◦ 管理者 自身 だけでなく、コアユーザーに投稿を促すような施策を打つ ◦ ただし、ユーザーに任せきりにもせず、運営とコアメンバーで役割分担 する
  46. 2024 | © Commune Inc. All rights reserved Part1 •

    サービスの紹介 背景: Communeについて アジェンダ • ネットワーク分析の基本概念 • ネットワーク分析のアプローチの紹介 ネットワーク分析の基礎 Part2 Part3 • NetworkXの基本操作の紹介 Pythonでのネットワークの操作 Part4 • 成 長 するコミュニティの特徴分析 コミュニティサクセスのための ネットワーク分析 Part5 • slackのスレッドデータの変換 ネットワーク分析 用 の データセットの作成
  47. 2024 | © Commune Inc. All rights reserved ネットワーク分析 用

    のデータの作成 方 法の紹介 身 近なデータを使って、ネットワーク分析 用 のデータセットを作る ◦ コミュニティ運営をしていなくても、 身 近なデータセットで ネットワーク分析はできる ◦ メールやslack、discordのやりとりは 人 と関係性があるので、 ネットワークといえる ◦ 今回はslackのスレッドデータをテーマに紹介
  48. 2024 | © Commune Inc. All rights reserved ネットワーク分析 用

    のデータを作成 手 順 slackのやりとりを無向重みありグラフに変換する
  49. 2024 | © Commune Inc. All rights reserved 例: slackからネットワーク分析

    用 のデータを作成する https://gist.github.com/zerebom/ 07 2 b 64 cbe 2 b 2 7 cbfcd 1 47 a 5 e 8 fb 3 4 c 99 1 . slack sdkからメッセージデータを取得し、csvに保存する
  50. 2024 | © Commune Inc. All rights reserved slackからネットワーク分析 用

    のデータを作成する 2. 辺リストのDataFrameに変換する slack͕ग़ྗͨ͠ܗࣜͷ DataFrame ลϦετͷDataFrame • 1 行 1メッセージ • スレッドでの返信の場合 thread_tsが親のts • 1 行 が投稿者と返信者のペア • 各ペアのやりとり回数が列に 格納されている PolarsͳͲͰม׵
  51. 2024 | © Commune Inc. All rights reserved slackからネットワーク分析 用

    のデータを作成する 3 . DataFrameからNetworkXのグラフオブジェクトを作成する 辺リストのDataFrameをNetworkXのadd_edges_fromメソッドに渡すことで、 今回の実験で利 用 した無向重み付きグラフが完成する
  52. 2024 | © Commune Inc. All rights reserved まとめ •

    ネットワーク分析の基礎を解説した • 物事の関係を頂点と辺で記述するデータ構造を使った分析 • 相互作 用 や構造を分析するのに向いている • コミュニティサクセスのためのネットワーク分析を 行 った • 成 長 コミュニティはメッシュ型な傾向にある • 成 長 コミュニティはユーザー間の交流が盛んに 行 われてる傾向にある • メッセージ形式のデータをネットワーク分析に利 用 出来る変換処理を説明した • 1 行 が頂点のペアとなっている辺リストにすれば、NetworkXに格納できる ↑Communeの データサイエンティストに 興味を持った 方 がいたら是 非 !