計れないものを計る!
2008.08.28
少し「集合知プログラミング」のネタかな。あの本の中で、
Tanimoto係数
という「2つの集合の類似度」を計る尺度を紹介してます。私これは知らなかった....調べてみるとバイオインフォマティクス関連でよく使われているもののようです。Tanimoto 係数のお姿はですね、
集合a と集合b があるとき、
T = N a∩b/ (Na + Nb - N a∩b)
ただし、N x は集合x の元の数
と計算して、2つの集合の類似度(全く違えば0)を得る尺度です。ですから、
Aさんが見た映画 = { 崖の上のポニョ, ダークナイト, デトロイトメタルシティ }
Bさんが見た映画 = { 崖の上のポニョ, スカイクロラ }
だった場合、Tanimoto 係数は
T = 1 / (3 + 2 - 1) = 0.25
と計算されるわけです....
まあ、「私が知らなかった」のは、こういう「定性的な状態を、数値の値に変換するための手段」というのが、実はいろいろとあるのが現実だからです。たとえば、情報理論でよく使われるハミング距離で考えば(ハミングも人名ですよ)、
| ポニョ | ダーク | デトロ | スカイ | ハムナ | |
| Aさん | 1 | 1 | 1 | 0 | 0 |
| Bさん | 1 | 0 | 0 | 1 | 0 |
| XOR | 0 | 1 | 1 | 1 | 0 |
「XOR」行の合計 3 が、Aさんの見た映画とBさんの見た映画の「差」であるハミング距離になるわけです(Tanimoto係数だと一致すればするほど値が大きくなりますが、ハミング距離だと一致すれば最小の0になります)。
その他にも、いろいろな「(集合の違いなど)定性的とも考えられる「状態」を、違いを表す数値にする」さまざまな尺度があります。まあ、ですから、ここらへん「どれを使うのか」というのは
場合によりけり...
というものです。こういう尺度を使うと、
差の値が2倍だから、中身の違いも「2倍違う」
なんて思うと大間違いなのが一般です。単に大小関係しか信用できないケースがほとんどです。ここらへん大きく見るといわゆる「ノンパラメトリック検定」と呼ばれる統計手法で、
母集団の分布に関する一切の仮定がない検定手法
の手法の一つなんですね。勿論いわゆる「連続な値を計れる数値」でやる検定で、しかも測定値が正規分布するものについて適用される、パラメトリック検定(平均や標準偏差に意味があるフツーの統計)と対応する手法です。勿論、
何でも適用できる、ということは、検定力(要するに「違い」を検出する力)はパラメトリック検定と比較して弱い
という、いわゆる「ノーフリーランチ定理」そのままな結果になるのも事実なんですけどね.....
まあ、一般にノンパラメトリック検定は計算量が多いものが多い傾向がありますから、実はコンピュータの恩恵をかなり強く受けているものです。以前少し紹介した「パーミュテーション検定」も、このノンパラメトリック検定の一つで、「すべてのありうべきデータの組み合わせ」を出しますから、手計算だとちょいとかなわないような計算量になります(一個一個は単純ですけどね)。
とはいえ、「あまりそのスジ以外では知られてないし、検定力も弱く頼りない...」ようにも思うかもしれませんが、いろいろ「プログラマの小技」として使える余地がかなりあるわけです....
たとえば、
コインの表・裏を投げて記録していたが、表が連続15回出てしまった。このコインの表裏が出る確率は1/2 であると言えるか?
という問題だと、ラン検定と呼ばれるノンパラメトリック検定手法を使って検定できたりするわけです(参考→相関のノンパラメトリックなど)。というように、検定技法というのも、今後のプログラマの教養知識として面白いのかもしれませんね....
投稿者 : 杉浦 こずえ | 投稿日時 : 2008.08.28 15:20
あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。





