見出し画像

SQL分析データ準備と基礎統計#13:グラフデータと関連性

ソーシャルネットワークにおける誰と誰が友人(フォローしあう)関係かといったデータを扱う分析、またそのデータをグラフ分析、グラフデータと呼びます。折れ線グラフのグラフとは異なる意味で用いられ、ネットワーク分析、ネットワークデータとも呼ばれる分野です。このようなデータは、ソーシャルネットワークに限らず、電話会社における誰から誰に通話が発生したか、銀行で誰から誰にお金が振り込まれたかといったデータも意味合いは同じですし、人に限らず、Webサイトのページ間で、どのページからどのページにリンクが貼られているか、飛行機がどの空港からどの空港に飛んでいるかもテーマとなります。

このデータは大きく、以下のような要素で構成されます。合わせて電子メールデータに置き換えてデータを例示します:

  • ノード(点): 電子メールアドレス、電子メールユーザー

  • エッジ(線): 誰から誰にメールが送られたか

エッジには2パターンあります:

  • 有向(方向あり): メールが送られた方向を考慮

  • 無向(方向なし): 方向は無視し、誰と誰でやり取りがあったかのみを考慮

また、ノードとエッジにはそれぞれ属性/指標を持ち得ます。ノード属性/指標は各メールアドレスの属性/指標であり、エッジ属性はあるノードとあるノード特有の関係を表現する属性/指標です:

  • ノード属性/指標: 何人にメールを送ったか、何人から送られているか

  • エッジ属性/指標: 何回メールのやり取りをしたか、何文字分のメールが行き交ったか

これをテーブル上で表現する場合、2つのノードの組み合わせがエッジを示し、これにノード、エッジの属性が付加される形式となります。ノードは何度も出現します(電子メールユーザーAはユーザーBともユーザーCともやり取りする)。有向グラフの場合には片方が出発地(矢印を向けた方)、もう片方が目的地(矢印を向けられた方)です。

通常、エッジ(ノード間のやりとり)に意味があるデータは、この組み合わせで蓄積されているケースがほとんどだと思います。その場合は、これをベースにノード/エッジ指標を整理してあげることで、分析や可視化に利用可能なデータが出来上がります。以下は通話ネットワークを想定した例で、src0が元データに近い形で、エッジ指標として通話回数を計算しています。通話回数の多い少ないがエッジの重みづけを意味することになります。

src1とsrc2はグラフ分析の世界で次数(degree)と呼ばれるノード指標の計算を行っています。いくつのノードに対して矢印を向けているか(out-degree)、向けられているか(in-degree)をノードごとに計算しています。ソーシャルネットワークの世界ならin-degreeはフォロワー数を意味し、in-degreeが多いユーザーはインフルエンサーと呼ばれます。

SQL最後のセクションでは、各ノードのユニークとノード指標を横付けしてノードリストを作成しています。ここでは割愛しましたが、src0のnode_origとnode_destそれぞれに対してノード指標を結合し、単一の表を作成しても構いません。

///

#sql #teradata #analytics  

この記事が気に入ったらサポートをしてみませんか?