機械学習を活用して異常データを収集しよう

故障や不具合など、異常時のデータから予知保全や製品メンテナンス時期を予測したいと思っても、「異常」時が稀なため、なかなかデータが集まらないということはありませんか?そういう時こそ、機械学習の出番です。


図1:MotionSolveで作成した投てきモデル

異常データの取得

今回は、離れた場所にある的にボールを当てる「的当て」を例にとって説明します。「異常」な状態を作るため、暗闇の中、的があるかどうかも知らない状態で適当にボールを投げているという状況を想像してください。ほとんど当たらないので、当たらない状態が正常、当たる状態が異常になります。まずは、Altair MotionSolveで簡単なモデルを作成します(図1)。

この機構解析のモデルでは、入力として初速の水平成分Vx、垂直成分Vzを変化させることができます。出力として、当たり外れを示すContact(0: 外れ、1: 当たり)、的への最小距離GapMin、玉の最大上昇量DzMaxを得ています。的当てをしているとわかっていれば様子を見ながら調整できてしまうので、ここでは正体不明の入力(Vx、Vz)と、正体不明の出力(Contact、GapMin、DzMax)が数値として得られるが、それらが何なのか分からないと、考えてください。

「適当にボールを投げる」入力値は、DOEの手法の一つHammersleyで100個取得します。Hammersleyでは、ランダムによく散らばったサンプリングが取れます。

機械学習を活用して異常データを収集しよう
4400,0 ≦ Vx ≦ 6600.0
11772.0 ≦ Vz ≦ 17658.0

図2:100通りの投げ方のサンプルをランダムに取得(Altair HyperStudy使用)

取得した100通りの投げ方を入力値としてMotionSolveで計算すると、的に当たる(Contact=1となる)のは7個でした。訳も分からず目隠しして100回ボールを投げると7回は的に当たるようです。

機械学習を活用して異常データを収集しよう

図3:100個中7個が的に当たる(Contact=1)(Altair MotionSolveで計算)

機械学習で幅広い異常データを作成

ここから、いよいよ機械学習の出番です。単純に、的に当たった(Contact=1)ときのVxとVzの値を少し変えた試験を多数行えば、異常値の数を増やすことはできますが、それではデータに幅がでないので今回はその案は取り下げます。

シミュレーションでは入力がVxとVz、出力がContact、GapMin、DzMaxですが、機械学習にとってはただの数字の羅列ですので、入力と出力を入れ替えれば、的に当たるときの投げ方(VxとVz)を逆算できるわけです。今回は機械学習の世界でも有名なRBFモデルという予測モデルを用います。RBFモデルは学習データを全て通過する連続式であるため、Vx、Vzが同じなら何度解析してもContact、GapMin、DzMaxが必ず同じになるので、CAEと相性がとても良いです(逆に現実ではVx、Vzが同じでも何らかの影響で毎回結果が変わるのでRBFは苦手です)。

機械学習を活用して異常データを収集しよう

図4:RBFモデルで予測式を作成(Altair HyperStudy使用)。RBFモデルでは、試験データと予測値が一致します

なるべくいろいろな当たり方をさせたいので、Contact=1に固定して(=当てようとして)再度Hammersley 100回のサンプリングを行います。通常は投げたボールが軌道のピークを通って的に当たる、と考えますが、ここでは、的に当たったボールとその玉がたどった軌道のピークの組み合わせを出しています。GapMinは当たったときの的の中心からの距離、DzMaxは玉の軌道のピークです。

機械学習を活用して異常データを収集しよう
22.0 ≦ GapMin ≦ 65.0
6749.0 ≦ DzMax ≦ 8047.0
※先ほどのHammersleyサンプリングデータで
Contact=1のときの範囲に限定

図5:予測モデル上的に当たるとされるときのGapMinとDzMaxの組み合わせサンプルを100個取得

面白いことに、上のサンプリングで得られた点を予測モデルで投てき方法(Vx、Vzの組み合わせ)を逆算すると、とても偏ったものになります。もちろんこれが的当てであるということを知っていれば、的に当てるには、高く投げるか、速く投げるかのどちらかだというのは明らかなのですが、物理的なことを一切考えない機械学習が同じ結論に至るというのは、面白いと思いませんか?

機械学習を活用して異常データを収集しよう

図6:図5の値を予測式で逆算し玉の出方を計算。高く投げるか早く投げるか、にきれいに分布します

では最後の仕上げです。上のVx、Vzの組み合わせはあくまでも予測値ですから、実際に値を入力してAltair MotionSolveでシミュレーションしてみます。その結果、なんと95/100でContact=1となりました。

機械学習を活用して異常データを収集しよう

図7:100個中95個が的に当たる(Contact=1)(Altair MotionSolveで計算)

ランダムにサンプリングする最初の方法では7/100でしたが、機械学習で予測モデルをつくり、逆算したデータを用いることで、95/100まで異常の発生率を上げることに成功しました。

異常データが増えると、近似モデル精度が上がる

最後はおまけになりますが、「サンプル100個は少ないんじゃないか」「異常データが増えたらどれくらい予測式の精度が上がるの?」という声にお応えして、サンプルを倍に増やし、「ランダムに取得した異常データの予測モデル VS 機械学習で異常データを増やした予測モデル」対決をしてみました。両者が「このボールは的に当たった」と主張する投てきを実際にMotionSolveで計算して本当に当たっているかどうか、正解数を調べます。

下図の100個のVx、Vzの組み合わせを、当たるか外すか判定します。

機械学習を活用して異常データを収集しよう

図8:予測する100個の投てきパターン

■ランダムに取得した異常データの予測モデルの場合

冒頭と同様に投てきパターン200でHammersleyサンプリングを行ってMotionSolveで解析したところ、8/200がContact=1でした(7/100だったので、倍の数投げても1しか当たりが増えなかった…)。そのサンプルでRBF予測モデルを作成し、上の100点について予測させたところ、結果は表1のようになりました。MotionSolveで上の100点を計算すると、83回が的に当たる(Contact=1となる)のですが、この予測モデルでは、そのうち25個を的から外れる(Contact=0)と、誤った予測をしてしまいます。

実CAE Contact=0と予想した数 Contact=1と予想した数
0 (合計 17個) 13 4
1 (合計 83個) 25 58(正解率70%)

表1:8/200 Contact=1サンプルによるRBF

■機械学習で異常データを増やした予測モデルの場合

一方、最初に行ったHammersley 100サンプル(7/100)と、次に行ったContact=1の異常データを予測した100サンプル(95/100)の、合計200サンプル(102/200個がContact=1)のデータでRBFモデルを作り、同様に上の100点について予測しました。今度はなんと83個の当たりのうち、82個を正解しました。

実CAE Contact=0と予想した数 Contact=1と予想した数
0 (合計 17個) 10 7
1 (合計 83個) 1 82(正解率99%)

表2:102/200 Contact=1 サンプルによるRBF

このように、異常データを増やした結果、異常に対する近似モデルの精度も大幅に上げることができます。

今回のお話はここまでです。異常データを収集したい、異常に対する近似モデルの精度を上げたい、というときには、機械学習の活用を検討してみてください。

5 2 votes
Article Rating

カテゴリー: データアナリティクス

Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments