[機械学習] クラスタリングにおけるコサイン類似度に関する性質の証明

bayonやCLUTOが爆速な理由 - download_takeshi’s diaryを読んで、すぐには成り立つかどうか分からなかったので証明してみた。

上の記事で述べられていることはクラスタ中のベクトルとその中心ベクトルのコサイン類似度の和と、クラスタ中のベクトルを全て足したベクトルのノルムが一致するというである。
ただしここでクラスタ中の要素ベクトルはすべて大きさ1の規格化されたベクトルであるとする。

証明

クラスタ内に含まれるベクトルをx_1,\dots,x_N とする。
このとき全ベクトルを足しこんだ複合ベクトルを
 X_s = \sum_i x_i
とする。またこのクラスタのセントロイドは
 C   = \frac{1}{N} \sum_i x_i = \frac{X_s}{N}
となる。このときセントロイドと各ベクトルx_iとのコサイン類似度は
[tex: s_i = \frac{}{||C|| ||x_i||} = \frac{}{||{C}||}]
となる。ここで ||x_i|| = 1と正規化されていることを用いた。この類似度の合計は
[tex: S = \sum_i s_i = \frac{1}{||C||} \sum_i = \frac{1}{||C||} ]
となり、ここで X_s,Cの定義より
[tex: S = \frac{1}{||C||} = \frac{N}{||X_s||} <\frac{1}{N} X_s,X_s> = \frac{1}{||X_s||} = ||X_s||]
となり、複合ベクトルのノルムがコサイン類似度の合計に等しいことが示せた (Q.E.D.)。