どうも、リンです。AIベンチャーでお仕事をしております。
機械学習ブームも一端落ち着きましたが、今でも「そろそろウチのチームでも機械学習を活用しようか」と重い腰を上げようとする企業も増えています。
大学の研究であったり、企業での実務でも機械学習を取り入れたい需要は高まり続けていますね。
しかし機械学習は奥が深く、甘い考えではプロジェクトは失敗してしまいます。
実際に機械学習のコンサルタント業務をしておりますが、多くの企業やチームでは「機械学習で何でも解決」という認識をしています。
おそらくそのような企業は独自に分析を進めても絶対にプロジェクトを失敗させるでしょう。
機械学習でプロジェクトを失敗させないようにするためには、
- 機械学習のデメリット面は何か
- 機械学習が活用できる状況はどのような時か
- どのようなデータセットを準備するべきか
- どのように分析を進めるべきか
最低でもこの辺りは完全に把握をしてからプロジェクトを始めましょう。
そこで今回は「機械学習でプロジェクトを失敗しないために最小限知っておくべき事」を紹介していきます。
機械学習を活用する場合の注意点
機械学習を取り入れると考えたチームに、まずお伝えしたいこと5項目を書き連ねます。
おそらくこの5項目を意識してプロジェクトを始めれば成功確率はグンと上がると予想されます。
機械学習は諸刃の剣【重要】
まず最重要項目です。
機械学習はメリットだけではありません。当然ながらデメリットも存在します。
よって機械学習プロジェクトを成功させるためには、デメリットを含んだ以下の項目を考える必要があります。
機械学習の認識を深める
機械学習で何でも解決!
人間には分からないことも全部機械学習が何とかしてくれる!
テキトーなデータさえ用意すれば機械学習が画期的な働きをしてくれる!
このように考えている企業・チームは後を絶ちません。
機械学習には得手不得手が存在します。よって機械学習について認識を改めておく必要があります。
まず機械学習は基本的に「予測」しかできません。
何でもできるんでしょ?顧客データから売り上げを伸ばす新サービスを提案して!
↑は機械学習にはムリです。
機械学習が「金曜日は甘いものの売り上げが上がると予測」→金曜日は甘味のプロモーションを増やそう。など予測を利用したサービスを人間が考える必要があります。
機械学習を用いる際は「予測で役立てることはできるか?」を念頭に置くべきでしょう。
予測で役立つことがあるよ!データはテキトーにかき集めた!これで機械学習プロジェクトを進めよう!
これも危険です。データはテキトーに与えればいいわけではありません。
一番良い状況は「頑張れば人間でもパターンを掴めそうだが、データ数が多すぎてを予測は非現実的。そしてベストな予測手法が思い浮かばない」です。
これならば機械学習は大いに役立ちます。
ダメなパターンは「テキトーにデータ与えれば自分たちが思い浮かばない画期的なパターンを発見するだろう」ですね。この状況は確実にプロジェクトを失敗させます。
綺麗なデータだけど情報量が多すぎる!人力で分析が難しい!
このような状況はかなりチャンスだと考えた方がいいですね。
コストとリターンを考えるべき
機械学習にもコストが存在します。主に時間的コストが掛かる場合が多いです。
機械学習の検討に時間が掛かるんでしょ?そのくらいなら支払ってもいいかもな。
と考える人が多いですが、これも誤りです。
- データ収集→5割
- データ加工→4割
- 機械学習構築+評価→1割
機械学習プロジェクトは、このくらいの割合で時間が掛かります。
データ収集+加工の工数がメチャメチャ掛かるんですよね。
慣れた人なら機械学習の検討はすぐに出来ます。最近は機械学習自動化ツールもありますからね。
データ収集+加工の膨大な時間を支払ってまで「予測によるリターン」を得たいでしょうか?
その時間を利用して試行錯誤を繰り返す方が安上がりでしょうか?
機械学習のコストとリターンを考えてみてください。
意思決定根拠もブラックボックスと化す
案外無視されがちな問題が「ブラックボックス化」です。
機械学習の計算方法は基本的に人力で追うことは不可能です。
最近流行りのニューラルネットワーク・ディープラーニング・ブースティングなどは全く中身を追えません。
なぜこのような予測結果が出たんだ?
という当然の説明責任を果たせなくなってしまいます。
また、機械学習の予測が上手くいかないときにその理由が分からなくなります。
何のデータを足せばいいのかは人間が判断する必要があるので、試行錯誤の繰り返しになるのです。
よって機械学習プロジェクトは
- 不明瞭な要因解析の試行錯誤を繰り返す
- 完成したモデルを仮実装して信頼を勝ち取る
このように進める必要があります。
思っていたより面倒くさそうですよね?
説明変数は足りているか?【重要】
とりあえずデータセットを作ることが先!
データの中身はテキトーに決めてまずは作り始めよう!
という考えは危険です。
データセットには予測させたい値の根拠になるデータ(説明変数)が必要になります。
「明日の天気」を予測させたいとしたら、説明変数は「昨日の天気・気圧・気温・天気図の情報」などですね。
この説明変数を用意するのが非常に面倒なので種類を削減してしまうチームが多いです。
深いドメイン知識が必須
機械学習を改良するにあたり、説明変数は非常に貴重な存在です。
説明変数一つ一つの意味を理解して、他の説明変数と組み合わせることで精度を上げていきます。
このようなドメイン知識(データの背景)を基に機械学習プロジェクトを進める必要があります。
データセットは後から説明変数を追加することが難しいです。
よって、データセット作成時の説明変数の種類で勝負することになります。
あなたが予測させたい値は、現状の説明変数で説明できるでしょうか?
機械学習は万能ではありません。
まぁ勝手にパターンを掴んでくれるでしょ
これでは無理です。もっと分かりやすく正確な説明変数を吟味してからデータセット作りを開始しましょう。
交差検証を必ず行う【重要】
少しテクニカルな話題ですが重要です。
交差検証という言葉をご存じでしょうか?もし知らないのであれば100%プロジェクトが失敗しますので必ず調べましょう。
↑こちらの記事で詳しく解説しています。
↑こちらの記事でも交差検証を説明して、警鐘を鳴らしております。
交差検証とは、簡単に言うと「ちゃんと未知のデータで予測精度を評価しましょう」ってことです。
機械学習に詳しくない方がモデルを作ると、必ず「既知のデータで予測精度を評価」してしまいます。
これは非常に陥りやすい罠ですし、既知のデータを使うと表面上の予測精度が爆増するのでプロジェクトのミスリードに繋がるんですよね。
機械学習チームの皆様は「交差検証」という言葉の意味を必ず理解するようにしましょう。
データ数は足りているか?
続いて「データは足りているか?」に着目しましょう。
データが大量に手に入る場合ならば問題なしなのですが、1つのデータを手に入れるコストが非常に高い場合もありますよね。
そのような場合は後からデータを足すことが難しいので、少ないデータ数での勝負になります。
そのような場合、正直機械学習はオススメできませんが何らかの知見は手に入るかもしれません。
一方でやはり大きなデメリットがあるので、理解を深めておく必要があります。
データ数が少ないときのデメリット
「データ数が少ない」とはデータの構造に寄ります。
単純なフラットテーブルでのデータなら500個程度は欲しいですね。
画像データならば1000枚ほどですかね。
これはデータ構造により超バラツキがあるので、あくまで目安としてください。。
例えば「説明変数と予測したい値が正確な線形関係にある」などの場合ならデータは少なくてもいいですし、複雑な関係ならもっとデータ数が必要です。
デメリットを簡単に挙げていきます。
あくまで私の経験上こんなデメリットがあると感じただけですが。
結構絶望的ですよね。
データはパッと準備できるから、少しでも知見が欲しいな。
って場合はデータ数が少なくてもトライする価値はあると思います。
偏ったデータになっていないか?
最後に作り上げるデータセットは偏ったデータにならないか?を注意しましょう。
機械学習モデルは偏ったデータが苦手です。(クラスタリングを除く)
なるべく均質にランダムなデータを集める必要があります。
偏ったデータとは何かと言われると、これは判断が難しいです。
例えば「成功例だけをデータとして残している」状態も偏っていると言えます。
機械学習的には「失敗したデータ」も重要な情報になります。
失敗例と成功例両方のデータを与えることが予測精度向上には重要ですね。
ウチは諸事情で偏ったデータしかないよ・・・
という場合は機械学習的に大きなマイナス要素になることに注意してください。
同じデータが存在しないか?
割とやりがちですが、同じデータが存在しないかをチェックしましょう。
研究や開発では、「念のため取った二重のデータ」などありますよね。
それを両方ともデータセットに入れると機械学習モデルは「この値さっき見たわ」と言って不当に高い予測精度を出してしまいます。
同じデータの場合は結果を平均して1つのデータに集約するようにしましょう。
まとめ
機械学習プロジェクトを始める前に注意すべき点を挙げました。
正直言うと、事前に何かしらの機械学習モデルを構築したことがないとプロジェクトを進めるのは厳しいと思います。独特なカンコツがある分野ですので。
プログラミング初心者が機械学習を実装するまで、最短経路で突っ走る教材も用意しています。
ひとまず一度実装してみてカンコツを学ぶのが最適ではないでしょうか?
↓↓↓
機械学習完全マスター教科書販売中です(980円[期間限定]:コード抜きで24350文字の教科書です)
pythonの一般的な教本と一味違い、
- 第一に機械学習を最短経路で「実装」できる
- 第二に詳しい原理が理解できる
これらを重視して執筆しました。
普通の教本の1/4くらいの値段ですし、誰かに紹介すれば半額の紹介料が入るのですぐ元は取れます
★★★★★この価格でこのクオリティは凄すぎる
大学生ですが、これをつかって実験のレポートのデータ解析などにもつかえそうだと思いました! また、値段が安すぎて恐縮してます汗 凄すぎる…
レビュー欄より
↑こんなコメントも頂きました!ありがとうございます(泣)
お役に立てて、必死に執筆した甲斐がありました(泣)(泣)
レビューはモチベに繋がるので、順次追記してコンテンツを増加していきます!乞うご期待!
追記[2020/03/14]:コンテンツ追加しました。
- ランダムフォレスト&LightGBM内部計算の可視化方法
- 内部可視化を基にした原理解説
- 学習の進行による予測分布の変化
- マテリアルズインフォマティクスへの活用方法
Python初心者であれば更に理解が深まり、玄人でも更なる原理や挙動の知見を得ることができるようになりました!
是非一読あれ~
↓リンク
コメント