機械学習

混同行列とは? [Day12]

はじめに

こちらの記事では「混同行列」について考えていきます。

「混同行列ってどういうときに使うの?」

「混同行列を用いることでどんな良いことがあるの?」

といった疑問に答えていきたいと思います!

tota
tota
文系出身データアナリストのtotaです!初心者でも分かるように解説していきますね!

ポイントとしては、混同行列はデータから学習した説明変数と目的変数の関係性のルールについて、その良し悪しを評価するためのものだという点です。

これまでと毛色の異なる話ですので頭を切り替えながら進んでいきましょう!

分類の良し悪し

Day10ではロジスティック回帰について、

Day11では線形判別分析について見てきました。

これらはいずれも「分類」を行う分析手法でした。

分類とは学習する「説明変数と目的変数のセット」において

「目的変数」「質的(カテゴリー)」なタイプの機械学習です。

説明変数と目的変数の間に「関係性のルール」を見出し、

それにより未知なる説明変数に対しても

正しい目的変数の値を導く(分類する)ことを目的としています。

ここで分類のために見出した関係性のルールについて、

その良し悪しを評価することを考えます。

良し悪しの評価のためには、見出した関係性のルールによって再度問題を解いてみて、導き出した目的変数の分類が不正解となっていないかをテストする必要があります。

導き出した関係性のルールで正しく分類できるかどうかをテストする!

テスト時の注意点

テストの際に注意すべき点が2つあります。

1つは「過去問=学習済みデータ」ではなく未知なるデータでテストを行う必要があるという点です。

過去問は答え(目的変数)の値を丸暗記してしまえば満点をとれてしまいます。

重要なのは本番の試験、つまり未知なるデータで実力を発揮できるかどうかです。

したがってテスト用に未知なるデータを用意しておいて、

そのデータによりテストを行う必要があります。(※)

(※)テスト用のデータを用意する方法については重要な論点ですので別の記事にて考えていきたいと思います。

テストを行う際は学習済みのデータではなく未知なるデータでテストする!

もう1つの注意点はデータの偏り(不均衡さ)です。

データの偏りとは学習する説明変数と目的変数のセットにおいて、

目的変数のカテゴリーが特定のカテゴリーに集中しているようなデータのことを言います。

例えば住宅ローン顧客について年収(説明変数)債務不履行となったか否か(目的変数)の過去データがあったとします。

おそらくこのデータは偏り(不均衡さ)のあるデータとなります。

というのもそもそも債務不履行となる人の割合が非常に小さい、

すなわち目的変数が「債務不履行とならなかった」というカテゴリーばかりになってしまうからです。

このようなデータを不均衡データと言います。

分類の良し悪しを評価する際はデータの不均衡さに注意する!

この不均衡データは全員を割合の多い方のカテゴリーに分類してしまうだけで、誤分類率(不正解率)が低くなってしまうという問題があります。

例えば先ほどの住宅ローン顧客のデータで言うと、

仮に債務不履行者が全体の3%だけだったとしたら

全員を「債務不履行とならなかった」と分類するだけで誤分類率もたったの3%と低い数字になってしまいます。

2つの誤分類

不均衡データにおける問題は困りものです。

全員を特定のカテゴリに分類するだけ誤分類率が低くなってしまいます。

そこで分類問題の評価においては2種類の誤分類に分けて考えます。

先ほどの住宅ローン顧客の例で考えていきます。

まず1つ目の誤分類は「債務不履行者なのに債務履行者と分類」してしまう誤分類。

そして2つ目の誤分類は「債務履行者なのに債務不履行者と分類」してしまう誤分類です。

この2つの誤分類に分けて考えるメリットは、

どちらの誤分類を優先して回避すべきかを考えやすくなる点です。

先ほどの2種類の誤分類においては、1つ目の「債務不履行者なのに債務履行者と分類」してしまう誤分類を優先的に回避したいと考えるはずです。

債務不履行者を見落としてしまう方が問題ですからね。

だとすれば全体における誤分類率ではなく

債務不履行者を債務履行者と分類してしまった誤分類率に着目しよう、

という判断が可能になります。

このように誤分類率(不正解率)を2つに分けて考え、

分析の目的に応じてどの誤分類率に着目すべきかを決めることが重要です。

これにより適切な分類の評価を行うことができるようになります。

誤分類率を2つに分けて考えることで着目すべき誤分類が見えてくる!

混同行列

上記の2種類の誤分類を考えやすくするための表が混同行列です。

上記の例における以下のような混同行列をもとに考えていきましょう。

表側(縦軸)が予測結果、表頭(横軸)が実際の状況となっています。

混同行列

まず1つ目の「(実際は)債務不履行者なのに(予測では)債務履行者と分類」してしまう誤分類は上記表の赤色の箇所が該当します。

もう1つの「(実際は)債務履行者なのに(予測では)債務不履行者と分類」してしまう誤分類は上記表の青色の箇所が該当しています。

誤分類率も2種類計算することができます。

1つ目は「(実際は)債務不履行者のうち(予測では)債務履行者と分類」する誤分類率で上記では22÷30=73.3%、

2つ目は「(実際は)債務履行者のうち(予測では)債務不履行者と分類」する誤分類率で上記では÷970=0.2%となります。

このうち優先して着目したいのは1つ目の債務不履行者を債務履行者と誤分類する73.3%という誤分類率です。

73.3%の誤分類率は決して低いとは言えず、この分類はあまり良い分類とは言えなさそうです。

ちなみに全体における誤分類率は(2+22)÷1000=2.4%となり、

これだけ見ると良い分類と誤解してしまう可能性もあります。

ぜひ誤分類は2種類に分けて考えるという点を理解しておきましょう。

誤分類を2種類に分けて考えることで「見せかけの分類精度」を見破ることができる!

閾値

さて、ここから「閾値」について考えていきます。

先ほどの混合行列をもう一度見てみましょう。

混同行列

いま私たちが優先的に着目していたのは上記の赤色の誤分類です。

この誤分類を少なくすることで「(実際は)債務不履行者なのに(予測では)債務履行者と分類」することを減らすことができます。

では上記の赤色箇所の誤分類を減らすためにはどうすればよいでしょうか。

実はこれは簡単で、分類の基準を甘くしてあげればよいのです。

上記の混同行列における予測結果を見るとほとんどのデータを「債務履行者」と分類しています。

「債務不履行者」と分類したデータはたったの10人だけです。

つまり「債務不履行者」だと分類する基準が厳しすぎるのです。

なので赤色箇所の誤分類を減らすために「債務不履行者」だと分類する基準を甘くしてあげましょう

実際に「債務不履行者」と分類する基準を甘くする前と後の混同行列を並べてみます。

混同行列_前後

赤色箇所の誤分類が減り、その誤分類率も10÷30=33.3%に減少しています。

一方で基準を甘くしたことで青色箇所の誤分類については増加し、

その誤分類率も30÷970=3.1%と若干増加しています。

つまり分類の基準を甘くすることで片方の誤分類率が改善する一方、もう片方の誤分類率は悪化するというトレードオフの関係が生じます。

したがって分類問題においてはまずどの誤分類率に着目するかを考え、

その上で基準を甘くしたり厳しくしたりして最適な誤分類率となるように調整することが必要になってきます。

そしてこの調整する基準のことを閾値と呼び、その閾値の調整にこそ分析者の意図や手腕の見せ所があるわけです。

まとめ

最後に今回の記事のポイントを整理します。

  • 「分類」の良し悪しは未知なるデータでテストする
  • 不均衡データ「見せかけの誤分類率」に注意する
  • 誤分類は混同行列により2つの誤分類に分けて考える
  • どちらの誤分類に優先して着目するかはその都度考える
  • 閾値の調整により2つの誤分類率はトレードオフの関係にある
  • 目的に応じて最適な誤分類率となるよう閾値を調整する

今回見てきた混同行列や閾値の調整は、分析の目的をしっかりと把握できていないと行うことができません。

ただ作業としてデータ分析を行うのではなく意味のある分析を行うためにも今回の内容は非常に重要ですのでぜひ覚えておきましょう。

今回は以上になります。

最後まで読んでいただきありがとうございました!

統計学ベーシック講座【確率分布・推定・検定】

統計学の基礎を効率的に学べるベーシック講座です。統計学の入り口となる「確率分布・推定・検定」について豊富な図を用いて説明していきます。

2021年3月リリース後すでに20,000人以上の方に受講いただき大人気ベストセラーコースとなっています!ぜひこの機会に統計学や確率思考という一生モノのスキルを一緒に身につけましょう!

※上記リンクからですと時期によってはクーポンが自動適用されます。
※Udemyは世界最大級のオンライン学習プラットフォームです。以下記事にてUdemyをご紹介しておりますのでよろしければこちらもご覧ください。

Udemyとは?セールでお得な世界最大級のオンライン学習プラットフォームこの記事では世界最大級のオンライン学習プラットフォームであるUdemyをご紹介していきます!まだUdemyを使っていない方やこれから使お...