興味深い現象

興味深い現象、言語化、備忘。

Adjusted Mutual Information

イントロダクション

クラスタリングの性能を評価する指標に、AMI (Adjusted Mutual Information)というものがある。Wikipediaに英語の記事はあったが、日本語で解説している記事を見つけられなかったのでここに日本語でまとめる。

結局のところ

結局のところ、AMIはARI(Adjusted Rand Index)と同じような補正をしている。すなわち、真のクラスタクラスタリングにより推定されたクラスタ間の相互情報量から、ランダム予測をした時の相互情報量の期待値を差し引くような補正をしている。

相互情報量

{N}個の要素からなる集合  {S=\{s_1,...,s_N\}} に対して、この  {R} 個への分割 {U=\{U_1,...,U_R\}} C個への分割 V=\{V_1,...V_C\}を考える。ここで考えているのはいわゆる堅いクラスタ、すなわち、

 { U_i \cap U_j = \emptyset = V_i \cap V_j}\, \, \, (i\not=j) \\
{\cup_{i=1}^R U_i = \cup_{j=1}^C V_j = S}

を満たすようなクラスタである。 このU,Vの情報はR×Cの行列Mを用いて

{

\begin{equation}
    n_{ij} = |U_i \cap V_j|
\end{equation}
}

として表せる。要素をランダムに選択した時、クラスタU_iの要素が選ばれる確率は

{\begin{equation}
    P_U(i) = \frac{|U_i|}{N}
\end{equation}
}

であり、分割U,Vのエントロピー

{
\begin{equation}
    H(U) = -\sum_{i=1}^R P_U(i)\log P_U(i)
\end{equation}
}
{
\begin{equation}
    H(V) = -\sum_{i=1}^C P_V(i)\log P_V(i)
\end{equation}
}

である。二つの分割U,Vの相互情報量

{
\begin{equation}
    MI(U,V) = \sum_{i=1}^R\sum_{j=1}^C P_{UV}(i,j)\log \frac{P_{UV}(i,j)}{P_U(i)P_V(j)}
\end{equation}
}

ここで、

{
\begin{equation}
    P_{UV}(i,j) = \frac{|U_i \cap V_j|}{N}
\end{equation}
}

ある分割の組U,Vが与えられている時の、相互情報量の期待値は

{
\begin{equation}
    \begin{split}
        E\{MI(U,V)\} &=\sum_{i=1}^R\sum_{j=1}^C \sum_{n_{ij}=(a_i+b_j-N)^+}^{\min(a_i,b_j)}\frac{n_{ij}}{N}\log\frac{N\cdot n_{ij}}{a_i b_j} \times \frac{\frac{a_i!}{n_{ij}!(a_i-n_{ij})!}\frac{(N-a_i)!}{(b_j-n_{ij})!(N-a_i-b_j-n_{ij})!}}{\frac{N!}{b_j!(N-b_j)!}}\\
        &= \sum_{i=1}^R\sum_{j=1}^C \sum_{n_{ij}=(a_i+b_j-N)^+}^{\min(a_i,b_j)}\frac{n_{ij}}{N}\log\frac{N\cdot n_{ij}}{a_i b_j}\times \frac{a_i!b_j!(N-a_i)!(N-b_j)!}{N!n_{ij}!(a_i-n_{ij})!(b_j-n_{ij})!(N-a_i-b_j-n_{ij})!}
    \end{split}
\end{equation}
}

ただし、

{
\begin{equation}
    (a_i+b_j-N)^+ = \max(1,a_i+b_j-N)
\end{equation}
}

これを用いて補正された相互情報量AMI(U,V)は

{
\begin{equation}
    AMI(U,V) = \frac{MI(U,V)-E\{MI(U,V)\}}{\max{H(U),H(V)}-E\{MI(U,V)\}}
\end{equation}
}

と表せる.

イシューの分解とストーリラインについて

安宅和人氏の著作である「イシューからはじめよ」を最近読んでいまして、とりわけ思い出せる所を備忘のために書き連ねようと思います。

  • イシューの分解について

    • 3Cとかwhere what howとか、分野ごとに分解の型は存在するから使おう。一方で型にはめようとしすぎると悪影響。
    • 分解するときにMECE(漏れなく、ダブりなく)は必須。
    • MECEでも分解の仕方で必要な解析や結論は変わる。そのためどのような分解をするべきか上流からの検討が欠かせない。
    • イシューの分解は段階によって果たす役割が違うが、最初から最後まで重要な役目を担いこれは生き物のように有機的な営みである。決して単なる機械的な操作ではない。序盤から、問題の明確化、吟味検証と解析の方向付け、最終的な結論、メッセージの構造形成というような流れになっている。
  • ストーリーライン

    • 2つタイプがある 支持する理由を多面的に述べるタイプと、空雨傘タイプ

守破離だーーー

ルベーグ積分.1

ルベーグ測度は、ここに詳細は書かないがある条件を満たす測度として一意に存在するものである。この条件が非常に簡潔であることは興味深いが、筆者はまだ各座標軸に対して垂直な超立方体でしか認識できていないので、その表現力は理解していない。

今回は、少なくともある座標軸に対して垂直な超平面のルベーグ測度が0となること、そして左開区間の境界、内点、触点の集合のルベーグ測度の関係について学習した。

とりあえず、境界については0、開区間か閉区間かは問わずにその形の雰囲気で一般的な体積を測れます、という感じなのだろうか。ルベーグ測度の条件とイメージは一致する。先に進みたい。

競馬統計で遊ぶ.1

今回は興味があった競馬の統計量を実際に手を動かして計算するために、pythonでコードを書きはじめた、という記事です。今回実装した機能は以下の2つです。

コードを書く際には以下の記事が参考になりました。

Pythonで競馬サイトWebスクレイピング - Qiita

競馬データスクレイピングの流れ - Qiita

競馬のデータ分析をプログラミング(スクレイピング)でやってみたお話 | ハイパー猫背

様々な解析をしたいところですが、csvのままだと処理が面倒なので、まずはSQLでデータベースを作る予定です。

今後考慮したい要素として、上から順にやっていく予定です。

  • レース情報(芝/ダート、コース形、距離、馬場、天候 )
  • 騎手と馬の組
  • 各馬レース結果の時系列評価
  • 馬の血統
  • その他

最後までお読みいただきありがとうございました。