プロセス制御 化学工学

【図解あり】ソフトセンサーの作成方法(学習方法も解説)

2023年3月20日

ソフトセンサー作成方法
ソフトセンサーってどうやって作成したら良いのだろう?
また、どんな勉強をしたら良いのか教えて欲しいな。

こんなお悩みを解決します。

どうも。こんにちは。
ケミカルエンジニアのこーしです。

本日は、ソフトセンサーの作成方法」についてわかりやすく解説します。

ソフトセンサーが有用であることはわかっているけど、どうやって作成したら良いのか、またどんな勉強をしたら良いのかわからないという方が多いと思います。

本記事では、ソフトセンサーの作成方法と学習方法について体系的に解説しますので、興味のある方はぜひ読んでみてください。

ソフトセンサーとは何か、ソフトセンサーの役割については下の記事にまとめています。

ソフトセンサーとは
【図解あり】ソフトセンサーとは 〜コスト削減の武器〜

続きを見る

本記事の内容

・ソフトセンサーの作成方法

・ソフトセンサーの学習方法

・参考文献

この記事を書いた人

プロフィールこーし(@mimikousi)

ソフトセンサーの作成方法

ソフトセンサー構築の流れを下記にまとめました。

ソフトセンサー構築の流れ

  1. データ収集
  2. データの前処理
  3. モデル構築
  4. モデル解析
  5. モデル運用

それでは、一つ一つ具体的に解説していきます。

データ収集

データ収集のポイントは下記2点です。

データ収集のポイント

  1. 質・信頼性の高いデータを集める
  2. ソフトセンサーを構築する目的を明確にする

1.質・信頼性の高いデータを集める

データ収集

ソフトセンサーを構築するためには、まずデータを集めないといけません。

データが多ければ多いほどソフトセンサーの予測精度は向上します。

しかし、測定ノイズばかりのデータを集めていては精度の高いモデルを構築することは困難です。

よって、質・信頼性の高いデータを集める必要があります。

質・信頼性の高いデータを集めるために、考慮すべきことを下記にまとめました。

考慮すべき点

  • 分析計の測定誤差、校正頻度
  • 分析計のメンテナンス
  • オンライン計器の測定誤差
  • PIDパラメータ

 

化学プラントを例にもう少し具体的に書くと下記の通りです。

化学プラントの例

  • 分析計の測定誤差が何%あるか
  • 分析計の校正頻度は適切か
  • GC、HPLCのカラム交換頻度は適切か
  • 流量計の指示値は正確か(例えば、スラリーやエアーは流量誤差が大きい)
  • 液面計の指示値は適切か(差圧式の液面計はズレやすい)
  • PIDパラメータは適切に設定してあるか

 

2.ソフトセンサーを構築する目的を明確にする

予測したいデータ範囲

ソフトセンサーを構築する目的によって、追求する予測精度が異なります。

例えば、品質規格ギリギリを攻めた運転管理をしたいという場合、要求する予測精度は高くなります。

一方、分析計の異常を検知したいという目的であればそこまでの予測精度はいらないでしょう。

また、品質規格ギリギリを攻める場合、品質規格近辺で運転した際のデータをたくさん集めてモデルを作成します。

つまり、「予測したい領域」のデータを十分に集めておくことが重要です。

 

データの前処理

データの前処理は、データ解析作業の8割を占めると言われるほど重要な作業になります。

代表的なデータの前処理を下記にまとめました。

データの前処理

  1. 外れ値除去
  2. ノイズ処理(平滑化)
  3. プロセス動特性の考慮
  4. 変数選択
  5. xやyの変数変換

1.外れ値除去

外れ値除去の方法としてはいくつかありますが、ソフトセンサー構築時に用いられる代表的な手法は下記3つです。

①3シグマ法

②Hampel identifier

③SG法による平滑化処理前後の値の差に対してHampel identifier

化学プラントではプロセスが周期的に変動している場合が多く、③が有効な場合が多い印象です。

①3シグマ法や②Hampel identifierについては下記記事でまとめています。

外れ値の検出方法
【エクセルでできる】外れ値の検出方法

続きを見る

 

2.ノイズ処理(平滑化)

ノイズ処理としては、下記3つがよく使われています。

  • 移動平均
  • SG法(Savitzky Goley法)
  • PCA(主成分分析)

移動平均をとるデータ数やSG法の多項式の次数、近似するデータ幅などのパラメータについては、ノイズの正規性を元に決定します。

詳しくは下記の記事を参考にしてみてください。

スペクトル・時系列データの前処理の方法~平滑化 (スムージング) と微分~

その他、PLSやSVRのようなノイズに頑健な回帰分析手法を用いるという手もありますね。

 

3.プロセス動特性の考慮

プロセス動特性

製造プロセスにおいて、各プロセス変数xは時間遅れを伴って目的変数yに影響を及ぼします。

よって、プロセス知識に基づいて、数時間または数分だけ過去の変数をモデル構築に用います。

例えば、目的変数yの前工程にあるプロセス変数(説明変数)であれば、滞留時間分(1時間とか)遅らせた変数をモデルに用います。

しかし、どのくらい時間遅れを考慮したら良いのかはっきりしない場合もあると思います。

その際は、次に説明する「変数選択」を組み合わせて試行錯誤的に時間遅れを決定します。

 

4.変数選択

変数選択

目的変数yと関係のないプロセス変数xはモデルの精度を低下させる要因となります。

そこで、目的変数yと関係の深いプロセス変数xの組合せのみでモデルを構築する手法が開発されています。

代表的な変数選択手法を下記にまとめました。

変数選択手法

  • ステップワイズ法
  • LASSO
  • GAWLS法※ ※GA(遺伝的アルゴリズム)
  • GAVDS法※
  • PLS-VIP
  • NCSC-VS
  • Boruta
ステップワイズ法

ステップワイズ法は、変数を取り込んだり取り除いたりしながら回帰モデルを構築し、ある評価指標が最適値となるような変数の組合せを探索する手法です。

評価指標としては、AICやBIC、RMSEなどが用いられます。

ステップワイズ法については、下記記事にまとめてあります。

ステップワイズ法
【python】ステップワイズ法による入力変数選択

続きを見る

 

 LASSO

LASSO回帰は、正則化項と呼ばれる罰則項を設けることで過学習を防止できます。

この正則化項は、回帰係数の大きさを制限する役割を果たしますが、特にLASSO回帰では回帰係数がゼロに収束しやすいことから変数選択手法としても活躍します。

LASSOについては、下記記事が図解があってわかりやすいです。

スパースモデリングはなぜ生まれたか? 代表的なアルゴリズム「LASSO」の登場

 

GA(遺伝的アルゴリズム)

遺伝的アルゴリズム(GA)は、自然界の進化を模倣して最適化問題を解決するアルゴリズムです。

GAWLSは、スペクトル解析分野において遺伝的アルゴリズムを用いて最適な波長を選択する手法です。

そして、GAVDSはGAWLSを改良し、プロセス動特性を考慮したプロセス変数選択に使えるようにした手法です。

GAWLSやGAVDSについては、下記記事が参考になります。

[Pythonコードあり] スペクトル解析における波長領域や時系列データ解析におけるプロセス変数とその時間遅れを選択する方法

 

PLS-VIP

Variable Importance for Projection (VIP) は、PLS (Partial Least Squares) モデルにおいて、各変数の予測モデルに対する寄与度を評価するための指標です。

VIPは、PLS モデル構築中の変数選択に役立ち、モデルの予測性能を向上させることができます。

参考に、LASSOやステップワイズ法、GA、PLS-VIPを比較した資料を紹介します。

変数選択手法っていろいろあるけど、何を使えばいいの?

 

NCSC-VS

NCSC 法は、相関識別法(Nearest Correlation Method; NC 法) とスペクトラルクラスタリング(SC)  を組み合わせた手法で、変数間の相関関係に基づいてサンプルをクラスタリングします。

NCSC-VS(Nearest correlation spectral clustering based Variable Selection)は、NCSC法でクラスタリングしたグループ毎に変数選択をする手法です。

詳しくは下記文献を参照してください。

高精度ソフトセンサ開発に関する研究

 

Boruta

Borutaは、全ての特徴量を含む仮想的な特徴量群(shadow features)を生成し、ランダムフォレストを用いて、実際の特徴量と仮想的な特徴量群の間で、有意な差異があるかどうかを検定します。

Borutaについては下記記事を参考にしてみてください。

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法

 

また下記書籍には、ステップワイズ法やLASSO、PLS、PLS-VIP、NCSC-VSについて、理論的な解説とPythonコードが載っています。

とても勉強になったので、興味があれば読んでみてください。

 

5.xやyの変数変換

変数を解釈可能な次元に変換することも重要です。

例えば、ポリマー重合におけるMFR(Melt Flow Rate)をエネルギーの次元にするために対数変換することはよく知られています。

 

モデル構築

データの前処理が終わったら、いよいよモデル構築に移ります。

(実際は、モデル構築とデータ前処理は試行錯誤しながら同時に進めていきます。)

モデリング手法は大きく分けて3つに分類できます。

モデリング手法

  1. 物理モデル(ホワイトボックスモデル)
  2. 統計モデル(ブラックボックスモデル)
  3. ハイブリッドモデル(グレーボックスモデル)

物理モデルを構築することができれば理想的ですが、実際のプロセスでは様々な外乱が存在し、物理モデルで精度の良いソフトセンサーを作成できることは稀です。

よって、世の中の大半のソフトセンサーが統計モデルを採用しています。

一方、統計モデルにも弱点があり、モデル構築時のデータ範囲外である外挿領域においては予測精度が大きく落ちてしまいます。

そこで、化学的・物理的な知識を取り入れたハイブリッドモデルを採用し、外挿領域でも良好な予測精度を維持させる例もあります。

 

ソフトセンサーによく用いられる統計モデルを下表にまとめました。

線形回帰手法 非線形回帰手法
最小二乗法(OLS) Kernel PLS
主成分回帰(PCR) 人工ニューラルネットワーク(ANN)
部分的最小二乗回帰(PLS) サポートベクター回帰(SVR)
リッジ回帰(RR) ロジスティック回帰(LR)
LASSO 回帰木(RT)
  ガウス過程回帰(GPR)
  LightGBM

ソフトセンサーの精度向上のため、これまで様々な統計モデルの研究が行われてきました。

1990年代は、PLSとニューラルネットワークの研究が盛んに行われ、2000年代になるとサポートベクター回帰(SVR)が注目されました。

2010年代からはガウス過程回帰(GPR)と勾配ブースティング(LightGBMなど)がソフトセンサー構築に使われるようになっています。

 

モデル解析

モデル解析では、モデルの解釈モデルの検証を主に行います。

モデルの解釈

構築したモデルの目的変数yへのプロセス変数(説明変数)xの寄与度から、対象のプロセス知識を得ることができます。

これは、ソフトセンサーの役割であるプロセス変数間の関係の解明に繋がります。

 

モデルの検証

モデルの検証では、モデル構築用(学習用)データとは別の検証用データに対しての予測精度を確認します。

ここで過学習(オーバーフィッティング)の有無をチェックしておきましょう。

また、ソフトセンサーが十分な性能を発揮できるデータ範囲(モデルの適用範囲)を確認することも重要です。

モデルの適用範囲外では、予測精度が落ちてしまうことを理解しておく必要がありますね。

 

モデル運用

モデル運用のポイントは、下記の3点です。

モデル運用のポイント

  1. モデルの劣化
  2. データベース管理
  3. 予測誤差の推定

それでは、一つ一つ具体的に解説していきます。

1.モデルの劣化

ソフトセンサー作成において最も重要な問題が「モデルの劣化」です

下記のように、様々なプロセス特性の変化によってモデルの予測精度が低下してしまいます。

モデル劣化の要因

  • 触媒の劣化
  • 熱交換器や配管への汚れ付着
  • 原料組成の変化
  • 外気温の変化
  • 各センサーの故障やドリフト(部品の経年劣化などにより、測定値が緩やかに変動すること)
    など

ここで、モデルの劣化のイメージ図を示します。

モデルの劣化

その他、プロセス特性の変化がA徐々に起こる場合B急激に起こる場合にも分類できますね。

 

モデルの劣化への対応策

モデルの劣化への対応策

  1. 最新の運転データを用いてプロセス特性の変化にモデルを追随させる
    ⇒適応型モデル
  2. モデルの劣化要因を特定し、それを踏まえたモデル構築・予測を行う

2.のようにモデルの劣化要因を特定し、それを踏まえたモデル構築・予測を行うのが理想です。

しかし、特定自体が難しいですし、要因が重なり合っている場合もあってなかなか難しいアプローチです。

よって、1.の適応型モデルの導入で対応するのが一般的です。

 

適応型ソフトセンサー

適応型モデルを用いたソフトセンサーを適応型ソフトセンサーと呼びます。

適応型モデルには下記3つの種類があります。

適応型モデル

①Moving Window(MW)

②Just-In-Time(JIT)

③Time Difference(TD)

それぞれの特徴を下記にまとめました。

①Moving Window(MW)

同じプロセス状態と考えられる直近のデータのみを用いてモデルを構築・更新していく適応型モデルです。

逐次モデルを更新していくので、古いデータの影響がモデルに残ります。

よって、モデル劣化の③傾きの変化には強いですが、①②の値シフトや急激な変化には弱いです。

 

②Just-In-Time(JIT)

プロセス変数xのデータ空間においてデータが近いとプロセス状態も近いと仮定する適応型モデルです。

類似したデータのみを用いてモデルを構築したり、類似度に基づいてデータに重み付けしてモデルを構築します。

類似度としては下記を想定しています。

  • ユークリッド距離
  • マハラノビス距離
  • 相関係数
  • カーネル関数

MWとは異なり、古いデータの影響を受けにくい特徴がありますが、①yの値シフトや③傾きの変化には弱いです。

また、データベースにあるデータとの類似度を計算する必要があるため計算負荷が大きいというデメリットがあります。

 

③Time Difference(TD)

単純にxとyの時間差分の間で構築された適応型モデルです。

モデル劣化は①②値のシフトに対応可能で、値のシフトであれば急激な変化にも対応できます

モデルを再構築しないので、過去の異常値の影響も受けず、計算負荷も小さいという特徴があります。

一方、MWと異なり③傾きの変化に弱いのが弱点です

 

モデル劣化の種類に応じて、どの適応型モデルを使うべきか簡単に表にまとめてみました。

モデルの劣化 MWモデル JITモデル TDモデル
種類 速さ
①yの値シフト ゆっくり ×
急激 × ×
②xの値シフト ゆっくり
急激 ×
③傾き変化 ゆっくり × ×
急激 × × ×

xとyの傾きが変化しない場合は、モデル再構築を行わず異常値の影響を受けにくいTDモデルを用います。

しかし、傾きが変化する場合には対応できないため、安定時はTDモデルを使用しTDモデルの予測誤差が大きくなった場合のみMWモデルに切り替えるといった手法があります。

 

2.データベース管理

MWやJITといった適応型モデルでは、変動の少ない安定したデータでモデルが更新され続けると、その後に大きなプロセス変動が起こると予測精度が急激に悪化してしまいます。

よって、幅広いデータを用いてモデルを更新していく必要があり、データベースの適切な管理が重要です。

具体的には、新しいデータが得られた際にデータベースに保存するかどうか判断する指標を導入します。

これをDMI(Database Monitoring Index)と呼びます。

ガウシアンカーネルを用いたDMIを下式に示します。

$$\text{DMI} = \frac{|y_i - y_j|^a}{\text{exp}(- \gamma\|\mathbf{x_i} - \mathbf{x_j}\|^2)}\tag{2}$$

\(a\):\(x\)に対する\(y\)の重みを調整する変数
\(\gamma\):ガウシアンカーネルのパラメータ

二つのデータが類似しているとDMIは小さくなります。

新しいデータに対してデータベース内の全データとDMIを計算し、その最小値が閾値より大きい場合のみデータベースに追加します。

 

しかし、DMIによるデータベース管理だけでは、「異常値」を取り除くことができず、異常値をモデルに混入させてしまうことでモデルの予測精度を悪化させてしまいます。

そこで、異常検出を考慮しながらデータベース管理をする必要があります。

例えば、異常検出モデルとして下記のような手法が用いられます。

  • 独立成分分析(ICA)
  • サポートベクターマシン(SVM)
  • 局所外れ値因子法(LOF)
  • アイソレーションフォレスト(iForest)

 

3.予測誤差の推定

予測誤差の推定

ソフトセンサーの運用では、ソフトセンサーの予測誤差がどの程度かを把握することが重要です。

今までにない運転条件であれば当然予測精度が落ちますし、想定していた予測誤差よりも実測値が大きくズレるような場合は、分析計の異常を疑う必要があります。

そこで、予測誤差を推定する具体的な方法を解説します。

予測誤差の推定方法

1)モデル構築用データで予測誤差(=yの予測値-実測値)を算出

2)モデル構築用の全データでDM※を算出

 ※DM:新しいデータとモデルとの距離(Distance to Model:DM)
  DMの例)ユークリッド距離やマハラノビス距離

3)DMの小さい順にデータを並べ替える

4)並べ替えたあとのデータについて、(i - m)番目から(i + m)番目のデータの予測誤差の標準偏差(SDEy)を計算

 ※mは事前に設定するパラメータ(m≧50)

 ※SDEy:Standard Deviation of prediction Errors of y

5)SDEyとDMのグラフを作成(上図参照)

6)新しいデータが得られたらDMを計算し、5)のグラフからSDEyを推定

 

ソフトセンサーの学習方法

ソフトセンサーの作成方法について解説してみましたが、よく分からない単語が出てきて理解しにくかったかもしれません。

ソフトセンサーはデータ解析技術の元に成り立つため、統計学や機械学習、Pythonを勉強しないといけません。

よって、学習方法についてまとめてみました。

必要な学問

必要な学問は、大きくわけて下記の3つです。

必要な学問

  1. 数学(微分積分、線形代数)
  2. 統計学(機械学習)
  3. プログラミング(Python)

データを扱うため、どうしても統計学の知識が必要となります。

そして統計学を理解するためには、微分積分と線形代数の知識が必要です。

また、ソフトセンサー構築のためのデータ解析や実際に運用するためにはPythonなどのプログラミング言語の習得が必要です。

 

おすすめの学習方法

ソフトセンサーを作成するためのおすすめの学習方法は以下の通りです。

おすすめ学習方法

  1. ソフトセンサー入門を読む
  2. 統計学を勉強する
  3. 線形代数を勉強する(場合によっては微分積分も)
  4. 機械学習(多変量解析)を学ぶ
  5. プログラミング(Python)を身につける
  6. 化学系のPython教科書を読む

それでは、一つ一つ解説してみます。

1.ソフトセンサー入門を読む

ソフトセンサーの入門書といえば、「ソフトセンサー入門」一択です。

本記事も「ソフトセンサー入門」を参考に書いています。

ソフトセンサーの作成方法や注意点について体系的に学ぶことができます。

目次

  1. プロセスの監視・制御(プロセス管理)
  2. ソフトセンサー
  3. ソフトセンサーの問題点・課題点
  4. ソフトセンサーの研究例
  5. ケモメトリックス

5.ケモメトリックスの内容を下記にリストアップしました。

下記を読んでみて、内容がピンとこなければ以下に紹介する勉強方法で勉強してみてください!

5.ケモメトリックスの内容

  • 3シグマ法
  • Hampel identifier
  •  Savitzky-Goley(SG)法
  • 主成分分析(PCA)
  • 独立成分分析(ICA)
  • 最小二乗法による線形重回帰分析(OLS)
  • PLS
  • サポートベクターマシン(SVM)
  • サポートベクター回帰(SVR)
  • Online SVR
  • LASSO
  • ステップワイズ法
  • GAPLS
  • GAWLS
  • k-NN
  • One-Class SVM(OCSVM)

 

2.統計学を勉強する

ソフトセンサーに限らず、データ解析を必要とする技術には統計学の知識が欠かせません。

思いつくものを少しだけ列挙してみました。

  • 平均
  • 標準偏差
  • 中央値
  • 正規分布
  • 仮説検定
  • 重回帰分析
  • 情報量規準
  • ベイズ推定

統計学の勉強方法については下記の記事にまとめてあります。

いきなり難しい教科書に挑戦せず「急がば回れ」方式で、下記のような3STEPで学んでいきましょう。

統計学を学ぶ3ステップ

STEP1 マンガで学ぶ

STEP2 初学者向けの教科書で学ぶ

STEP3 伝統的な教科書で学ぶ

統計学本5選
【初心者向け】統計学のおすすめ本5選(特徴も解説!)

続きを見る

 

3.線形代数を勉強する

主成分分析やPLSなどを理解するためには線形代数の知識が不可欠です。

しかし、気負って難しい教科書を読む必要はなく、簡単な本で復習すれば問題ありません。

特にオススメは「意味がわかる線形代数」です。

統計学(主成分分析)の理解を意識して書かれている教科書だと勝手に思っています。

 

4.機械学習(多変量解析)を学ぶ

主成分分析やPLS、サポートベクターマシンなどを理解するためには多変量解析、機械学習を学ばないといけません。

後述の「化学系のpython教科書」でも紹介しますが、下記2冊を読めば理論的な部分とpythonコードの両方が学べます。

化学のためのPythonによるデータ解析・機械学習入門

スモールデータ解析と機械学習

 

理論的な部分を深掘りしたい方は、下記の2冊が特にオススメです。

多変量解析入門

はじめてのパターン認識

 

5.プログラミング(Python)を身につける

非エンジニアの方であれば、プログラミングを身につける必要があります。

初心者からソフトセンサーを実装しようとしたら、今ならPythonがオススメです。

pythonの学習方法については下記の記事にまとめてあります。

【初心者向け】データサイエンスのためのPython学習方法

続きを見る

 

6.化学系のPython教科書を読む

4.機械学習(多変量解析)を学ぶでも触れましたが、下記2冊を読めばpythonでソフトセンサーを実装できるようになります。

化学系でデータ解析をやるなら必読の2冊かもしれませんね。

 

参考文献

ソフトセンサー入門 (船津、金子共著)

本記事は、こちらの教科書を参考に書きました(良書だったので、2周読みました!)

ソフトセンサーの作成方法などについて興味がありましたら、ぜひ読んでみて下さい!

 

化学のためのPythonによるデータ解析・機械学習入門

pythonコードが非常に充実しており、化学系エンジニアがPythonを使ってデータ解析するなら、まず手に取って欲しい一冊です!

 

スモールデータ解析と機械学習

本書は、理論的な部分も詳しく解説してくれて、かつPythonコードも載っているのでとても気に入っている教科書です。

学べる内容

  • LASSO
  • PLS
  • PLS-VIP
  • ステップワイズ法
  • NCSC-VS

 

\この記事はどうでしたか?/

  • この記事を書いた人
  • 最新記事

こーし

ケミカルエンジニア|化学メーカー勤務| 現場配属の生産技術|30代| 【取得資格】化学工学技士、エネルギー管理士(熱)、高圧ガス製造保安責任者(甲種化学)、公害防止管理者(大気、水質、DXN)、危険物取扱者(甲種)、統計検定準1級、統計検定1級(統計応用)、TOEIC 880 |化学工学 × データサイエンス × 制御工学| pythonと数理統計学の勉強中!

-プロセス制御, 化学工学

© 2023 雷電風雨のエンジニア Powered by AFFINGER5