Main Content

hashSimilarityModel

残存耐用期間を推定するハッシュ特徴の類似性モデル

説明

hashSimilarityModel は、コンポーネントの残存耐用期間 (RUL) をハッシュ特徴の類似性モデルを使用して推定するために使用します。このモデルは、同じ仕様で製造された複数のマシンなど、類似コンポーネントのアンサンブルの故障に至るまで実行された劣化パスの履歴があり、データ セットが大きい場合に便利です。ハッシュ特徴の類似性モデルは、各アンサンブル メンバーの過去の劣化パス データをデータの平均値、出力値、最小値、最大値などの一連の "ハッシュ特徴" に変換します。その後、テスト コンポーネントのハッシュ特徴を計算し、それらをアンサンブル データ メンバーのハッシュ特徴と比較できます。

hashSimilarityModel オブジェクトを構成するには、fit を使用します。これにより、アンサンブル データ メンバーのハッシュ特徴値が計算されて格納されます。類似性モデルのパラメーターを構成したら、その後、類似コンポーネントの残存耐用期間を predictRUL を使用して予測できます。類似性モデルの場合、テスト コンポーネントの RUL は、大半の類似コンポーネントの寿命の中央値統計からテスト コンポーネントの現在の寿命値を引いたものとして推定されます。RUL 予測の基本的な例については、データの着信に応じた RUL 予測の更新を参照してください。

残存耐用期間の予測に関する一般的な情報については、残存耐用期間を予測するモデルを参照してください。

作成

説明

mdl = hashSimilarityModel は、RUL を推定するためのハッシュ特徴の類似性モデルを作成し、既定の設定でモデルを初期化します。

mdl = hashSimilarityModel(initModel) は、ハッシュ特徴の類似性モデルを作成し、既存の hashSimilarityModel オブジェクト initModel を使用してモデルのパラメーターを初期化します。

mdl = hashSimilarityModel(___,Name,Value) は、ユーザー設定可能なモデル プロパティを、名前と値のペアで指定します。たとえば、hashSimilarityModel('LifeTimeUnit',"days") は、日数をライフタイムの単位として使用するハッシュ特徴の類似性モデルを作成します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

入力引数

すべて展開する

ハッシュ特徴の類似性モデル。hashSimilarityModel オブジェクトとして指定します。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

関数 fit で生成されるハッシュ特徴値。N 行 M 列の配列として指定します。ここで、M はアンサンブル メンバーの数、N はハッシュ特徴の数です。HashTable(i,j) には、i 番目のデータ メンバーについて計算された j 番目の特徴のハッシュ特徴値が格納されます。

ハッシュ特徴の計算方法を指定するには、モデルの Method プロパティを使用します。

履歴データを複数の領域に分割するブレークポイント。double 値、duration オブジェクト、または datetime オブジェクトの行ベクトルとして指定します。ブレークポイントの行ベクトルは次のとおりでなければなりません。

  • 増加する順である

  • 単位と形式が関数 fit で使用される学習データと互換性がある

単一の領域を使用するには、RegimeSplit[] として指定します。

領域ごとに個別のハッシュ テーブルが生成されます。RUL の予測は、テスト データが属する領域のハッシュ特徴に対する類似性に基づきます。RegimeSplit の値を変更する場合、fit を使用してモデルに再学習させる必要があります。

次の場合に、RegimeSplit を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

この プロパティ は読み取り専用です。

アンサンブル メンバーの寿命。double ベクトルまたは duration オブジェクト ベクトルとして指定し、関数 fit でアンサンブル メンバーの劣化プロファイルから計算します。

RUL 推定の最近傍の数。Inf または有限の正の整数として指定します。NumNearestNeighborsInf の場合、predictRUL による推定時にすべてのアンサンブル メンバーが使用されます。

次の場合に、NumNearestNeighbors を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

ハッシュ特徴の計算方法。次のいずれかとして指定します。

  • "minmaxstd" — データの最小値、最大値、および標準偏差を抽出します。このオプションでは、NaN を含む観測値は除外されます。この方法を使用する場合、HashTable は M 行 3 列になります。ここで、M はアンサンブル メンバーの数です。

  • 関数ハンドル — 列ベクトル、table、または timetable として劣化データを受け取り、特徴の行ベクトルを返すカスタム関数を使用します。以下に例を示します。

    mdl.Method = @(x) [mean(x),std(x),kurtosis(x),median(x)]

次の場合に、Method を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

距離の計算方法。次のいずれかとして指定します。

  • "euclidian" — ハッシュ ベクトル間の距離の 2 ノルムを使用します。

  • "absolute" — ハッシュ ベクトル間の距離の 1 ノルムを使用します。

  • 関数ハンドル — 次の形式のカスタム関数を使用します。

    D = distanceFunction(xTest,xEnsemble)

    ここで

    • xTest は、テスト コンポーネントのハッシュ特徴を含む長さ N の行ベクトルです。ここで、N はハッシュ特徴の数です。

    • xEnsemble は、アンサンブル コンポーネントのハッシュ特徴の M 行 N 列の配列です。ここで、M は、当てはめたモデル内のアンサンブル コンポーネントの数です。xEnsemble(i,:) には、i 番目のアンサンブル メンバーのハッシュ特徴が格納されます。

    • D は、長さ M の列ベクトルです。ここで、D(i) は、テストの特徴ベクトルと i 番目のアンサンブル メンバーの特徴ベクトルの間の距離です。

    カスタム距離関数の使用例については、ハッシュ類似性モデルのカスタム距離関数の指定を参照してください。

次の場合に、Distance を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

同順位を含めるためのフラグ。true または false として指定します。IncludeTiestrue の場合、モデルにおいて、テスト コンポーネントのデータまでの距離が K 番目に短い距離よりも短いすべての近傍が含められます。ここで、K は NumNearestNeigbors と等しくなります。

次の場合に、IncludeTies を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

ハッシュ特徴を生成する前に特徴データを標準化するためのフラグ。true または false として指定します。Standardizetrue の場合、特徴 X(X-mean(X))/std(X) になるように特徴データが標準化されます。

次の場合に、Standardize を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

ライフタイム変数。有効な MATLAB® 変数名または "" を含む string として指定します。

関数 fit を使用してモデルを学習させるとき、学習データが次のいずれかの場合:

  • table の場合、LifeTimeVariable が table の変数名のいずれかに一致する必要がある

  • timetable の場合、LifeTimeVariable は、table の変数名の 1 つ、または時間変数の次元名 data.Properties.DimensionNames{1} にする必要がある

次の場合に、LifeTimeVariable を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 関数 fit を呼び出す際の引数として使用する

  • モデル作成後にドット表記を使用する

ライフタイム変数の単位。string として指定します。

ライフタイム変数の単位は時間ベースとする必要はありません。テスト コンポーネントの寿命は、走行距離 (マイル) や消費燃料 (ガロン) などの使用量変数で測定できます。

劣化変数名。string または string 配列として指定します。DataVariables の string は、有効な MATLAB 変数名でなければなりません。

次の場合に、DataVariables を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 関数 fit を呼び出す際の引数として使用する

  • モデル作成後にドット表記を使用する

関数 fit によるハッシュ テーブルの生成に並列計算を使用するためのフラグ。true または false のいずれかとして指定します。

次の場合に、UseParallel を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

記録用のその他のモデル情報。任意のデータ型またはデータ形式として指定します。モデルでは、この情報を使用しません。

次の場合に、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")

学習データを読み込みます。

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

拡張機能

バージョン履歴

R2018a で導入