機械学習において解析者の『精神的負担』を下げる3つの方法
株式会社キカガクを起業して約2ヶ月が経ちました。
この2ヶ月間でキカガクのセミナー等のイベントにお越しいただいた方はなんと約450名。
これまでの人生で、私自身を目的として450名の方とお会い出来るとは思っておりませんでしたので、非常に嬉しいことです。
これは、私自身への評価も含まれていると思いますが、やはり『機械学習』という技術への注目度の高さが大きく影響しています。
『人工知能』『AI』『機械学習』『ディープラーニング』とバズワード的にたくさんの言葉がマーケティングで使用されています。
「これは本当にAIなのか?」という議論は少し横に置いておくとして、マーケティングウケが良いということは、これらの技術に対して世論は「何かを変えてくれそう」という期待を持っていることの現れです。
私自身の講義で、毎回『とりあえず何かを見つけるために機械学習を導入することは絶対に避けてください』とお伝えしています。
個人的には、受講生の機械学習への期待値を下げてしまって申し訳ないと思っています。
よく企業の方からお聞きするお話を例にあげてみましょう。
『社内にこれまでのログなどのデータが大量に貯まっており、これらを解析したいと考えています。研究用の予算もついておりますし、データにも割りと自由にアクセスできる権限もあるので、これからこれを使って、何かできれば思っています。まず、何から始めれば良いでしょうか。』
曖昧な点が多いなと思った方もいらっしゃるかも知れませんが、こういったご相談は割りと多いですし、実際私が現場で働いていると同じような質問をすると思います。
この質問自体が悪いわけではありません。
ただし、この後この質問の方々が非常に苦労するのは間違いないと思います。
この後どこで、苦労するのでしょうか。
数学の難しい数式でしょうか。
それとも、プログラミングの難しい文字列でしょうか。
そのどちらでもありません。
一番苦労するところ。
それは 落とし所 です。
やはり、何かができると思い込んだ状態で、プロジェクトを推進し始めた際に、結局落とし所が見つからず、一番苦労するのです。
データ解析で必要な数学を覚えることの苦労よりも、一度始めてしまったがゆえに、なにかデータから落とし所を見つけないといけないプレッシャーの方が遥かに苦労が大きく、本人たちを苦しめます。
このように、機械学習はその技術の自由度の高さ故に、解析を行う方々を精神的に追い込んでしまう場合があります。
そんな状況を避けるために、プロジェクト推進の前に、当たり前かも知れませんが、以下の3つをチェックしてから始めてもらえると幸せになれるかと思います。
経験者の方には『釈迦に説法』で申し訳ありませんが、温かい目で見守っていただけると幸いです。
1.『企業価値向上』に繋がるか具体的にイメージできるか?
データ解析を行う人が一番持つべきものは『経営者目線』です。
エンジニアなので、ビジネスとは切り離して考えているという方はぜひ注意してください。
今回の例で出てきた
『社内にこれまでのログなどのデータが大量に貯まっており』
この部分ですが、このデータはゴールではなく、このデータは機械学習でいう『入力X』に相当します。
つまり、このデータだけから何かを見出すというのは問題設定としては間違っています。
予測したいものは『データ』から決まるのではなく、何を予測すれば『企業価値が向上するか』といった経営者の課題目線で決まるものです。
『このデータ(入力X)をどう料理すれば良いですかね?』
ではなく、
『こんな注文(出力Y)のお客さんを満たしたいので、この手持ちのデータ(入力X)をどう調理すれば良いですかね?』
と考えることができれば、うまくいくための第一歩です。
2.『前処理』を甘く見積もらない
機械学習を導入し始めると、解析の花形である(と初心者が思いがちの)『モデル構築』に早速取り掛かろうとしますが、結局のところデータがちゃんと揃ったり、綺麗に整理(データクレンジング)されていないと、解析を行うことができません。
こういったモデル構築の前にする操作を(広義ですが)『前処理』と呼びます。
『前処理』という名前から甘くみられがちですが、実際に解析を経験している方は
『前処理に全体の8割程度の時間を費やす』
と話されます(個人的にも納得です)。
この事実は業界の方であれば周知の事実ですので、ここではそこについて議論することはなく、伝えたい大事なことは、作業の見積もりに前処理を盛り込み、解析を進める際の『上司』にそれを伝えておくことです。
解析することが初めての案件であれば、みんなが解析結果に期待を大きく持っています。
そうなると、毎日このように聞かれます。
上司:『どう?解析結果は出た??』
この言葉が、解析者を非常に苦しめます。
あなた:『解析を始めるために必死に、その前処理をやっている段階なんだから、まだ結果が出るわけないだろう。。。』
と思われるかもしれません。その通りです。
今回の失敗は、『上司』に前処理という地味だけれど非常に大事な処理があることを伝えておらず、まず解析すれば何かの結果が出ると勘違いをさせてしまったことです。
それぞれの立場に立つと、どちらも悪気はなく、プロジェクト推進に対して本気で取り組んでいるため、どちらが悪いというわけではありません。
そこで、お互い失敗しないため、前処理の見積もりを甘く見積もらず、上司に先に伝えておくようにしましょう。
そうすると、
上司:『どう?データのクレンジングって結構大変?それとも特徴量見つけるのが結構大変かな?』
あなた:『そうですね。案外思ってたよりデータに欠損値が多くて、まずここ補完できるようにがんばりますね。』
上司:『お、いいじゃん。またその現場で絶対使える知識教えてよ。』
あなた:『はい!』
と、うまくコミュニケーションがとれるイメージがわきます。
3.『ゴール』を定量的に定義する
前処理が終わり、モデル構築を行い、そのモデルの精度を検証する。
これが、データ解析の一連の流れです。
上司を説得して『前処理』の大事さを理解してもらいました。
キカガクのセミナーを受けて、Pythonを使ってモデル構築ができるようになりました。
そして、キカガクのセミナーで教えてもらったモデルの検証方法で、構築したモデルの妥当性を検証できるようになりました。
たとえば、このモデルは識別率が、検証用データに対して『80%』でした。
ここまでの手順についてはお伝えできますが、この80%が良いか悪いかは業界に寄ります。
もし、医療の業界であれば見落とすのはご法度であるため『80%』は所望の性能が出ていないことになります。
それに対し、人手ではほとんどクラス分けできておらず、リスクの低い業界であれ『80%』も正しくクラス分けできるのであれば、非常に良い成果と言えます。
そのため、『業界の相場』そして、見落としたときの『リスク』、『コスト削減』への効果など、『現状がどの程度か把握』し、それに対して、『目標とする値』を定めてから始めてください。
このゴールが定まっていないと、モデルの検証を行っても、結局それで終わって良いのかがわからず、データ解析者の精神的負担になります。
上司:『解析結果の検証できた?』
あなた:『はい。今回の結果は識別率が95%でした。いかがでしょうか。』
上司:『今回の目標が93%以上だったからオッケー!上出来です!』
あなた:『ありがとうございます!』
まとめ
データ解析は見えない関係性との戦いが故に、解析者の精神的負担が大きくなりがちです。
極力負担を小さくするために、基準を定めることで、この負担を小さくできるため、今回ご紹介した3つは大事だと考えています。
ゴールが決まればモチベーションも高まりますので、ぜひ色々なことに挑戦してみてください。
長文、お読みいただき、ありがとうございました。
株式会社キカガク
代表取締役社長 吉崎 亮介