「コレスポンデンス分析」は聞き慣れないわかりにくい言葉でしょう。日本語で表現すると 「対応分析」 。
…一体なんのことやら、と思う方は少なくないです。
この手法、テキストマイニングで使われる分析のひとつです。
アンケート、ニュース、SNS投稿などから特定のテーマで書かれた記事(単語に分解)が年代、新聞社、特定のグループなどの単位でどのように異なるかを散布図のかたちでアウトプットし、示唆を得る手法です。
この記事では、コレスポンデンス分析(対応分析)の基礎知識や主成分分析・数量化Ⅲ類との違い、KH Coderでの実行手順について、わかりやすく解説していきます!
自力でコレスポンデンス分析をおこなえるようになりますので、最後まで読んでいただければ幸いです。
KHCoder 初心者は必読!
開発者による公式入門書
動かして学ぶ! はじめてのテキストマイニング: フリー・ソフトウェアを用いた自由記述の計量テキスト分析 KH Coder オフィシャルブック II (KH Coder OFFICIAL BOOK 2)
KHCoderを使いこなしたい!
中上級者を目指す方はこちらも
社会調査のための計量テキスト分析―内容分析の継承と発展を目指して【第2版】 KH Coder オフィシャルブック 単行本 – 2020/4/6
本記事の目標|KH Coderによるコレスポンデンス分析を自力で完遂できるようになる
この記事の目標は、ご覧になっている皆さんがご自身で以下を実行できるようになることです。
- コレスポンデンス分析を行うテーマを選定する
- KHCoderを使ってコレスポンデンス分析を実行する
- コレスポンデンス分析の結果を読み解く(より好ましくは、示唆出しをする)
* KH Coderは、タダで使える主にWindows向けのテキストマイニングツールです。
アウトプットイメージとして、年代別で好きな車のアンケートを集計し、コレスポンデンス分析に供した例を示します。
ここから分かるファクトとしては、以下が挙げられます。
- 好きな車で一番多かったのは”TOYOTA”である ※一番大きな円
- 好きな車で二番目に多いのは"HONDA", "MAZDA", "LUXUS"である ※二番目に大きな円
- ”TOYOTA”はどの年代でも人気
- ”HONDA”は30代、40代から人気 ※30代、40代の四角に近い
- ”TESLA”は10代からのみ人気 ※10代の四角に近い
- ”日産”は10代, 20代, 50代から人気 ※10代の四角よりも原点に近く、上下に20代と50代がある
- ”メルセデス・ベンツ”は50代からのみ人気 ※10代の四角に近い
- ”LEXUS”は10代と50代から人気 ※10代、50代の四角に近い
以上のような読み取りができるようになるまでの手順をわかりやすく解説します!
まずは、コレスポンデンス分析の概要からお伝えしていきますので、もし既にご存じの方は読み飛ばしていただいても問題ありません。
コレスポンデンス分析(対応分析)とは
コレスポンデンス分析という言葉はなかなか聞きなじみがないでしょう。日本語では対応分析と呼ばれることもあります。
コレスポンデンス分析(対応分析)は、簡単に言うと「単語間の関係性を、散布図と呼ばれるグラフで視覚的に表現する方法」のことです。
たとえば、ネットニュースを思い浮かべてください。多くのニュースサイトに出現する単語は原点近くに配置され、特定のニュースサイトに偏って出現する単語は原点から離れた場所に配置されます。また、互いに関連の強い単語は、原点から同じ方向に配置されます。
また、アンケート回答結果のようなデータでは、「回答者のセグメント(属性)×回答内容の特徴」を散布図として表現することが可能です。以下は「本記事の目標」で示したグラフの再掲ですが、単語(好きな車の情報。今回はメーカー名)がセグメント(年代)でどういった位置関係にあるかを知ることができます。
なおこの場合でも、原点に近い単語は全回答者が満遍なく挙げているもの、原点から遠い単語は特定のセグメントに特徴的なもの、と考えることができます。
解釈方法については、KH Coderのチュートリアルが参考になります。
主成分分析とコレスポンデンス分析の違いとは?
統計に精通している人は「主成分分析も同じような分析では?」と思ったかもしれません。
簡単に答えるなら、「両者は同じような分析」です。
もう少し詳しく言うと、コレスポンデンス分析(対応分析)は、「データ構造の再現は主成分分析に劣る」ものの、「特徴の表現においては良い結果を示す」ことが多いと言われています。
つまり、主成分分析は厳密な分析(情報を圧縮して再現)で、コレスポンデンス分析は情報をわかりやすい形で表現するといった形です。
全ての情報を表現したいなら主成分分析で、関係性を探りたいレベルであればコレスポンデンス分析の方が向いている形になります。
多変量解析の数量化Ⅲ類とコレスポンデンス分析の違いとは?
コレスポンデンス分析(対応分析)も、多変量解析の数量化Ⅲ類も、多くの変数をまとめることができる分析方法です。
大まかに言うと、両者の分析ロジックには違いがありません。
少し細かく言うと、分析に用いる変数が0と1で構成される場合は定量化Ⅲ類、クロス集計表のようなデータの場合はコレスポンデンス分析(対応分析)と考えていただければ十分です。
数量化Ⅲ類のデータは以下のようなイメージです。
▼よく行くカフェ|回答がない場合は0 or null、回答がある場合は1が入力される
回答者# | ムーンバックス | Excelシヨール | 怒涛 | パンダ珈琲 | 下島珈琲 | ダリィズ | ヨンマルク |
1 | 1 | 1 | 1 | 1 | 1 | 1 | |
2 | 1 | 1 | 1 | ||||
3 | 1 | 1 | 1 | ||||
4 | 1 | 1 | 1 | ||||
5 | 1 | 1 | 1 | 1 | |||
6 | 1 | 1 | |||||
7 | 1 | 1 | 1 | ||||
8 | 1 | 1 | 1 | 1 | |||
9 | 1 | 1 | 1 | ||||
10 | 1 | 1 | 1 | 1 |
一方で、コレスポンデンス分析のデータは以下のようなイメージです。クロス集計表としてアウトプットされるようなデータだと考えてください。
▼好きな車のメーカー
回答者 | 回答者年代 | Q1.好きな車のメーカーは? |
1 | 10代 | 日産 |
2 | 10代 | TESLA |
3 | 10代 | MAZDA |
4 | 10代 | TOYOTA |
5 | 10代 | LEXUS |
6 | 10代 | 日産 |
7 | 10代 | TESLA |
8 | 10代 | MAZDA |
9 | 10代 | TOYOTA |
10 | 10代 | LEXUS |
KH Coderのコレスポンデンス分析は、RのCorresp関数を使って計算している
KHCoderの対応分析機能を使う場合、内部的にRを使ってX軸、Y軸の座標値を算出しております。具体的には、入力データのマトリクスをインプットに、Rにある「corresp」関数(詳しくはコチラ)を使用しています。
記事後半では、KH Coderによるコレスポンデンス分析(対応分析)の手順を詳しく説明するのですが、その際に用いるのが以下のデータセットです。
回答者# | 回答者年代 | Q1.好きな車のメーカーは? |
1 | 10代 | 日産 |
2 | 10代 | TESLA |
3 | 10代 | MAZDA |
4 | 10代 | TOYOTA |
5 | 10代 | LEXUS |
6 | 10代 | 日産 |
7 | 10代 | TESLA |
8 | 10代 | MAZDA |
9 | 10代 | TOYOTA |
10 | 10代 | LEXUS |
11 | 20代 | TOYOTA |
12 | 20代 | TOYOTA |
13 | 20代 | MAZDA |
14 | 20代 | 日産 |
15 | 20代 | ダイハツ |
16 | 20代 | TOYOTA |
17 | 20代 | JEEP |
18 | 20代 | MAZDA |
19 | 20代 | 日産 |
20 | 20代 | ダイハツ |
21 | 30代 | TOYOTA |
22 | 30代 | SUBARU |
23 | 30代 | TOYOTA |
24 | 30代 | TOYOTA |
25 | 30代 | HONDA |
26 | 30代 | TOYOTA |
27 | 30代 | SUBARU |
28 | 30代 | クライスラー |
29 | 30代 | TOYOTA |
30 | 30代 | HONDA |
31 | 40代 | HONDA |
32 | 40代 | TOYOTA |
33 | 40代 | JEEP |
34 | 40代 | ルノー |
35 | 40代 | クライスラー |
36 | 40代 | HONDA |
37 | 40代 | TOYOTA |
38 | 40代 | マセラティ |
39 | 40代 | ルノー |
40 | 40代 | クライスラー |
41 | 50代 | TOYOTA |
42 | 50代 | メルセデス・ベンツ |
43 | 50代 | 日産 |
44 | 50代 | フォルクスワーゲン |
45 | 50代 | LEXUS |
46 | 50代 | TOYOTA |
47 | 50代 | メルセデス・ベンツ |
48 | 50代 | 日産 |
49 | 50代 | MINI |
50 | 50代 | LEXUS |
このデータセットを行列で表現すると、下表のように表すことができます。
これを各要素の総数n で割ったデータ(P)に表現しなおします
更に、カイ2乗統計量を使ってデータ(Z)に表現しなおします。
このデータを使って、X軸とY軸の座標値を求めます。細かい計算を省きますが、前述のデータは細かい計算を省くと以下のように出力されます。
好きな車 | X軸 | Y軸 |
ルノー | 0.962962962962963 | 0.510174851906096 |
日産 | 0.138479203510639 | 0.514170549495984 |
クライスラー | 0.854559399977926 | 0.492527503766902 |
ダイハツ | 0.216644611207589 | 0.949414161699453 |
メルセデス・ベンツ | 0.117840688280721 | 0.037037037037037 |
TOYOTA | 0.434888962953829 | 0.522418114100221 |
HONDA | 0.873060143895561 | 0.443057425906775 |
LEXUS | 0.0429625999538023 | 0.323646345921269 |
MAZDA | 0.10307219842052 | 0.766286106988967 |
JEEP | 0.638763291314233 | 0.743343308066285 |
SUBARU | 0.829763477361893 | 0.389488801170963 |
TESLA | 0.0761943986119648 | 0.583158052278481 |
この座標軸でプロットし、各データの出現頻度をバブルの大きさで表現すると、KHCoderの対応分析が完成します。
…とこれだけでは何のことか全くわからないと思います。ここからは、KH Coderでの実行手順を画像を用いて解説していきます!
コレスポンデンス分析(対応分析)の前段階としての形態素解析
前述の例では、好きな車のメーカーを答えてもらう単語の回答をベースにしておりましたが、KHCoderの対応分析では、文章による解析も可能です。
KH Coderでの形態素解析に使うツールを選ぶ
KHCoderでは、新規プロジェクトを開く際に、言語の行で形態素解析に使うツールの選択があります。
※ツールはデフォルトのChaSenを選択しています
今回のサンプルでは、好きな車の列を分析対象の列にしており、ここに文章が入っても分かち書きを実行してくれます。
分かち書きとは?
テキストマイニングにおける分かち書きとは、文章を単語に分解することです。
例えば、以下の文章があったとします。
私は、最新の赤くて速いHONDAのスポーツカーが好きです。
これを分かち書きすると、以下のように分解されます。
私 は 、 最新 の 赤く て 速い HONDA の スポーツカー が 好き です 。
文章を解析する場合においても、特段の工夫は不要で、このように単語を品詞に分解した結果に対して、対応分析が実行されます。
▼形態素解析・分かち書きについては以下の記事をあわせてご覧いただくとイメージしやすいでしょう。
コレスポンデンス分析(対応分析)に向いているテーマを知っておこう
これまでの説明通り、この分析では、アンケート結果やニュース等を使って、各単語(メーカー名、速い・遅い/赤い・黒いなどの形容、タイプ:スポーツカー)と各セグメント(年代、新聞社、商品)の位置関係を把握することができます。
そのため、向いているテーマは、既出のアンケート、ニュースの分析に加え、SNS・ブログの投稿、論文の内容、Wiki、課題管理表、日報、メール内容など、幅広い領域になります。
KH Coderによる対応分析の手順
順を追ってKHCoderによる分析手順を紹介します。
Step1:KH Coderのセットアップ
KHCoderのwebサイトより、「ダウンロードと使い方」にあるダウンロードのリンクをクリックしてください。
その後、フリー版のリンクからEXEファイルをダウンロードください。(600MB以上のファイルなので、ダウンロードに多少時間かかります)
ダウンロードしたファイルをダブルクリックして実行ください。以下のように解凍のウィンドウが立ち上がるため、Unzipを実行ください
これで「C:\khcoder3」というフォルダにファイルが展開されます。
Step2:KH Coderでの文書読み込み
KH Coderは「C:\khcoder3\kh_coder.exe」をダブルクリックすると起動します。
まずは上部メニューで[プロジェクト]-[新規]を選択します。
「新規プロジェクト」のウィンドウが立ち上がります。
※参照ボタンを押下して、分析するファイル(アンケート_サンプル.CSV)をセットすると、初期表示されるウィンドウに戻ります。CSVをセットする例にしておりますが、Excelファイルを参照することも可能です。
次に、上部メニューで[前処理]-[前処理の実行]を選びます。そうすると以下のウィンドウが立ち上がるので、そのままOKを選択します。
処理が終わると以下のような処理時間が記載されたウィンドウが表示されます。
OKを押すと、以下のように文書の単純集計結果が表示された初期ウィンドウが表示されます。
Step3:コレスポンデンス分析(対応分析)を実行する
前処理が終わりましたので対応分析を表示します。
上部メニューで[ツール]-[抽出語]-[対応分析]を選びます。そうすると以下のウィンドウが立ち上がります。
基本的には左側はいじらないことが多いのですが、グラフに描画する単語の出現頻度の閾値を変更したい場合は、最小出現数を変更してください。
右側の部分もほとんどデフォルトで問題ないかと思います。もし、セグメント(10代~50代)を別の内容に変更したい場合(年代ではなく、性別や住所などに変更するなど)は、抽出語×外部変数のところに表示されているカラム名を変更ください。
※セグメントを変更する場合、インプットデータのカラムに存在している必要があります。
また、デフォルトの設定ではバブルで出現数のボリュームが表現されないので、アンケートのように出現頻度をあわせて確認したい場合には、バブルプロットにチェックを入れるようにしてください。(バブルの大きさは比較的小さめに出るので120%程度にセットすることをお勧めします。)
こうして描画を行うと以下のように出力されます。
コレスポンデンス分析(対応分析)のアウトプットの見方
上記結果からわかることは以下のとおりです。
- 好きな車で一番多かったのは”TOYOTA”である ※一番大きな円
- 好きな車で二番目に多いのは"HONDA", "MAZDA", "LUXUS"である ※二番目に大きな円
- ”TOYOTA”はどの年代でも人気
- ”HONDA”は30代、40代から人気 ※30代、40代の四角に近い
- ”TESLA”は10代からのみ人気 ※10代の四角に近い
- ”日産”は10代, 20代, 50代から人気 ※10代の四角よりも原点に近く、上下に20代と50代がある
- ”メルセデス・ベンツ”は50代からのみ人気 ※10代の四角に近い
- ”LEXUS”は10代と50代から人気 ※10代、50代の四角に近い
まとめ
今回、KH Coderというフリーソフトで、好きな自動車のアンケート結果をコレスポンデンス分析(対応分析)で分析する方法をご紹介いたしました。
文章を単語に分解し、それがどのセグメントと関連しているのか視覚的に理解できるようになったかと思います。
様々なニュースに対して、各誌での取り扱い方法の違いを分析してみることや、、TweetやFacebookの投稿を基にしたトレンドのセグメント分析、社内ドキュメントのレビュー記録などを使った指摘者別の傾向を分析してみても面白いと思います。
以前は、精度が悪かった日本語テキストマイニングは現在かなり進歩し、十分実用化できるレベルになっております。ぜひ皆さまお試しください。
KHCoder 初心者は必読!
開発者による公式入門書
動かして学ぶ! はじめてのテキストマイニング: フリー・ソフトウェアを用いた自由記述の計量テキスト分析 KH Coder オフィシャルブック II (KH Coder OFFICIAL BOOK 2)
KHCoderを使いこなしたい!
中上級者を目指す方はこちらも
社会調査のための計量テキスト分析―内容分析の継承と発展を目指して【第2版】 KH Coder オフィシャルブック 単行本 – 2020/4/6
▼テキストマイニングの全体像についておさえたい方は、こちらもあわせてご覧ください
▼PythonとTwitter APIを組み合わせて使うと、ツイートの感情分析ができるんです