機械学習は物事を予測するツールとして有名ですが、実はそれだけでなく他にも有用な使い方があるのはご存知でしょうか。
今回は機械学習を予測目的以外で用いる方法を紹介します。
皆さんご存知の通り、機械学習の主な使い方は
- Yes/Noを当てるような二値の分類
- 複数のラベルを当てる多値分類
- 年収や販売売上といった数値を当てる回帰
が有名ですよね。
実は機械学習は上記のように何かを予測する副産物として様々な有益な情報(インサイト)を得ることができるのです。
機械学習の変わった使い方①説明変数の重要度を知る ‐Permutation Importance
一つあるコンビニの例を考えてみたいと思います。次に並べるデータの項目から来週の来客数を予測したいとします。
【持っているデータ】
- 昨日までの売上(日ごとに集計)
- 昨日までの来客数(日ごとに集計)
- 少年ジャン〇やマガジ〇の発売日の情報
- 一番くじのイベント開催有無
- 可愛い店員さんの出勤スケジュール
- 天気予報
- お店の近くで開催される複数のイベント情報(小学校の運動会やお祭りなど)
この中で、来週の来客数予測に一番効いているデータってどれだろう?ということを知ることは、自分の経営するお店の特徴を把握するなかで非常に重要だと思います。お店によってどういう理由でお客さんが多く足を運んでくれるのかは、きっとお店の立地や地域によって違いますよね。
ではさっそく通常のモデリングを行ったとします。ランダムフォーレストやXGboostといった木系のアルゴリズムを使ってモデリングしましょう。
学習を終えたモデルは来週の来客数を予測するだけでなく、木系のアルゴリズムであれば大抵はPermutation Importanceという機能を使うことができます。
Permutaition Importanceは目的変数(今回でいうと来客数)を予測する際に、各説明変数がどれくらい効いていたかを示す重要度を知ることができます。下図のような結果を確認することができます。
※通常Pythonであれば、”feature_importances_”のような形で呼び出すと重要度を示す数値が返ってきますので、棒グラフで見やすく処理します。
Permutation Importanceはデータの中にある説明変数だけをランダムに並び替えたときにモデルの精度がどれだけ低下するかを計算することで、その説明変数と予測ターゲットとの関係性をの強さを相対的に表現する指標です。
つまり機械学習を用いると、男性客の多いコンビニの場合、可愛い店員さんが窓の外から見えるとついついそのコンビニに寄ってしまうという、どうしようもない男の性(リビドー)を見抜いてしまうのです。
※注意 例え話です
コンビニの例のように、Permutation Importanceを用いることで目的変数と説明変数の意外な関係を知ることができます!
この機能はめちゃくちゃ便利で、多数(数百あることも…)ある系列から重要度の高いものをピックアップしてデータ数を減らすといった、データサイエンス視点からもこの機能を使うことが多々あります。
機械学習の変わった使い方②個々の説明変数と目的変数との関係を知る ‐Partial Dependence
重要な説明変数を知ることができたので、次はその説明変数がどのように目的変数の予測に影響するのかを調べてみたくなりますよね。
先ほどのコンビニの例では、”雑誌の販売スケジュール”が二番目に重要という結果(仮想)になりました。
では実際に、どの雑誌が出ると来客数に影響を及ぼすのでしょうか?
それを知るのがPartial Dependenceです。下図のように雑誌が出る日によって来客数が変動する様子を確認することができます。
Partial Dependenceはある説明変数に注目し、他の説明変数の影響を平均化することで実質なくし、その時の注目している説明変数と目的変数との関係性を計算したものになります。
従って、一つの説明変数の値が変化したときに目的変数の予測値がどのように変化するのかというインサイトを得ることができます。
実際の機械学習プロジェクトを行うと、ビジネスの種類によっては予測結果よりもこういったインサイトを知ることを重視する場合があります。それくらい有用な機能なのです。
まとめ
- Permutation Importance ⇒どの説明変数が重要なのかを調べる!
- Partial Dependence ⇒ある説明変数の変化が予測にどう影響を与えるのか調べる!
上記二つはデータサイエンスにおいてかなり使う場面の多い機能になります。
機械学習はどうしてもやっていることがブラックボックスになりやすく説明性に欠けることがあるので、機械学習を知らない人に分析結果を説明するときはこれらの機能を使ってしっかり納得してもらいましょう!
次は要因分析的な話ができたらいいなと思います!以上
コメント