ビジネスの現場で機械学習を使う場合、問題設定は非常に大事です。
アルゴリズムの取捨選択も大事ですが、問題設定も同等、もしくはそれ以上に重要だと思います。
理由は、問題設定は基本的に人間にしかできないタスクであり、人間でもできる人が限られるからです。
Kaggleの影響もあり、アルゴリズムに詳しい、また、データクレンジングに慣れている人は最近かなり増えてきたように見えます。
一方、Kaggleで出題されるものは問題設定が既に済んでいるものが多く1、どれだけKaggleに取り組んでも問題設定能力を身に付けることは難しいと思います。
例えば、
- 金融機関の融資審査
- その人にお金を貸してよいか?貸さないほうがよいか?を審査する
- テキスト(例:ツイート、投稿)のポジネガ判定
- テキストがポジティブな内容か?ネガティブな内容か?を判定する
など解くべき問題が既に明確な場合は必要ありませんが、
- ECサイトの売り上げが減っているので、機械学習を使って何とかしたい
- データが大量にあるので機械学習が使える気がするけど、どこから手を付けて良いのか分からない
- 機械学習を使って複雑な業務フロー(オフラインの業務含む)を改善したいけど、どこに機械学習が使えるのか分からない
という場合は適切な問題設定ができるのか?機械学習が解けるまでに問題を明確化できるのか?が最初の関門になります。
例えば、「ECサイトの売り上げが減っている」という場合においては、
- 客数が減っているのか?
- 客単価が減っているのか?
- 購買回数が減っているのか?
- 1回当たり購買金額が減っているのか?
のように問題を切り分けることが必要です。切り分け方は様々な軸が考えられ、絶対的な正解というものはありません。
そして、「購買回数の減少」が一番の問題であれば、
- 購買回数を増やすために配信するメールでレコメンドする商品を決める
- 購買タイミングを予測し、購買の取りこぼしが発生しないようにする
のように解くべき問題を明確化できる、つまり、適切な問題設定をすることができます。
適切な問題設定をするためには?
適切な問題設定をするために、意識しておいた方が良いことが幾つかあります。
これらの点を意識しておけば、適切に問題設定できる可能性は高まると思います。
1. 分類問題、もしくは回帰問題に帰着させられるか?
当たり前ですが、機械は数値しか扱うことはできません。
機械学習においても、入力は数値である必要があり、出力も数値である必要があります。
分類問題においては、二値分類の場合は出力を0
か1
、N値分類の場合も出力を0
、1
、…、N
のいずれかにしているに過ぎません。
回帰問題においては、出力が離散データではなくて連続データとなりますが、数値であることに変わりはありません。
出力が数値である必要があるということは、逆に言えば、出力を数値に落とし込むことができればその問題は分類問題、もしくは回帰問題に帰着させることができ、それはつまり機械学習で解ける可能性があるということです。
2. 問題を解決した場合、デメリットよりもメリットの方が大きいか?
多くの場合、「掛かったコストよりも生み出される利益のほうが大きいか?」に置き換えることができます。
「掛かったコスト」には機械学習のロジック開発やシステム構築に掛かった人件費やサーバ代などが該当し、「生み出される利益」は削減された人件費や増加した売り上げなどが該当します。
3. 問題の解決に必要なデータセットは揃っているか?
機械学習に必要なデータセット(「教師データ」や「学習データ」とも呼ぶ)を用意できるか?ということです。
ひとまず機械学習を試してみようと思っても、
- 直近のデータしか保存していない
- 重要なデータが保存されていない
- ある程度の期間の必要そうなデータが保存されているけど、ノイズがたくさん混ざっている
- 正解ラベルを全てゼロから作る必要がある
ということは頻繁にあります。
そして、解決しようと思っても、すぐに解決できない場合が多いです。
データセットについてさらに知りたい方は、機械学習のデータセットの重要性などをご覧下さい。
適切な問題設定ができるようになるためには?
それでは、適切な問題設定ができるようなるためには何をすればよいのでしょうか?
人により考えは異なるかもしれませんが、私は下記の二点が大事だと考えます。
1. 経験を積む
経験を積めば、前記の
1. 分類問題、もしくは回帰問題に帰着させられるか?
に対する嗅覚が上がると思います。
機械学習絡みの分析案件を色々と経験すると、この案件は過去のあの案件に似ているので、問題設定はこうすれば良さそう、または、適切な問題設定ができないので機械学習の導入は見送ろうと判断できる事があります。
もちろん、過去に似たような案件がない場合もありますが、様々な事例を経験しておけば勘所が何となく分かるということはよくあります。
事業会社で多種多様な分析案件を手掛けることができない場合は、
- 勉強会や学会で他社の取り組み事例を聞く
- ブログやネット記事で他社の取り組み事例を読む
というのがオススメです。アルゴリズムの部分だけを取り上げた発表や記事もありますが、問題設定の部分の難しさや苦労を紹介したものも少なからずあります。
2. 事業ドメインに詳しくなる
事業ドメインに詳しくなれば、前記の
2. 問題を解決した場合、デメリットよりもメリットの方が大きいか?
3. 問題の解決に必要なデータセットは揃っているか?
に対する感度が上がる思います。
事業ドメインに詳しくなるということはコスト構造の把握に繋がり、メリットとデメリットの比較が容易になります。時には、数値化できないリスクの存在に気付くこともできます。
また、事業ドメインに詳しくなれば、
- このデータは機能Aの裏側で取得している
- このデータは会員登録の項目に入っていないので、きっと取得していないだろう
という当たりが付きやすくなります。
-
問題設定が済んでいるからこそ、Kaggleに出題することができる。 ↩