決定木分析(第2回) テキストマイニング編

決定木分析(第2回) テキストマイニング編

テキストで決定木分析

テキストでも決定木分析が可能

 内閣支持を問う世論調査結果が新聞に掲載されています。データは電話で収集しています。私も自宅へ電話がかかてきてモニターになったことがあり、例の機械音声「支持するは1を、支持しないは2を・・・」の案内に従ってボタンを押すわけです。

回答者 内閣支持 人柄 外交 経済
支持する
支持しない × ×
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 決定木分析結果
 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

R 決定木分析結果 列入れ替え
 決定木分析にはルールがあります。列の左側から質問をします。ですからはじめのデータでの質問順は、イチゴ→バナナ→ミカンです。第二段階で同じ純度のノード、イチゴがない場合{どちらともいえない}とバナナがない場合{賛成}の両方が成立しているときには、先の質問結果が優先されます。ということでイチゴの有無によってイチゴがない場合{どちらともいえない}が分離されます。
 第三段階も同じです。イチゴの有無によってイチゴがない場合{null}がバナナがない場合{賛成}よりも先に分離されます。

 データのイチゴとバナナの列を入れ替えて決定木分析を行うと、バナナの有無が優先されて切り離されます。データの並べ方で違う結果になる!このことには注意が必要です。