決定木分析(第2回) テキストマイニング編
テキストで決定木分析
テキストでも決定木分析が可能
内閣支持を問う世論調査結果が新聞に掲載されています。データは電話で収集しているようです。
私も自宅へ電話がかかてきてモニターになったことがあり、例の機械音声「支持するは1を、支持しないは2を・・・」の案内に従ってボタンを押すわけです。
回答者 | 内閣支持 | 人柄 | 外交 | 経済 |
A | 支持する | 〇 | 〇 | |
B | 支持しない | × | × | |
C | 支持しない | × |
手書きアンケートであれば元のデータはこのようなものだろうと思います。電話アンケートですから「〇、×」のところが数字になってるのでしょう。
このようなデータを集計して支持する人の割合%や支持する人のなかの理由の割合%の円グラフ等を新聞は掲載しています。
円グラフ・棒グラフは数字を直感的に認識できるところがよいのですが、例えば「支持する政党別」なら政党数のグラフが必要になります。
一方で決定木分析は1枚の図で表現できます。ここに決定木の大きなメリットがあるのだろうと思います。
テキストの場合
今回のデータ | 前回(テキストマイニング) | |||||
ケーキトッピング | 賛否 | 回答者 | 好きな食べ物 | 年代 | 回答者 | |
イチゴ、バナナ | 賛成 | A | イチゴ、バナナ | 10代 | A | |
イチゴ | 賛成 | B | イチゴ | 10代 | B | |
ミカン、イチゴ | 反対 | C | ミカン、イチゴ | 20代 | C | |
ミカン | 反対 | D | ミカン | 20代 | D | |
バナナ、イチゴ | どちらともいえない | E | バナナ、イチゴ | 30代 | E | |
バナナ | どちらともいえない | F | バナナ | 30代 | F |
今回のデータ(左側)です。テキストマイニング(対応分析)で使用したものと内容は同じです。
前回は「外部変数」が年代でした。今回は「外部変数」にあたる部分を「賛否」に変更しました。ケーキへトッピングする果物の賛否を聞いたアンケート結果です。回答は複数回答MAです。
ご覧のようにデータは文字列(テキスト)です。テキストマイニングツール(KHcoder)でクロス集計表をつくり、分析するためにデータを数値化します。。
手順
クロス集計表をつくる
賛否 | イチゴ | バナナ | ミカン |
賛成 | 1 | 1 | 0 |
賛成 | 1 | 0 | 0 |
反対 | 1 | 0 | 1 |
反対 | 0 | 0 | 1 |
どちらともいえない | 1 | 1 | 0 |
どちらともいえない | 0 | 1 | 0 |
KHcoderへテキストを読み込みます。
・「ケーキトッピング」列を「分析対象テキスト」に設定します。
今回はクロス集計データをつくるだけなので「回答者」列は不要です。
KHcoderの
・「ツール」→「文書」→「文書×抽出語表の出力」→「CSVファイル」→「最小出現数=1」に設定して保存します。
保存したCSVファイルへ「賛否」の列を追加すれば完成です。テキストマイニングツールの役割はクロス集計データ作成まででいったん終わりです。
Rで分析
Rの分析手順は前回と同様です。
・「ミカン」が入っていると「反対」
・「ミカン」がなく「イチゴ」もなければ「どちらともいえない」なので「バナナ」だけの場合が「どちらともいえない」です。
・「ミカン」がなく「イチゴ」があれば「賛成」が多数ということです。
何を計算しているのか
<第一段階>
・イチゴの有無を質問する
イチゴがある場合{賛成、賛成、反対、どちらともいえない}
イチゴがない場合{反対、どちらともいえない}
・バナナの有無を質問する
バナナがある場合{賛成、どちらともいえない、どちらともいえない}
バナナがない場合{賛成、反対、反対}
・ミカンの有無を質問する
ミカンがある場合{反対、反対}
ミカンがない場合{賛成、賛成、どちらともいえない、どちらともいえない}
従ってミカンの有無によって切り離される。
「ミカンがあるノード」が{反対、反対}だから純度が最も高くなり第一段階として切り離される。
「ミカンがあるノード」は{反対、反対}だからこれ以上の分離ができない
「ミカンがあるノード」への質問は終了する。
<第二段階>
ミカンがない場合{賛成、賛成、どちらともいえない、どちらともいえない}が残っている。
・イチゴの有無を質問する
イチゴがある場合{賛成、賛成、どちらともいえない}
イチゴがない場合{どちらともいえない}
・バナナの有無を質問する
バナナがある場合{賛成、どちらともいえない、どちらともいえない}
バナナがない場合{賛成}
・ミカンの有無を質問する
ミカンがある場合{null}
ミカンがない場合{賛成、賛成、どちらともいえない、どちらともいえない}
従ってイチゴの有無によって切り離される。
「イチゴがないノード」が{どちらともいえない}だから純度が最も高くなり第二段階として切り離される。
・「イチゴがないノード」が{どちらともいえない}だからこれ以上の切り分はできない。
「イチゴがないノード」への質問は終了する。
<第三段階>
イチゴがある場合{賛成、賛成、どちらともいえない}が残っている。
・イチゴの有無を質問する
イチゴがある場合{賛成、賛成、どちらともいえない}
イチゴがない場合{null}
・バナナの有無を質問する
バナナがある場合{賛成、どちらともいえない}
バナナがない場合{賛成}
・ミカンの有無を質問する
ミカンがある場合{null}
ミカンがない場合{賛成、賛成、どちらともいえない}
従ってイチゴの有無によって切り離される。
「イチゴがないノード」が{null}だから純度が最も高くなり第三段階として切り離される。
ところが「イチゴがないノード」が{null}だから切り離しても結果的にのこるのは{賛成、賛成、どちらともいえない}になる。
第二段階と第三段階が解せない
第二段階で
・イチゴがない場合{どちらともいえない}
・バナナがない場合{賛成}の両方が成立している。
ところが
・イチゴがない場合{どちらともいえない}が優先されるのはなぜ?
・ミカンがある場合{null}も成立している。
第三段階で
・イチゴがない場合{null}
・バナナがない場合{賛成}の両方が成立している。
ところが
・イチゴがない場合{null}が優先されるのはなぜか?
・ミカンがある場合{null}も成立している。
賛否 | バナナ | イチゴ | ミカン |
賛成 | 1 | 1 | 0 |
賛成 | 0 | 1 | 0 |
反対 | 0 | 1 | 1 |
反対 | 0 | 0 | 1 |
どちらともいえない | 1 | 1 | 0 |
どちらともいえない | 1 | 0 | 0 |
決定木分析にはルールがあります。列の左側から質問をします。
はじめのデータでの質問順は
・イチゴ→バナナ→ミカンです。
第二段階で同じ純度のノード、イチゴがない場合{どちらともいえない}とバナナがない場合{賛成}の両方が成立しているときには、先の質問結果が優先されます。
ということでイチゴの有無によってイチゴがない場合{どちらともいえない}が分離されます。
第三段階も同じです。イチゴの有無によってイチゴがない場合{null}がバナナがない場合{賛成}よりも先に分離されます。
データのイチゴとバナナの列を入れ替えて決定木分析を行うと、バナナの有無が優先されて切り離されます。データの並べ方で違う結果になる!このことには注意が必要です。