Oops! It appears that you have disabled your Javascript. In order for you to see this page as it is meant to appear, we ask that you please re-enable your Javascript!
スポンサーリンク

「距離行列」とは?データ分析手法全般でよく使う「類似度」について学びたいあなたはこちらをどうぞ

スポンサーリンク
距離行列 クラスター分析 クラスタリング distance matrix 階層的クラスタリング アルゴリズム アルゴリズム
距離行列 クラスター分析 クラスタリング distance matrix 階層的クラスタリング アルゴリズム
スポンサーリンク
スポンサーリンク

前回は、クラスター分析のやり方について3つのポイントでまとめました↓

第7回『「クラスター分析」ってどうやるの?クラスター分析のやり方、具体的な3つのステップはこちらです

 

今回は、クラスター分析のやり方の2番目をさらに掘り下げようと思います。3番目のステップの下準備でもあります。

「クラスター分析」のやり方ってどうだったっけ?

まず、忘れてしまった方もおられるかもしれませんので、

クラスター分析の具体的なやり方について、サクッと復習しますね。

 

大きく3つのステップで行われます。

①、データを素性ベクトルに変換する

②、素性ベクトル同士の類似度を計算する

③、類似度に基づいてクラスター分析する

 

①については、本連載で数回にわたって詳しく説明してきました。(過去記事は下にあります)

今回は、②の素性ベクトルを使って、類似度を計算するところを詳しく説明したいと思います。

 

 

 

 

 

 

「類似度」は、どう求めるの?

 

今日は素性ベクトルは作ったから、次はどうするの?って話なんですが、

上で説明したように、「類似度を計算」するよ、ってことなんです。

 

これをもう少し具体的にみてみましょう。

 

素性ベクトルは、複数の数値の配列として表現されていました。

(そうだっけ?という方は、本連載の過去記事をご覧ください。下にリンクがございます^^)

 

素性ベクトルは、たとえば、

(5, 2, 3, 7)

といった感じです。(実際は要素4つでなくもっと膨大な数です)

 

素性ベクトルの類似度は、コサイン類似度を使うことにしました。

コサイン類似度は以下の計算式で求められます。

いま類似度を求めたい2つの素性ベクトルを、v1, v2とすると、

(コサイン類似度) = (v1・v2)/ { (v1の大きさ) * (v2の大きさ) }

として求めることとします。

 

ちなみに、内積はたとえば以下のように

(1, 3, 5) ・ (2, 4, 6) = 1*2 + 3*4 + 5*6 = 2 + 12 + 30 = 44

という感じで1つの値になります。

なので、2つの素性ベクトルのコサイン類似度は1つの値になる、ということがわかるかと思います。

 

スッキリ!

 

 

クラスター分析のやり方に戻りますが、

②、素性ベクトルから類似度を計算

では、上の説明の通りに内積の計算をすればオッケーです。

 

類似度を計算したら、次の③ステップのために、

類似度を整理して保存しておく

必要があるんです。

それが次のポイントになります。

 

 

 

 

 

 

クラスター分析で重要な「距離行列」とは?

距離行列ってなに?って思われた方もおられるかと思いますが、

まずは簡単な例から説明していきます。

 

たとえば、男女3人ずつの意見交換会があったとします。

意見交換が進むと、それぞれの男女は、互いに意見があう・あわないというのがわかってきますよね。

意見が合う度合いを相性と呼んでみると、相性は

男1と女1 男1と女2 男1と女3
男2と女1 男2と女2 男2と女3
男3と女1 男3と女2 男3と女3

 

という組合せがあり、上のように表にして書くことができます。

 

相性を数字で表せれば、たとえば

(

)

のように表すことができるわけです。

 

これ、よくみると「行列」になっています。

 

というわけで、男女の意見交換会の相性は、「行列」で記述できるわけです。

 

これと同じように、各素性ベクトル同士の「類似度」も「行列」で記述できます。

 

3つの素性ベクトルがあったとしたら、ベクトルをvで表すと、

v1とv1の類似度 v1とv2の類似度 v1とv3の類似度
v2とv1の類似度 v2とv2の類似度 v2とv3の類似度
v3とv1の類似度 v3とv2の類似度 v3とv3の類似度

のように行列で記述できるわけです。

 

じつは、類似度を行列で表したものを「距離行列」と呼んでいます。

(ちなみに距離行列は「類似度行列」とも呼ばれます。意味は同じですが、距離行列の方が一般的に使われる気がしています)

 

 

 

 

 

 

距離行列の成分をながめると気づく、2つの特徴とは?

3つの素性ベクトルがあったときに、その距離行列は、

v1とv1の類似度 v1とv2の類似度 v1とv3の類似度
v2とv1の類似度 v2とv2の類似度 v2とv3の類似度
v3とv1の類似度 v3とv2の類似度 v3とv3の類似度

のように書くことができました。

 

距離行列をみていると、あとでクラスター分析に使うときに知っておいたほうがいいポイントが2つあります。

 

1つめは、

  • v1とv1の類似度
  • v2とv2の類似度
  • v3とv3の類似度

の部分です。これは自分自身同士の内積です。

クラスター分析のステップ③で、似ているもの・似ていないものをグルーピングしますが、距離行列のこの部分は役に立たないことがわかるかと思います。

なので計算せずに最初からゼロにしても問題なさそうです。すると計算量も減りますよね。

ちなみに、これらは行列の対角線上の成分なので、

対角項」と呼ばれます。

 

 

2つめは、以下の類似度のペアをみてください。

  • v1とv2の類似度 と v2とv1の類似度
  • v1とv3の類似度 と v3とv1の類似度
  • v2とv3の類似度 と v3とv2の類似度

これらそれぞれのペアは、左右が同じものです。AさんとBさんの相性は、BさんとAさんの相性と同じなのと一緒です。

 

なので、わざわざ2回計算せずに、どっちか1回計算すれば済むことが分かります。

すると、計算がだいたい半分くらい減るわけです。

大量のデータを扱う場合に特に重要なことわかるかと思います。

 

ちなみに、これらのペアは、行列の対角項でない部分なので、「非対角項」と呼ばれます。

距離行列の非対角項は片方だけ計算すればいいわけです。

また、距離行列は対角項を軸にして対称になっていることがわかります。このような行列を「対称行列」と呼びます。

また、片方の非対角要素をゼロに置き換えた行列は、ゼロ以下の成分が三角形になっています。こんな感じです↓

v1とv1の類似度 v1とv2の類似度 v1とv3の類似度
v2とv2の類似度 v2とv3の類似度
v3とv3の類似度

 

もしくは、

v1とv1の類似度
v2とv1の類似度 v2とv2の類似度
v3とv1の類似度 v3とv2の類似度 v3とv3の類似度

 

こん名感じで、上のような行列を「上三角形行列」、下のを「下三角形行列」と呼んだりします。

 

ちなみに、こういった行列の知識は線形代数学の範囲なので、この際シッカリ学んでおきたい・復習しておきたい方などはこちらもどうぞ↓

「線形代数」を独学したい人はチェックしてほしい良書、13冊はこちらです』

 

 

 

 

 

 

というわけで、この例のように、3つの素性ベクトルの距離行列だとピンときにくいかもしれませんが、

実際の応用では数万、数十万とかそれ以上の素性ベクトルを計算するかもしれません。

そんなときには、上のような距離行列の特徴を知っておくと、計算量やメモリの節約になります。

 

自分でコーディングして大規模データをやってみたい!

 

って方は記憶の片隅に置いておくといいですよ^^

 

というわけで、今回は、類似度を整理した「距離行列」についてまとめました。

 

次回はこの距離行列を使って、クラスター分析をやる、ステップ③にいきたいと思います↓

 

第9回『「階層的クラスタリング」の「最短距離法(Single Linkage Method)」とは?初学者の方でもわかりやすいようにまとめました

 

 

 

過去記事はこちらです↓

第7回『「クラスター分析」ってどうやるの?クラスター分析のやり方、具体的な3つのステップはこちらです

第6回『テキストマイニングの「クラスター分析」などで使われる、知らないと恥ずかしい「素性ベクトル作成の定番的方法」とは?

第5回『テキストマイニングなどの「クラスター分析」で必要な「素性ベクトル」を洗練する2つのテクニックとは?

第4回『テキストマイニングなどのクラスター分析で必要な「素性ベクトル」をつくりたいあなたが知らないと損をする必須のテクニックとは?

第3回『テキストマイニングなどのクラスター分析でも重要な「素性ベクトル」を作るための3つのステップとは?

第2回『テキストマイニングの「クラスター分析」でも必要な「素性ベクトル」とは?なぜ必要なの?

第1回『「クラスター分析」とは?膨大な情報の内容を、ラク〜にサクッと理解したいあなたはこちらをどうぞ

 

 

本連載では、クラスター分析について定期的に更新しています。

Twitterなどフォローしてもらえると、更新情報が届くので便利です!

 

 

 

 

こちらの記事もございます

『「テキストマイニング」の記事まとめはこちらです

 

「多変量解析」の記事まとめはこちらです

 

「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです

 

『「データマイニング」を勉強したいあなたにチェックしてほしい良書、10冊はこちらです』

 

「エクセル」で「データ分析」できるようになりたいあなたにチェックしてほしい良書10冊はこちらです

 

「データ分析」を活用したい!けど分からないことだらけの方、その悩みを解決する良書10冊はこちらです

 

「アンケート調査」をしたいあなたにチェックしてほしい良書、8冊はこちらです

タイトルとURLをコピーしました