我試考・銀行の顧客ターゲティング、その目的とは?
前回までで、ようやく機械学習を行う環境が整いました。今回から、ようやく銀行の顧客ターゲティングに入っていきたいと、思います。
まず初めに、そもそも何のために機械学習して、予測AIを作るのか?について、ビジネス的な意味と、機械学習を使ったデータ分析のゴールを、自分なりに考えてみたいと、思います。
ある意味、ようやく前置きが終わったと思ったらまた前置きですが・・・よろしくお願いいたします。
はじめに
私が読んだ、ある機械学習の本に、ありました*1。
ビジネスのゴールと、分析のゴールには、大きな隔たりがある
と。どういうことかと申しますと、
- ビジネスのゴールとは、経済的なインパクト。
- 売り上げが増加する、コストが削減される、リスクが低減される*2など。
- 分析のゴールとは、データを分析した結果。
- 不動産スペックから不動産価格を予測する、顧客属性から優良顧客と通常顧客に分類する、など。
- よって、分析結果が、どのように経済インパクトに繋がるのか、連動ロジックを考えておくことが、重要。
- それこそが、分析の課題設定。
では、この銀行の顧客ターゲティングの、ゴールはと言いますと・・・元のUCIのサイトには、こうあります。
- The data is related with direct marketing campaigns (phone calls) of a Portuguese banking institution. The classification goal is to predict if the client will subscribe a term deposit.
日本語に訳すと、こんな感じでしょうか。
- これは、ポルトガルの銀行の、ダイレクトマーケティング(電話営業)キャンペーンに関する、データです。
- 分類のゴールは、顧客が、定期預金口座を開設するかどうかを、予測することです。
日本語のサイトを見ると、「(単なる)口座を開設するかどうか」と書かれていることがありますが、「term deposit」なので、多分「定期預金口座」が正しいと、思います。
「口座開設」だと、口座も持っていない見込み顧客に、いきなり電話をかけることになってしまい、ちょっと変ですよね。まだ顧客じゃない人は、通常は顧客データベースに、登録されていないはずです。口座を開設してくれた既存顧客が、優良顧客(定期預金口座を、開設してくれる可能性がある)か、通常顧客かを分類する方が、しっくりきます。
ということで、分析のゴールは、既存顧客を優良顧客(定期預金口座を、開設してくれる可能性がある)と、通常顧客に、分類することと、考えます。
では、ビジネス上の目的は、何なのでしょう?実務ではない仮想問題では、そこは推測するしかありません。が、古今東西、ビジネス上の目的と言うと、大体、利益・売り上げの増加か、コスト削減と、相場は決まっています。繰り返しになりますが。そこで、その二つの立場に立ってみますと・・・
立場 | 目的 | キャンペーンの目的 |
---|---|---|
A | 利益・売り上げの向上 | 一人でも多くの優良顧客を、発掘したい。 |
B | コスト削減 | なるべく無駄打ちを避けたい。可能な限り、100発100中の電話営業を、したい。 |
こうなるかと、思います。精度100%の予測AIが作れれば、上記は両立できるかもしれませんが、現状の機械学習技術だと、そうはいかないかと思います。
精度を指標にする場合の問題点
それでも、「可能な限り精度を高くすれば、一人でも多くの優良顧客を、可能な限り少ない無駄打ちで、発掘できるはずだ」と、一見思ってしまいませんか?
必ずしも間違いではないのですが、以下を、ご覧ください。
from google.colab import drive
drive.mount('/content/gdrive/')
%cd ./gdrive/My\ Drive/colab/bank
import pandas as pd
train = pd.read_csv("./dataset/train.csv")
train["y"].value_counts()
0 23954
1 3174
Name: y, dtype: int64
3174 / (23954 + 3174) * 100
11.70008846947803
前回構築したGoogle Colabの環境で、打ってみたコマンドです。このあたりでも触れましたが、優良顧客は全体の1割程度です。たまたまこのサンプルが偏っているのか、全体も同じような偏りをしているのかは、判断が分かれるところです。が、私は後者ではないかと、予測します。1銀行で3万人近くの顧客と言えば、それなりの数のサンプリングだと思いますし、電話営業の成約率ならまぁ、こんなものかなという、感覚があるからです。
つまり、全て非優良顧客と予測すれば、精度は90%近くになってしまいます。確かに、無駄な営業は一切なくなりますが、その代わり優良顧客は一人も発掘されません。「電話営業は非効率なんでそんなキャンペーンは止めましょう」なんていうのも、提案の一つではありますが、それを言うと話が終わってしまいます。
単純に精度を見るだけでは駄目だとするならば、一体何を見れば、良い予測AIが作れるのでしょうか。
RecallとPrecision
突然ですが、本問題は、「二項分類」になります。現状、AIが予測できる回帰*3・分類*4のうちの分類問題の一つ、True(この場合、優良顧客)/False(この場合、通常顧客)を予測する、問題です。二項分類問題の場合、「精度」は正解か不正解の簡単な二択に見えて、実はそうでもないのです。以下をご覧ください。
AIがTrueと予測 | AIがFalseと予測 | |
実際にTrueだった顧客 | True Positive(TP) | False Negative(FN) |
実際にFalseだった顧客 | False Positive(FP) | True Negative(TN) |
正解・不正解にも、二つずつあることが、分かります。
- 正解
- AIがTrueと予測して、実際にもTrueなもの(TP)
- AIがFalseと予測して、実際にもFalseなもの(TN)
- 不正解
- AIがTrueと予測したけど、実際にはFalseなもの(FP)
- AIがFalseと予測したけど、実際にはTrueなもの(FN)
ここで、以下のビジネスの目的に、立ち返ってみたいと思います。
立場 | 目的 | キャンペーンの目的 |
---|---|---|
A | 利益・売り上げの向上 | 一人でも多くの優良顧客を、発掘したい。 |
B | コスト削減 | なるべく無駄打ちを避けたい。可能な限り、100発100中の電話営業を、したい。 |
立場Bに立ってみた場合、AIが「優良顧客」と予測したのに、実際は「通常顧客」だと、困ります。無駄打ち営業になってしまうからです。なので、Bの立場だと、なるべくFP(False Positive)を減らしつつ、精度を高めていけば、良いAIが作れるのではないかと、考えられます。
立場Aに立ってみた場合、本当は「優良顧客」なのに、AIが「通常顧客」と予測してしまうと、困ります。一人でも多くの優良顧客を発掘したいのに、取りこぼしてしまう可能性が、あるからです。なので、Aの立場だと、なるべくFN(False Negative)を減らしつつ、精度を高めていけば、良いAIが作れるのではないかと、考えられます。
結論としては、前者の場合、TP/(TP+FP)を見ればよいことに、なります。この値が1に近ければ近いほど、AIが優良顧客と予測した顧客は、本当に優良顧客である確率が高いと、言えます。この指標のことを、Precision/適合率と言います。
また、後者の場合は、TP/(TP+FN)を見ればよいことに、なります。この値が1に近ければ近いほど、本当の優良顧客を、AIがちゃんと優良顧客と予測してくれる確率が高いと、言えます。この指標のことを、Recall/検出率と言います。
トレードオフとF-score
ちょっと難しい話ではありますが・・・RecallとPrecisionは、トレードオフの関係に、あります。すなわち、Recallを上げればPrecisionは下がり、Precisionを上げれば、Recallが下がります。
このケースで想像してみますに・・・とにかく電話をかけまくれば、一人でも優良顧客を発掘できる確率は、高まります。つまり、Recallはあがります。でも、外れを引く確率も高まるので、Precisionは下がりそうです。
逆に、確度の高そうな人に絞って電話をかければ、電話一本当たりの勝率は高まりそうです。つまり、Precisionは上がります。ただ、「低確率ではあるものの、もしかしたら定期預金口座開設してくれるかもしれない」人は取りこぼすので、Recallは下がります。
こんな感じでしょうか。よって、極端にRecallを重視すれば、成果は上がる代わりに無駄打ちは多くなりますし、極端にPrecisionを重視すれば、無駄な営業コストは削減出来る代わりに、成果も少ないキャンペーンに、なりそうです。
そうなってくると、そんな極端な指標ではなく、もっとバランスの取れた指標はないのかと思うのが、人情ですよね。そんな人情派のあなたにぴったりの指標が、F-scoreです。計算式上は以下で表され、まさしく、RecallとPrecisionのバランスを取った指標になります。
F-score = 2×Recall×Precision/(Recall + Presision)
まとめと次回予告
というわけで、ビジネスの目的から分析のゴールを考えると、良い予測AIを作るためには、以下のようになるかと、考えました。
ビジネスの目的 | 分析のゴール |
---|---|
金に糸目はつけず、とにかく一人でも多く優良顧客を発掘 | Recallの高い予測AIを、作る |
あまりお金をかけず、効率的に優良顧客を発掘したい | Precisionの高い予測AIを、作る |
ほどほどにお金をかけ、ほどほどに優良顧客を発掘する、バランスの取れたキャンペーンを打ちたい | F-scoreの高い予測AIを、作る |
で、実際に、SIGNATEのコンペで、何の指標を元にランキングされているかというと・・・「ROC AUC」という指標です。
個人的になんですが、Recall・Precision・F-scoreまでは、ビジネス上の目的とも結びつけやすく、理解しやすい気がします。一方、AUCが高いと、ビジネス的にどういう意味があるのか?って、理解が難しい。そう思ったこと、ありませんか?
ちょっと長くなってきたので、今回はここらへんまでにして、次回、その意味を自分なりに考えてみたいと、思います。最後まで読んでいただいて、ありがとうございました。
参考資料
Watson Studioで始める機械学習・深層学習ーーノンプログラミングでやさしく体験
- 作者: 赤石雅典
- 出版社/メーカー: リックテレコム
- 発売日: 2018/11/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: 堅田洋資,菊田遥平,谷田和章,森本哲也
- 出版社/メーカー: 秀和システム
- 発売日: 2017/03/21
- メディア: 単行本
- この商品を含むブログを見る