MatrixFlowMatrixFlowお役立ち記事

総合情報サイト / お役立ち記事 / 故障すると予測される機械を分類するAIの作成方法

故障すると予測される機械を分類するAIの作成方法

はじめに

今回はMatrixFlowを用いて、分類という予測方法で機械の故障を予測するAIを作成します。
AIを作成するのは難しく感じるかもしれませんが、MatrixFlowでは、プログラミングの知識がなくても直感的にAIを作成することができます。
実際にデータを使ってAIを作っていきましょう。

 

◆目次
1. 題材と分析手法の説明
2. プロジェクトの説明
3. AIを作成する流れの全体像の説明
4. データセットの説明
5. 予測する列の選択
6. 前処理
7. レシピ
8. 学習
9. 学習結果
10. 推論
11. まとめ

 
 

1. 題材と分析手法の説明

今回の記事では、プログラミングを使わずにAIを作れるMatrixFlowを使って、トラックの「空気圧システム(APS)」の故障を予測します。
APSはタイヤの空気圧をセンサーから取得することができます。
しかし、そのセンサーに不具合や故障があると人命に関わる事故に起きるかもしれません。
そのため、AIを使ってAPSの故障を予測することは、事故を未然に防ぐために重要なことです。

ちなみに今回のAIでは分類という手法を用います。
分類とは、予測対象のデータがどのグループに所属するのかを判断する手法です。
この手法では、AIは分類アルゴリズムを用いて、特定のグループの共通点を識別します。
そして、それらの共通点と予測対象のデータを比較し、特定のグループに属するかどうかを判断します。
この結果によって、同じ傾向を持つグループへの施策を考えることができます。
例えば、共通項を持つグループへのマーケティングを考えたり、故障しやすいグループへの改善策を考えたりすることができます。

2. プロジェクトの説明

MatrixFlowではまず初めに「プロジェクト」を作成します。
「プロジェクト」とは、MatrixFlowで作成したAIを管理する単位のことです。
プロジェクトの中にはAIの作成に使用したデータや作成したAIを保存することができます。

3. AIを作成する流れ

ここでは、AIを作成する全体的な流れを簡単に説明していきます。
まず、AIを作成するにはデータセットが必要です。AIはデータセットのデータをもとに学習や予測をしていきます。
次にどの列をAIに予測してもらいたいかを選択します。ここで選択しなかった列は、AIが予測をするときの判断材料となり、どのくらい重要な判断材料だったかを学習結果で比べることができます。
そして、AIが利用できるデータの形にするために、データの前処理を行います。前処理では欠損値の修正や文字のデータの数値化をすることができます。
データの準備ができれば、レシピの作成を行います。レシピは、AIが処理を行う手順を示すもので、MatrixFlowではブロックとブロックを結ぶだけで作成することができます。
最後にAIに学習をさせます。AIの学習が完了すれば、学習結果を確認したり、推論を行ったりすることができるようになります。
ここまでがAIを作成する大まかな流れでした。

では、さっそくAIを作成していきましょう。

MatrixFlowにログインし、「新規プロジェクトを作成する」からプロジェクトを作成します。

今回は自分でAIを作成していくので、「自分でAIを構築する」を選択します。

プロジェクトの名前と説明を記入し、必要であればタグを追加しましょう。

4. データセットの説明

次に、データセットの設定をします。

データセットは分類したい列とそれに関連した列を含んだデータを用意しましょう。予測対象の列以外のデータは、AIの判断材料となり、学習結果で重要度(予測結果に影響を与えた度合い)を確認することができます。

今回扱うデータは、UCI Machine Learningが提供する「Air pressure system failures in Scania trucks」です。

ダウンロードしたデータの中身は以下のようになります。

データの列を確認すると、indexは「索引」を指し、classには「pos」と「neg」という値が入っていることがわかります。
「pos」は、ポジティブを意味し、APSに関わる部品の故障の状態のことです。一方で、「neg」はネガティブを意味し、APSとは関係ない部品の故障の状態のことです。
そして、indexとclass以外のデータは匿名化されており、どの列がAPSの故障に関わるセンサーなのかどうかわかりません。
今回はこれらの匿名化されているデータが、MatrixFlowでAPSの故障に関わるセンサーなのかどうかを分類していきます。

データの準備ができれば、使用したいデータセットのファイルをドラッグ&ドロップで、アップロードします。

「データセットをアップロードする」をクリックし、データセットの設定は完了です。

5. 予測する列の選択

AIに予測してもらいたい列の選択を行います。
今回は匿名化されているデータがAPSに関係する故障なのかを判断するため、「class」を予測します。
ここで選択した列が、学習結果では予測結果として表示されます。

ただし、AIは数値の予測しかすることができません。そのため、予測したい列が日本語などの文字の場合は前処理で数値化する必要があります。また、時系列や日付は予測する列として選択することができないので、注意しましょう。

今回のAIで予測してもらいたいclassは「pos」と「neg」の文字で形成されています。そのため、予測する列の選択画面で、「class」を選択すると「選択をした列は前処理が必要な列です」と表示されます。
ここでは「注意事項を確認した」をクリックした後、「予測する列を決定する」をクリックすることで、「class」を予測する列に選択することができます。
ただし、「class」への前処理はまだ完了していないので、次の画面で前処理をしていきます。

6. 前処理

AIが利用できる形にデータを加工することを前処理といいます。
今回のデータでは、「neg」や「pos」といった文字列をそのまま扱うことができません。そのため、これらの列を数値化しましょう。

まず、前処理をしたい「class」にポインターを持っていきます。
すると、虫メガネのマークが表示され、「前処理内容の変更」をすることができます。

虫メガネのマークをクリックすると、「列の詳細」を見ることができます。
今回は数値化の中でも、「ラベルエンコーディング」を選択します。
ラベルエンコーディングでは、「neg」が「0」、「pos」が「1」に変換され、AIが「class」の値を数値として扱うことができるようになります。

「class」を数値化できれば、「列の詳細」の横にある左矢印をクリックし、前処理の画面に戻ります。
そこから「前処理を完了する」をクリックし、前処理の保存を行います。

他に使用したいデータに欠損値があったり、数値化したりする必要があると前処理を行わなければいけません。詳しい操作方法はこちらのマニュアルで確認することができます。

7. レシピ

ここからはAIの設計図となるレシピを作成していきます。

MatrixFlowでは自分で1からレシピを作ったり、テンプレートのレシピを使用したりすることができます。どちらの方法でもドラッグ&ドロップをするだけでレシピを作ることができるので非常に簡単です。

今回は自動で最適なアルゴリズムとパラメータを選択してくれる「AutoFlow」を使用します。
AutoFlowは「自動構築AI(AutoML)」から選択することができます。
このAutoFlowを右側の設置エリアにドラッグ&ドロップします。そして、AutoFlowのブロックを最初からある「データの入り口」と「精度評価」のブロックと繋ぎます。
ブロック同士の繋ぎ方は、ブロックにポインターを合わせて、ピンクの丸から繋ぎたいブロックまで引っ張るだけです。

AutoFlowには、分類と回帰の2種類があります。
AutoFlowを選択すると右側のパラメータが現れるので、種類が「分類」になっているかを確認しましょう。

「データの入り口」→「AutoFlow」→「精度評価」の3つを繋げることができれば、「レシピを保存する」をクリックします。

レシピの「名前」と「説明」を入力して、レシピの作成は終了です。

8. 学習

学習ページでは学習に使用する列を選択します。

今回はすべての項目にチェックボックスをチェックを入れます。

これで学習準備は完了です。
「学習を実行する」をクリックして、AIの学習をスタートさせましょう。

数分後に結果が表示されました。
このAIはMatrixFlowが最適なアルゴリズムとパラメータを使用して作ったものです。学習結果は次のパートで詳しくみていきます。

9. 学習結果

学習結果ではAIの精度評価やそれぞれの列の重要度・影響度を見ることができます。
順番に学習結果の見方を一緒に確認していきましょう。

まず、学習結果の画面から精度評価をクリックしましょう。
すると、
①テストデータ正解率
②適合率
③再現率
④F値
⑤AIの精度のグラフ(混合行列)
の5つの指標を確認することができます。

18_精度評価_1

①テストデータ正解率とは、テストデータの中で、AIが予測した結果がどれだけ正しいかを示す評価指標です。
今回のプロジェクトでは、テストデータの「class」の実際の値とAIが予測した値が95.0%一致していると示されています。
②適合率とは、AIが真と予測した値のうち、実際のデータが真を示す割合のことです。すなわち、適合率はAIの予測データが正解のデータとどのくらい一致しているのかを表わす「正確性」に関する評価指標です。
今回のプロジェクトでは、「neg」を前処理で「0」に設定しました。真は「0」を指すので、AIが「neg」と予測した値の98.0%が「neg」であったということになります。
③再現率とは、学習データで真の値を示すもののうち、AIが真と予測した割合です。これは正解のデータをどのくらい網羅的に予測できているかを示しています。
今回のプロジェクトでは、「neg」の値のうち、96.2%をAIが「neg」と予測することができています。
④F値とは適合率と再現率の調和平均です。すなわち、正確性を示す適合率と網羅性の再現率のバランスがとれているかを示す指標になります。F値は0~1.0で示され、1に近いほどバランスが上手くとれているといえます。
今回のプロジェクトは0.971を示しており、1.0に近いため、適合性と再現率のバランスが上手くとれているといえます。
⑤混合行列は、正解の値とAIが予測した値を縦軸と横軸に分けたマトリックスです。
今回のプロジェクトは、「正解の値、予測の値」が「0,0」「0,1」「1,0」「1,1」に分類されており、それぞれ50,2,7,1個あることがわかります。すなわち、AIが上手く予測できていない「0,1」「1,0」は合計で3件しかないことがわかります。

以上のことから、今回のプロジェクトのAIはとても精度が高いといえます。

次に個々の列の重要度・影響度をみていきます。

学習結果の画面から重要度を選択します。
重要度とは、学習に使用した個々の列が予測する列に対してどの程度影響を与えたかを示す指標です。
「重要度の高い説明指数」という欄をみると重要度が高い列のランキングをみることができます。
今回のプロジェクトでは、「dn_000」「ay_006」「am_0」の順番で重要度が高いことがわかります。
そして、「表示する説明変数」を設定すると、その列の具体的な予測した列への影響をみることができます。Y軸は予測結果に対してマイナスとプラスのどちらに影響を与えているかを表し、X軸はデータセット内の値を示しています。
上記の画像では、「dn_000」の重要度の分布を確認できます。50000ぐらいまではマイナス方向への影響がありますが、それ以上の値になるとプラスの方向への影響があることが見て取れます。そのため、「dn_000」が50000ぐらいまでは前処理で「0」に変更した「neg」への影響があり、50000以降は[1]に変更した[pos]になる影響を与えているということがわかります。

さらには、「表示内容」を「重要度の大きさの比較」に設定すると、データ毎の重要度を確認できます。
この大きさの数値は、学習データとテストデータを合わせて、データの寄与度を平均してした数値です。そのため、数字の大きさよりも相対的に列同士を比較することが重要です。

学習結果を確認することができれば、「学習済みAIを保存する」をクリックして保存しましょう。

10. 推論

推論では学習データ以外のデータを用いて、AIに予測をしてもらいます。AIを実際に使用するために必要な機能です。

推論は学習が終わったあと「このAIを使って推論する」を選択するか、「学習済みのAI」から「推論する」を選択すれば始めることができます。

推論のページでは、まず「前処理の選択」から「aps_failure_training_set2」を選びます。
「aps_failure_training_set2」は、学習AIで行った「class」を数値化する前処理です。

そして、「データセットの選択」からテストデータをドラッグク&ドロップします。
その後、「推論を実行する」を選択しましょう。

推論の結果がでました。
左の列から推論の結果の見方を説明していきます。

1番左の列は1から順番に番号がふられています。
その隣の「class」の列は、AIが推論をした結果です。
左から3番目の列は「信頼度」という値が表示されています。信頼度は、予測の精度を示し、数値が高いほど予測の制度が高いことがわかります。
左から4列目の「詳細」をクリックすると、列ごとの推論結果の詳細をみることができます。
左から5列目以降は学習に使用した列が表示されています。

詳細のページの見方を確認しましょう。
1行目の詳細ページをクリックすると以下の画像のようになります。

推論の詳細では、「信頼度詳細」と列ごとの「推論結果に与えた影響度」を詳しくみることができます。
信頼度詳細をみると76.3%で0の判定、23.7%で1の判定がでることがわかります。
推論結果に与えた影響度では、列ごとに影響度を比べることができます。

11.まとめ

今回の記事では、機械の故障を予測するAIを作成していきました。
MatrixFlowを用いれば、プログラミングの知識がなくても、簡単にAIを作成することができます。

この機会にMatrixFlowで業務の課題を解決してみませんか?
MatrixFlowでは、機会の故障の予測だけでなく、売上予測や画像分類などをすることができます。
困りごとやご相談があれば、以下のサイトからお問合せください。

・マニュアル http://www.matrixflow.net/manual/top/
・問い合わせ http://www.matrixflow.net/contact/