それほど大した内容ではないのですが、私が機械学習プロジェクトをやった時にはまった経験をお伝えします。一切コードとかの話は出てきませんのでご注意ください。
ビジネス課題
とある商品を販売する際に、必ず専門部署に問い合わせをする必要がある
→ 専門的な知見が無いと判断ができない内容
→ 専門的な知見を得るには数年はその業務に従事する必要がある
→ ゆえにこの専門的な知見を持っている人が少ない
→ 人が足らずにこの部署がボトルネック(制約条件※)
※ ザ・ゴールに出てくるTOC的にはそういう位置づけ
このボトルネックを解消するため、機械学習を利用しようという話になりました。
ちなみに、この商品の潜在的な市場規模は大きく、これが実現できた場合のビジネスインパクトは非常に大きいです。(規模を言うと会社にバレる可能性があるので言えません)
プロジェクトの進め方
このプロジェクトは以下のような形で進んでいきました。
- 業務理解
- 機械学習で置き換えることができる部分の検討
- モデリング
- 新しい業務フローの設計
それぞれ簡単に説明します。
1. 業務理解
- 営業がどのように案件をとってくるか
- そこからどのように照会・問い合わせが来るか
- どのように判断をしているか
- その後どのように契約になるか
などをかなり細かい部分までヒアリングしました。
2. 機械学習で置き換えることができる部分の検討
プロジェクト的にはAIシステムと謳っておりました(予算が取りやすい!)が、大部分は普通のシステムで、一部に機械学習を取り入れるわけですから、ここからここまではシステムで処理をして、ここからデータを引っ張って、ここでモデルを通し・・・ということを考えていきます。
機械学習を取り入れる場合、ここで一つポイントがあると思っています。
それは、今後もデータが得られ、得られたデータからモデルを再学習することができるかということです。
今回のプロジェクトの場合、専門部署の人たちの過去の判断を学習させるという方法もあります。
しかし、その方法をとると、新たにシステムが導入されてここで言うAIシステムが判断をするようになると、専門部署の人たちの判断したデータは新たに得られなくなります。そこで、今後も得られるデータを使って学習するというのが重要です。
3. モデリング
詳しくは話せませんが、専門部署からの要望もあり、なるべく精度を高めたいということでブラックボックスのアルゴリズムを採用して分類モデルを作成しました。
4. 新しい業務フローの設計
はっきり言ってめちゃくちゃ大事です!どのように日々の業務オペレーションの中にこれを組み込むか、どうすれば問題なく使えるかということを考えるのは、業務理解が無いとできません。結構この部分を軽視する人が多い印象を持っていますが、これができないと結局使われない、オペレーションが回らないなどの問題が起こります。
結論から言うと、一番はまったポイントがここになります。
何が問題だったかというと、分類モデルを使って業務はできるけれども、その後に説明責任があるのでそのように分類した根拠を知りたい(システムで表示したい)と言われたことです。
しかも、それぞれの判断根拠が互いに矛盾しないことも付け加えられました。
例として、個人の住宅ローンデフォルトを年収から予測する問題を考えてみます。
年収 | デフォルト確率 | |
---|---|---|
A | 300 | 5% |
B | 500 | 4% |
C | 700 | 3% |
D | 800 | 2% |
E | 1200 | 1% |
F | 2000 | 1.5% |
上の表のような形でモデルが予測したとします。例えば「Aのデフォルト確率が5%の理由は?」と聞かれたら、「年収が安いから」というのが判断の根拠になると思われます。
同様に、「Eのデフォルト確率が1%の理由は?」と聞かれたら「年収が高いから」というのが判断根拠になります。
では、Fの場合はどうでしょうか。Fはデフォルト確率1.5%ということでA~Dより年収が高いことからデフォルト確率が相対的に低くなると説明できます。しかし、Eとの比較では年収が高いにも関わらずデフォルト確率はEより高くなります。ロジスティック回帰などの古典的な手法を用いる場合は起こりませんが、ブラックボックスだとこれが起こりえます。
ということで、実際にはこれがもっと多数の変数間で起こるわけですから、どんなにデータをチェックしたところで、今後も矛盾が起こらないことを担保できません。つまり今回作成したモデルを運用できないということになりました。
ではどうすれば良かったか
昨今のAIブームで、事業部側は中身を理解せずに「AIを導入したい」と言います。AIとはどんなものかをちゃんと理解してもらうには一から機械学習について勉強してもらうことになりますので現実的ではありません。
結局、機械学習を作る側が、こういう穴はないかということを隅々まで検討・確認してからモデリング等に移らないと、似たようなことが起こると思われます。しかし、穴がないか検討するには相応の業務知識が必要です。
結局、我々データサイエンティストやMLエンジニアの側もビジネス側に歩み寄る努力が必要で(私は相当歩み寄ってはいたのですが、それでも・・・)、それをしないと痛い目に遭いますよという話でした(おそらくプラットフォーマーだとあまり起こらない?)