皆さん、こんにちは!ゆたろです。
IT企業で働きながら、機械学習とAI導入のコンサルティングに携わっている私が、
今回は実際のプロジェクトでの経験をもとに、機械学習を難しくするデータについてお話ししようと思います。
機械学習に必要なのはデータの「質」と「量」のバランス
機械学習プロジェクト成功させるためには、データの品質、つまり「質」と「量」が伴っていることが非常に重要です。
”データはたくさんあるから心配しなくてもいい”
と自信たっぷるに仰るお客様。
しかし実際にデータを見せてもらうと量だけたくさんあっても「質」が全く伴わないデータであることがよくあります。
「量」については単純にデータの行数やレコード数で言い換えることができるので判断が簡単ですが、「質」については少しやっかいです。
ただ単に、データの列数が多ければよいか?というとそうではありません。
実際にはデータを初期分析することが必要であり、以下の内容を確認して初めて「質」の判断ができます。
- レコード数(行数)、カラム数(列数)
- 異常値/外れ値の有無
- 欠損数
- ヒストグラム、散布図
等々
そもそも、データを蓄積する目的が機械学習に役立てたいから、というケースは稀だと思います。
たいていの場合、ログや履歴を残したい、後からトレースできるようにしたい、といった業務上の理由でデータを溜めこんでいることでしょう。
なので最初から良質なデータである必要は全くないわけですが、いずれは良質なデータを取捨選択する必要がでてきます。
その際にある程度データ量がないと質の確保ができなくなってしまうんですね。
したがって、「質」と「量」のそれぞれが伴っていることが機械学習プロジェクトを有利に進める条件であると言えます。
しかし、現実にはあるデータが機械学習に適していない場合もあります。それについての実例をいくつか挙げてみたいと思います。
実例1: 不足データが招いた期待の失墜
以前、ある製造業のプロジェクトで、機械学習を導入して品質管理の効率化を図ることになりました。
しかしながら、収集したデータは一部欠損しており、部品の一部について情報が不足しているデータとなっていました。
この不足したデータに対してモデルを作成してしまうと、データの不足している部品に関する品質の予測精度が極端に落ちてしまい、予測モデルへの信頼性を失います。
結局、他の部分ではある程度の精度が出ていたとしても、一部の部品については人間が工数をかけて調べる必要がでてしまい、「機械学習って微妙だな」というイメージが現場(予測モデルを使う人たち)に漂うことになります。
一度期待や信頼を失うと、予測モデルを改善をしようにも現場の協力が得られず、本格的にプロジェクトは終焉を迎えることになります。
ここでの教訓としては2点、
- 予測モデルを作成する前にきちんとデータを分布を確認し、偏りや欠損の有無を把握して対処しておくべきたった
- 予測モデル作成時、きちんとモデルの精度評価を実施して予測結果からデータの不備がなかったかを調査しておくべきだった
ということで、同じ失敗はしないようにしましょう!(自分への戒め)
実例2: センサーデータの敵はノイズ
別の製造業でのプロジェクトでは、設備のセンサーデータを活用して故障予測を行いたいというテーマでした。
センサーデータということで、数秒ごとに取得されるデータなので量については申し分ない、むしろ多すぎて困るくらいという感じです。
しかし問題は質です。
実際にデータを波形にして傾向を確認してみると、恐らく稼働中に発生するであろうノイズを大量に含むデータとなっており、ノイズに真実(知りたいの設備の挙動)が埋もれてしまうようなデータとなっていました。
当時の私は、ノイズの影響がここまで大きいとは知らず、そのままデータを使って予測モデルを作ってしまったんですねぇ…
もちろん結果は精度の悪いモデルが出来上がりました。
お客様には「センサーデータは扱いが難しいので、これ以上精度を出すのは難しいですね」と苦し紛れの言い訳をして乗り切ります。
実際、センサーデータのノイズの対処法は非常に厄介です。また、時系列データということも分析を難しくしている要因となります。
さて、ここでの教訓は次の通りです。
- ノイズを適切に処理しなかった(平均化する等、当時は知らなかったもんでして…)
- そもそも、ノイズの傾向やむしろ存在しているということすらちゃんと確認しなかった
センサーデータは時系列データでもあるので、周期性やトレンドといった要素を分析することが肝となります。
やはりまずはノイズを適切に処理してからでない何が真実なのかボヤけたまま分析を進めても何もいいことはありませんね。
実例3: そのデータ、混ぜると危険
こちらの例も製造業となります。
やりたいことは製造工程において複数の材料と製造条件を組み合わせて、出来上がる製品の特性値を予測したという内容のテーマです。
これまでの製造履歴ということでデータ自体はたくさんありました。
どれどれとデータを見てみることにして、まずはざっとヒストグラムを確認すると…
あれよあれよときれいに二つの山が出来上がるようなヒストグラムが出てきました。
この妙な傾向についてお客様とディスカッションするも原因はわからず仕舞い。
仕方なくそのまま予測モデルを作成して予測結果を見てみると、やはりきれいにヒストグラムの山に応じて結果が分かれるんですね。
これはおかしいと現場の担当者にヒアリングをしてきてもらい、データの状況を調査してもらうことにしました。
すると現場担当者はちゃんと答えを持っていたのです。
なんと同じ材料だけどロット番号が異なる2種類の材料が混ざっているのにそれがデータに反映されていなかったんですね。
要因分析でよく見るあるあるの結論なのですが、外部から買ってくる材料が時期やロットにより微妙に異なっており、最終的に製品の特性に影響を与える問題だったんですね。
結局、途中から特性値予測どころではなく要因分析にテーマがすり替わってしまった、という事例でした。
ここでの教訓は、
- データで変なところを見つけたらすぐに現場(データに詳しい人)に聞きましょう
- 機械学習は使い方によっては要因分析の武器になる
というところでしょうか。
今回の事例のように、データから調達段階の材料に原因があるとわかったところで、サプライヤー側の問題なのですぐに対応することができないのがまた難しいところなんですよねぇ
まとめ
事前にデータを可視化し、理解することは本当に重要です。この見極めるができるかどうかがプロジェクトの成功に繋がります。
今回ご紹介した実例からも分かる通り、失敗は成功への近道です。
データサイエンティストの卵の皆さんはどんどん失敗していき、これらの経験を積んでいきましょう。
こんな内容が少しでも皆様のお役に立てば幸いです。
コメント