たきこみの丸太

暇だった。

ホロライブファン相関関係図の計算

f:id:takikomiprogramming:20200810221422p:plain


偉大なる先人様

murabitoleg.com


チャンネルごとに重複のないスパチャアカウント一覧を作成する。
SELECT
    DISTINCT cc.author_external_channel_id
FROM mv_chat_paids mv
INNER JOIN chat_comments cc ON mv.id = cc.id
INNER JOIN channels ch ON mv.channel_id = ch.id
WHERE
    mv.video_uploaded_date >= '2020-07-01 00:00:00'
    AND mv.video_uploaded_date <= '2020-07-31 23:59:59'
    AND ch.author_name = @author_name


組み合わせ一覧を作成する。

集計対象チャンネル数C2 の組み合わせ一覧を作成する。
28C2 = 28 × 27 ÷ 2 = 378 通り


組み合わせ毎のアカウント一覧類似度を計算する。

参考にさせていただいたサイト様
mieruca-ai.com
類似度係数として何を使用するのが良いのか、知識が無かったので、3つの指標を計算して降順ソートしてプロットしてみる。
f:id:takikomiprogramming:20200811100403p:plain
f:id:takikomiprogramming:20200811100408p:plain
f:id:takikomiprogramming:20200811100412p:plain
どれも同じ様な形なので、どれ使っても問題ない事を確認。
今回はJaccard係数を使用してみる。
( A ∩ B ) ÷ ( A ∪ B ) = Jaccard係数
このJaccard係数0.06未満を脚切り対象とする。脚切りラインも何らかの計算で出すべきだが、グラフの見た目で適当に決定。(標準偏差に従って無い集合って偏差値出して良いんだっけ?微分して変化率から出すのが正しいのかな?)
で、計算結果をエクセル出力
f:id:takikomiprogramming:20200811102522p:plain

出力パラメータの計算

Jaccard係数から線の太さと色の濃さを計算する。
単純に最小から最大までを10分割して割り振ってみた。
f:id:takikomiprogramming:20200811103309p:plain

グラフ出力

作ったデータを良い感じにグラフ作ってくれそうなライブラリに突っ込む。
js.cytoscape.org

完成。
takikomiprogramming.hateblo.jp


Javascriptなので、はてなブログ上でも動く。
takikomiprogramming.hateblo.jp