hashSimilarityModel
残存耐用期間を推定するハッシュ特徴の類似性モデル
説明
hashSimilarityModel
は、コンポーネントの残存耐用期間 (RUL) をハッシュ特徴の類似性モデルを使用して推定するために使用します。このモデルは、同じ仕様で製造された複数のマシンなど、類似コンポーネントのアンサンブルの故障に至るまで実行された劣化パスの履歴があり、データ セットが大きい場合に便利です。ハッシュ特徴の類似性モデルは、各アンサンブル メンバーの過去の劣化パス データをデータの平均値、出力値、最小値、最大値などの一連の "ハッシュ特徴" に変換します。その後、テスト コンポーネントのハッシュ特徴を計算し、それらをアンサンブル データ メンバーのハッシュ特徴と比較できます。
hashSimilarityModel
オブジェクトを構成するには、fit
を使用します。これにより、アンサンブル データ メンバーのハッシュ特徴値が計算されて格納されます。類似性モデルのパラメーターを構成したら、その後、類似コンポーネントの残存耐用期間を predictRUL
を使用して予測できます。類似性モデルの場合、テスト コンポーネントの RUL は、大半の類似コンポーネントの寿命の中央値統計からテスト コンポーネントの現在の寿命値を引いたものとして推定されます。RUL 予測の基本的な例については、データの着信に応じた RUL 予測の更新を参照してください。
残存耐用期間の予測に関する一般的な情報については、残存耐用期間を予測するモデルを参照してください。
作成
構文
説明
は、RUL を推定するためのハッシュ特徴の類似性モデルを作成し、既定の設定でモデルを初期化します。mdl
= hashSimilarityModel
は、ハッシュ特徴の類似性モデルを作成し、既存の mdl
= hashSimilarityModel(initModel
)hashSimilarityModel
オブジェクト initModel
を使用してモデルのパラメーターを初期化します。
は、ユーザー設定可能なモデル プロパティを、名前と値のペアで指定します。たとえば、mdl
= hashSimilarityModel(___,Name,Value
)hashSimilarityModel('LifeTimeUnit',"days")
は、日数をライフタイムの単位として使用するハッシュ特徴の類似性モデルを作成します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。
入力引数
initModel
— ハッシュ特徴の類似性モデル
hashSimilarityModel
オブジェクト
ハッシュ特徴の類似性モデル。hashSimilarityModel
オブジェクトとして指定します。
プロパティ
HashTable
— ハッシュ特徴値
N 行 M 列の配列
この プロパティ は読み取り専用です。
関数 fit
で生成されるハッシュ特徴値。N 行 M 列の配列として指定します。ここで、M はアンサンブル メンバーの数、N はハッシュ特徴の数です。HashTable(i,j)
には、i
番目のデータ メンバーについて計算された j
番目の特徴のハッシュ特徴値が格納されます。
ハッシュ特徴の計算方法を指定するには、モデルの Method
プロパティを使用します。
RegimeSplit
— 履歴データを複数の領域に分割するブレークポイント
double の行ベクトル (既定値) | []
| duration
オブジェクトの行ベクトル | datetime
オブジェクトの行ベクトル
履歴データを複数の領域に分割するブレークポイント。double 値、duration
オブジェクト、または datetime
オブジェクトの行ベクトルとして指定します。ブレークポイントの行ベクトルは次のとおりでなければなりません。
増加する順である
単位と形式が関数
fit
で使用される学習データと互換性がある
単一の領域を使用するには、RegimeSplit
を []
として指定します。
領域ごとに個別のハッシュ テーブルが生成されます。RUL の予測は、テスト データが属する領域のハッシュ特徴に対する類似性に基づきます。RegimeSplit
の値を変更する場合、fit
を使用してモデルに再学習させる必要があります。
次の場合に、RegimeSplit
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
LifeSpan
— アンサンブル メンバーの寿命
double ベクトル (既定値) | duration
オブジェクトのベクトル
この プロパティ は読み取り専用です。
アンサンブル メンバーの寿命。double ベクトルまたは duration
オブジェクト ベクトルとして指定し、関数 fit
でアンサンブル メンバーの劣化プロファイルから計算します。
NumNearestNeighbors
— RUL 推定の最近傍の数
Inf
(既定値) | 有限の正の整数
RUL 推定の最近傍の数。Inf
または有限の正の整数として指定します。NumNearestNeighbors
が Inf
の場合、predictRUL
による推定時にすべてのアンサンブル メンバーが使用されます。
次の場合に、NumNearestNeighbors
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
Method
— ハッシュ特徴の計算方法
"minmaxstd"
(既定値) | 関数ハンドル
ハッシュ特徴の計算方法。次のいずれかとして指定します。
"minmaxstd"
— データの最小値、最大値、および標準偏差を抽出します。このオプションでは、NaN
を含む観測値は除外されます。この方法を使用する場合、HashTable
は M 行 3 列になります。ここで、M はアンサンブル メンバーの数です。関数ハンドル — 列ベクトル、
table
、またはtimetable
として劣化データを受け取り、特徴の行ベクトルを返すカスタム関数を使用します。以下に例を示します。mdl.Method = @(x) [mean(x),std(x),kurtosis(x),median(x)]
次の場合に、Method
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
Distance
— 距離の計算方法
"euclidian"
(既定値) | "absolute"
| 関数ハンドル
距離の計算方法。次のいずれかとして指定します。
"euclidian"
— ハッシュ ベクトル間の距離の 2 ノルムを使用します。"absolute"
— ハッシュ ベクトル間の距離の 1 ノルムを使用します。関数ハンドル — 次の形式のカスタム関数を使用します。
D = distanceFunction(xTest,xEnsemble)
ここで
xTest
は、テスト コンポーネントのハッシュ特徴を含む長さ N の行ベクトルです。ここで、N はハッシュ特徴の数です。xEnsemble
は、アンサンブル コンポーネントのハッシュ特徴の M 行 N 列の配列です。ここで、M は、当てはめたモデル内のアンサンブル コンポーネントの数です。xEnsemble(i,:)
には、i
番目のアンサンブル メンバーのハッシュ特徴が格納されます。D
は、長さ M の列ベクトルです。ここで、D(i)
は、テストの特徴ベクトルとi
番目のアンサンブル メンバーの特徴ベクトルの間の距離です。
カスタム距離関数の使用例については、ハッシュ類似性モデルのカスタム距離関数の指定を参照してください。
次の場合に、Distance
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
IncludeTies
— 同順位を含めるためのフラグ
true
(既定値) | false
同順位を含めるためのフラグ。true
または false
として指定します。IncludeTies
が true
の場合、モデルにおいて、テスト コンポーネントのデータまでの距離が K 番目に短い距離よりも短いすべての近傍が含められます。ここで、K は NumNearestNeigbors
と等しくなります。
次の場合に、IncludeTies
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
Standardize
— 特徴データを標準化するためのフラグ
false
(既定値) | true
ハッシュ特徴を生成する前に特徴データを標準化するためのフラグ。true
または false
として指定します。Standardize
が true
の場合、特徴 X
が (X-mean(X))/std(X)
になるように特徴データが標準化されます。
次の場合に、Standardize
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
LifeTimeVariable
— ライフタイム変数
""
(既定値) | string
ライフタイム変数。有効な MATLAB® 変数名または ""
を含む string として指定します。
関数 fit
を使用してモデルを学習させるとき、学習データが次のいずれかの場合:
table
の場合、LifeTimeVariable
が table の変数名のいずれかに一致する必要があるtimetable
の場合、LifeTimeVariable
は、table の変数名の 1 つ、または時間変数の次元名data.Properties.DimensionNames{1}
にする必要がある
次の場合に、LifeTimeVariable
を指定できます。
モデル作成時に名前と値のペアを使用する
関数
fit
を呼び出す際の引数として使用するモデル作成後にドット表記を使用する
LifeTimeUnit
— ライフタイム変数の単位
""
(既定値) | string
ライフタイム変数の単位。string として指定します。
ライフタイム変数の単位は時間ベースとする必要はありません。テスト コンポーネントの寿命は、走行距離 (マイル) や消費燃料 (ガロン) などの使用量変数で測定できます。
DataVariables
— 劣化変数名
""
(既定値) | string | string 配列
劣化変数名。string または string 配列として指定します。DataVariables
の string は、有効な MATLAB 変数名でなければなりません。
次の場合に、DataVariables
を指定できます。
モデル作成時に名前と値のペアを使用する
関数
fit
を呼び出す際の引数として使用するモデル作成後にドット表記を使用する
UseParallel
— 並列計算の使用のフラグ
false
(既定値) | true
関数 fit
によるハッシュ テーブルの生成に並列計算を使用するためのフラグ。true
または false
のいずれかとして指定します。
次の場合に、UseParallel
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
UserData
— その他のモデル情報
[]
(既定値) | 任意のデータ型またはデータ形式
記録用のその他のモデル情報。任意のデータ型またはデータ形式として指定します。モデルでは、この情報を使用しません。
次の場合に、UserData
を指定できます。
モデル作成時に名前と値のペアを使用する
モデル作成後にドット表記を使用する
オブジェクト関数
predictRUL | テスト コンポーネントの残存耐用期間を推定 |
fit | 履歴データを使用して残存耐用期間モデルのパラメーターを推定 |
compare | テスト データを類似性モデルの履歴データ アンサンブルと比較する |
例
ハッシュ類似性モデルの学習
学習データを読み込みます。
load('hashTrainVectors.mat')
学習データは列ベクトルの cell 配列です。各列ベクトルは、コンポーネントの劣化特徴プロファイルです。
既定の設定でハッシュ類似性モデルを作成します。既定では、モデルで使用されるハッシュ特徴は、信号の最大値、最小値、および標準偏差値です。
mdl = hashSimilarityModel;
学習データを使用して類似性モデルに学習させます。
fit(mdl,hashTrainVectors)
表形式データを使用したハッシュ類似性モデルの学習
学習データを読み込みます。
load('hashTrainTables.mat')
学習データは table の cell 配列です。各 table は、コンポーネントの劣化特徴プロファイルです。各プロファイルは、変数 "Time"
のライフタイム測定値と、それに対応する変数 "Condition"
の劣化特徴の測定値から構成されます。
次の値をハッシュ特徴として使用するハッシュ類似性モデルを作成します。
mdl = hashSimilarityModel('Method',@(x) [mean(x),std(x),kurtosis(x),median(x)]);
学習データを使用して類似性モデルに学習させます。ライフタイム変数とデータ変数の名前を指定します。
fit(mdl,hashTrainTables,"Time","Condition")
ハッシュ類似性モデルを使用した RUL の予測
学習データを読み込みます。
load('hashTrainTables.mat')
学習データは table の cell 配列です。各 table は、コンポーネントの劣化特徴プロファイルです。各プロファイルは、変数 "Time"
のライフタイム測定値と、それに対応する変数 "Condition"
の劣化特徴の測定値から構成されます。
時間数をライフタイムの単位として使用し、次の値をハッシュ特徴として使用するハッシュ類似性モデルを作成します。
平均
標準偏差
尖度
中央値
mdl = hashSimilarityModel('Method',@(x) [mean(x),std(x),kurtosis(x),median(x)],... 'LifeTimeUnit',"hours");
学習データを使用して類似性モデルに学習させます。ライフタイム変数とデータ変数の名前を指定します。
fit(mdl,hashTrainTables,"Time","Condition")
テスト データを読み込みます。テスト データには、テスト コンポーネントの現在のライフタイムまでの劣化特徴の測定値が含まれています。
load('hashTestData.mat')
学習させた類似性モデルを使用してテスト コンポーネントの RUL を予測します。
estRUL = predictRUL(mdl,hashTestData)
estRUL = duration
175.69 hr
コンポーネントの推定 RUL は約 176 時間です。
ハッシュ類似性モデルのカスタム距離関数の指定
学習データとテスト データを読み込みます。
load('hashTrainTables.mat') load('hashTestData.mat')
次のコードを含む、座標で重み付けされた距離関数 distanceFunction
を作成します。
type distanceFunction.m
function out = distanceFunction(xTest,xEnsemble) % Use a function handle to compute a distance that weights each % coordinate contribution differently. W = [.1 .2 .3]; % coordinate weights out = (sqrt((xTest - xEnsemble).^2 * W')); end
時間数をライフタイムの単位として使用し、distanceFunction
の関数ハンドルを距離測定値として使用するハッシュ類似性モデルを作成します。
mdl = hashSimilarityModel('LifeTimeUnit',"hours", 'Distance', @distanceFunction);
学習データを使用して類似性モデルに学習させます。ライフタイム変数とデータ変数の名前を指定します。
fit(mdl,hashTrainTables,"Time","Condition")
学習させた類似性モデルを使用してテスト コンポーネントの RUL を予測します。
estRUL = predictRUL(mdl,hashTestData)
estRUL = duration
138.87 hr
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
predictRUL
コマンドは、この RUL モデル タイプの MATLAB Coder™ を使用したコード生成に対応しています。このモデルを使用するコードを生成する前に、saveRULModelForCoder
を使用してモデルを保存する必要があります。例については、残存耐用期間の予測用コードの生成を参照してください。この RUL モデルのプロパティは実行時に変更できません。
hashSimilarityModel
のMethod
プロパティには、既定値の"minmaxstd"
を使用する必要があります。それ以外のMethod
の値は、コード生成ではサポートされません。hashSimilarityModel
のDistance
プロパティを関数ハンドルとして指定する場合、無名関数にすることはできません。
自動並列サポート
Parallel Computing Toolbox™ を使用して自動的に並列計算を実行することで、コードを高速化します。
これらのモデルを並列で評価するには、UseParallel
プロパティを true
に設定します。
バージョン履歴
R2018a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)