Databricksを用いた建材業界の異常検知での機械学習の活用

[Harnessing Machine Learning for Anomaly Detection in the Building Products Industry with Databricks \| Databricks Blog](https://www.databricks.com/blog/harnessing-machine-learning-anomaly-detection-building-products-industry-databricks)の翻訳です。

:::note warn
本書は著者が手動で翻訳したものであり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# イントロダクション

異常検知はさまざまな業界に広く適用されており、エンタープライズセクターでは重要な役割を担っています。この記事では、非常に大きなビジネス価値を生み出している製造業におけるアプリケーションにフォーカスします。ここでは、シミュレートされたプロセスのサブシステムの健康状態のモニタリングを中心としたケーススタディを探索します。この記事では、Principal Component Analysis (PCA)のような次元削減手法に踏み込み、プロダクション環境でこのようなシステムを実装することの現実世界におけるインパクトを検証します。現実の例を分析することで、Databricksをツールとして活用することで、膨大なセンサーデータから価値のある洞察を抽出するために、このアプローチをどのようにスケールアップできるのかを説明します。

LP Building Solutions (LP)は、建材業界を形成する50年以上の歴史を持つ木材ベースの製造業です。北米、南米におけるオペレーションによって、LPは湿度、火災、シロアリに耐性を持つ製品ソリューションを構築しています。LPでは、過去のプロセスデータは、環境、健康、安全性(EHS)データと共に数年間を通じて数ペタバイトが収集されています。これらの大量の履歴データは、オンプレミスのSQLサーバー、データ履歴データベース、統計プロセス制御ソフトウェア、エンタープライズアセット管理ソリューションのようなさまざまなシステムで格納、維持されています。原材料の取り扱いから、最終製品のパッケージングに至るすべての工場におけるプロダクションプロセスを通じて、毎msごとにセンサーデータが収集されます。さまざまな種類のデータに対するアクティブな分析ソリューションを構築することで、データチームはオペレーショナルプロセスにおける企業を通じて意思決定者に情報を提供し、予兆保全を行い、情報によるデータドリブンの意思決定を行うための洞察を得る能力を手にすることができます。

LPにおける最大のデータドリブンのユースケースの一つは、数千のセンサーからの時系列データを用いたプロセス以上の監視でした。DatabricksのApache Sparkを用いることで、意思決定者が品質やプロセスのメトリクスを改善するのを支援するために、膨大な量のデータを取り込み、大規模な準備を行うことができました。工場のデータ分析、データサイエンス、高度な予測分析のためにこれらのデータを準備するために、LPのような企業は、オンプレミスの単体のデータウェアハウスソリューションよりも高速かつ高信頼にセンサー情報を処理する必要があります。

# アーキテクチャ
![](https://www.databricks.com/sites/default/files/inline-images/image1_20.png?v=1703289086)

# シミュレートされたプロセスのMLモデリング

例として、特別な製品に対するプロセスの上流での小規模な異常が、下流の複数のシステムの大規模な異常に拡大するシナリオを考えてみましょう。下流のシステムにおけるこれらの大規模な異常が製品の品質に影響を及ぼし、許容できる限界を下回る重要なパフォーマンスの特性を引き起こすと仮定しましょう。工場レベルの専門家による当該プロセスに対する事前知識と、周辺状況における変化、この製品の以前の製品処理の内容を用いることで、異常の特性、どこで起きたのか、下流の製造にどのように影響するのかを予測できるようになります。
![](https://www.databricks.com/sites/default/files/inline-images/image3_16.png?v=1703289086)

はじめに、時系列センサーデータに対する次元削減アプローチによって、オペレーターによって見逃されたかもしれない装置のリレーションシップを特定できるようになります。毎日装置に触れているオペレーターに対して直感的な、装置のピース間のリレーションシップの検証ガイドとして次元削減は動作します。ここでの主目的は、相関する多数の時系列のオーバーヘッドを比較的独立で適切な時間ベースのリレーションシップに削減するということです。理想的には、許容可能な製品SKUとオペレーションのウィンドウにおいて、可能な限り多様性のあるプロセスデータからスタートすべきです。

```py
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline

names=model_features.columns
x = model_features[names].dropna()
scaler = StandardScaler()
pca = PCA()

pipeline = make_pipeline(scaler, pca)
pipeline.fit(x)
```

## プロット

```py
features = range(pca.n_components_)
_ = plt.figure(figsize=(15, 5))
_ = plt.bar(features, pca.explained_variance_)
_ = plt.xlabel('PCA feature')
_ = plt.ylabel('Variance')
_ = plt.xticks(features)
_ = plt.title("Importance of the Principal Components based on inertia")
plt.show()
```
![](https://www.databricks.com/sites/default/files/inline-images/image2_18.png?v=1703289086)

次に、異常な挙動を特定するために、これらの時間ベースのリレーションシップを異常検知モデルに投入することができます。これらのリレーションシップにおける異常を検知することで、リレーションシップのパターンにおける変化をプロセスの故障、ダウンタイム、製造機会の一般的な摩耗に紐づけることが可能となります。この複合アプローチでは、システムレベルやプロセスレベルの障害を検知するために、次元削減と異常検知の組み合わせを活用します。すべてのセンサー個別に対する異常検知に依存するのではなく、全体的なサブシステムの障害を特定するための複合アプローチを用いることはさらにパワフルなものとなりえます。リレーションシップを特定し、それらのリレーションシップにおける異常を特定するために組み合わせ可能な、プレビルトのパッケージは数多く存在します。これに対応できるプレビルトのパッケージの一つの例はpycaretです。

```py
from pycaret.anomaly import *
db_ad = setup(data = databricks_df, pca = True,use_gpu = True)
```
```py
models()
```
![](https://www.databricks.com/sites/default/files/inline-images/image4_10.png?v=1703289086)

```py
model = create_model('cluster')
model_result = assign_model(model)
print(model_result.Anomaly.value_counts(normalize=True))
model_result
```

製品が完成する前に潜在的な深刻なプロセスの問題を特定するために、モデルは定期的に実行すべきであり、さもないと、より深刻な下流での問題につながります。可能であれば、すべての異常は、異常の性質や場所に応じて、品質マネージャ、サイト信頼性エンジニア、メンテナンスマネージャ、環境マネージャのいずれかによって調査されるべきです。

AIとデータの可用性は、モダンな製造能力の提供における鍵となりますが、工場のフロアオペレーターがそれに対してアクションできなかったとしたら、洞察やプロセスのシミュレーションには何の意味もありません。センサーからのデータ収集からデータドリブンの洞察、トレンド、アラートに移行することには多くの場合、リアルタイムあるいはニアリアルタイムのタイムケールでの、クリーニング、データ操作、モデリング、可視化のスキルセットを必要とします。これによって、製品の品質に影響が出る前に、工場の意思決定者は予期しないプロセスの混乱に対応できるようになります。

# 製造業データサイエンスにおけるCI/CDとMLOps

最終的には、このようなデータに対してトレーニングしたどのような異常検知モデルであっても、時間共に精度が劣化します。これに対応するために、意図したシステム変更なのか、意図しない変更なのかをチェックするために、データドリフトの管システムを継続的に稼働させることができます。さらに、プロセスの変化に寄与する意図的な変更によって、モデルが見たことのないレスポンスが生じることになるでしょう。これらの変更には、装置の部品の交換、新たな製品SKU、主要装置の修理、原材料の変更などが含まれます。これらの2点を念頭に置き、データドリフトのモニターは、プロセスに対する工場レベルの専門家によるチェックを行うことで、意図的な変更と意図しない変更を特定するように実装する位必要があります。検証を通じて、モデルの再トレーニングのために以前のデータセットに結果を組み込むことができます。

堅牢なクラウドコンピュートやデプロイメントのリソースによって、モデルの開発や管理は大きなメリットを享受することができます。プラクティスとしてのMLOpsは、DevOpsのベストプラクティスを通じて、データパイプラインを管理し、データシフトに対応し、モデル開発を促進するための組織化されたアプローチを提供します。現時点でLPにおいては、Azureのクラウドネイティブ機能や他の内部ツールとDatabricksプラットフォームを組み合わせて、リアルタイムとニアリアルタイム両方の異常検知のためのMLOps機能を活用しています。この、連携アプローチによって、データサイエンスチームはモデル開発プロセスを円滑にし、より効率的な製造タイムラインを実現しています。このアプローチによって、チームはより戦略的なタスクに集中することができ、彼らのモデルの継続的な適切性や効果を確実なものにしています。

# サマリー

Databricksプラットフォームは、管理可能な方法で数ペタバイトの時系列データを活用できるようにしてくれます。我々はDatabricksを以下の目的で活用しています:

- さまざまなソースからのデータ取り込みプロセスの整流化、Delta Lakeを用いた効率的なデータの格納
- MLのために、効率的かつ分散された方法でのデータの変換と操作
- CI/CD MLOpsデプロイメントのためのMLモデルの追跡と自動化されたデータパイプライン

これらは、LPと我々のお客様の成功と生産性を改善する効率的なデータドリブンの意思決定を行う助けとなっています。

MLOpsの詳細については、[the big book of MLOps](https://www.databricks.com/resources/ebook/the-big-book-of-mlops)をご覧いただき、Databricksを用いた異常検知の技術的詳細にディープダイブするのであれば、こちらの[関連ブログ]()をご覧ください。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)