前提
「機械学習案件を納品するのは、そんなに簡単な話じゃないから気をつけて」を読んで、機械学習案件を「請負契約」で受注する事があるのか、と驚きました。
もしかしたら、SIerで機械学習に関係せざるを得ない人がいるのかもしれませんので、実際にそれなりの件数機械学習案件を納品している経験から、参考になりそうな事を書いてみたいと思います。
疑問
そもそも 通常のSIer では最初から「機械学習を利用したシステム作成してよ」とお客様から依頼される事があるのでしょうか?
わたしはそのような話をあまり聞いた事がありません。
通常、お客様は「何か解決したい問題」がありそれを解決する時「最近良く聞く機械学習とかはどうなの?この場合使えたりするの?」や「解決方法提案してよ」のような質問がされ、「機械学習」で解決できる内容の場合がある、というパターンがほとんどであるという認識です。
無理やり機械学習利用したい、なんてお客様いないはずです。
もしも依頼時に機械学習を使いたいという依頼があるとしたら、あらかじめお客様側で簡単に実験していたりする場合が多いはずです。
ただ、その場合でもお客様自信は開発の素人ですから、それで問題が本当に解決するか不明な状態です。受注する側もお客様が実際に解決したい事項を理解できているか不明なはずです。
結論
結論から書いてしまえば、SIer で機械学習必要かもという案件を受注しそうな場合、以下を注意します
- お客様の解決したい問題に対して本当に機械学習が必要か十分に検討する事
- 機械学習を中心として考えるのではなく、「操作UI」や「出力帳票」(つまり見せ方)を中心に考える事
- 機械学習開発開始時点では「請負契約」に「しない」事
です。
また、検討初期の流れとしては以下のような流れになります。
理由
それぞれの理由を書いてみます。
お客様の解決したい問題に対して本当に機械学習が必要か十分に検討する事
機械学習が必要そうに見える案件は、「データ解析」案件であるはずです。
「データ解析」案件の多くは「Excel」か「Access」で十分な場合が結構あります。
費用対効果の検討は必須です。機械学習案件は現状時間とお金が結構かかる事を覚悟すべきだと思います。
「操作UI」や「出力帳票」(つまり見せ方)を中心に考える事
機械学習だと「データ」を用意して「推定器」を生成し、「Precision」や「Recall」、「MSE」や「RMSE」と言った評価値で評価する、という事になります。
ただし、「どの値をどのような値にするとお客様の問題が解決するか不明」な場合がほとんどのはずです。
お客様に確認していただくのが大前提です。
たとえば、「Recall」が「0.6」だと低いように感じますが、「TP」の数が十分であれば「半分以上上手くいっている」という事で「問題が解決」する場合もあるのです。
推定器のチューニングが無意味な場合さえありますし、チューングしすぎると問題がかえって解決しない、という事態が発生する事さえあります。
精度がそこまで良くない方が、「お客様の問題解決には」良い事さえ実際にはありえます。
まずは 結果をお客様に見てもらうことを考えて、作成しましょう。
機械学習開始時点では「請負契約」に「しない」事
機械学習は、実際にやるまで上手く行くか不明な場合がほとんどです。「請負契約」は成果物の完成を契約してしまうので、機械学習案件には不向きです。
機械学習部分が問題なく、利用システムを作る部分は請負にしても問題ないと思います。
まとめ
機械学習を必要とする案件の場合、お客様と一緒になって作る様な対応が必要だったりするので、開発しかできない場合には辛いような気がしています。
結局、「顧客との要件検討」が一番重要、というのは何をやっても同じですね。
以上です
書いた人に関して
Tech Fun株式会社スペシャリスト、xza です。
機械学習案件を現在進行系で実施しています。何回も納品をしています。
守秘義務に配慮して一部記述が曖昧になる場合がある事をご了承ください。
この文章は「Tech Fun Advent Calendar 2017」12日目の記事として書きました。