メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

matrixProfile

多変量時系列のすべてのサブシーケンス ペア間の行列プロファイルを計算

R2024b 以降

説明

行列プロファイルを返す

MP = matrixProfile(X,len) は、単変量時系列または多変量時系列 X"行列プロファイル" を返します。行列プロファイルは、X の長さ len の各サブシーケンスとそれに最も近い近傍との間の最小の z 正規化ユークリッド距離のベクトルです。

  • X がベクトルの場合、単一チャネルとして扱われます。

  • X が行列の場合、各列について行列プロファイルが別々に計算されます (多変量解)。

MP の上位の不一致およびモチーフの位置は、関数 findDiscord および findMotif を使用して検出できます。

[MP,MPI]=matrixProfile(X,len) は、サブシーケンスに対する最近傍の位置の行列プロファイル インデックス ベクトル MPI も返します。

[___] = matrixProfile(___,Name=Value) は、前述の構文の引数に加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、並列処理を使用するには、UseParalleltrue に設定します。

行列プロファイルのプロット

matrixProfile(___) は、行列プロファイルの対話型プロットをプロットします。この構文は、前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

T1 で構成されるデータを読み込みます。T1 は、劣化する DC モーターの電機子電流の測定値を含む timetable です。

load matrix_profile_data T1

時系列変数 XT1.MotorCurrent、クエリ セグメントの長さを 100 と指定します。

X = T1.MotorCurrent;
len = 100;

行列プロファイルを計算します。

[MP,MPI] = matrixProfile(X,len);

行列プロファイルをプロットします。

matrixProfile(X,len)

Matrix Profile Plots. The Time-Series plot is on the top. Overlays of yellow and purple on the plotted data show the two top motif pairs and the discord. The Matrix Profile plot, which plots the distances, is in the middle. The Subsequences plot is on the bottom, and shows the subsequences for the top two motif pairs and the discord together.

プロファイルに上位のモチーフ ペア (近傍と最も整合するセグメント) が 2 つ示されており、その位置は 6717 と 3119 です。これらの位置は行列プロファイル プロットの最小値と一致しています。

さらに、位置 9797 に不一致が 1 つ示されています。このサブシーケンスは、その長さの大部分でモチーフのサブシーケンスから明らかに逸脱しています。

findDiscord を使用して不一致をさらに検出します。これは、近傍からの距離が最も離れているセグメントの位置です。上位 4 つの位置を表示します。

locs = findDiscord(MP,MPI);
toplocs = locs(1:4)
toplocs = 4×1

        9797
        9800
        9802
        9792

対応する距離を表示します。

topdist = MP(toplocs)
topdist = 4×1

    8.3894
    8.2062
    8.1517
    7.9777

findDiscord の結果をプロットします。

figure
findDiscord(MP,MPI)

Figure contains an axes object. The axes object with title Matrix Profile, xlabel Time, ylabel Distance contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Distance, Discord.

互いに近くにある不一致は同じ異常の一部と考えられます。そのようなセグメントについては、不一致を 1 つだけ特定する必要があります。セグメントの間隔を改善し、不一致の数を 10 個までに制限します。

findDiscord(MP,MPI,MinSeparation=40,MaxNumDiscords=10)

findDiscord Plots. The Time-Series plot is on the top. The Matrix Profile plot is in the middle. The Matrix Profile Discord plot is on the bottom, and now shows discrete discord instances.

元の行列プロファイルで示されているように、最も高い不一致の位置は 9797 です。それ以外の位置の有意な不一致もプロットに示されています。

入力引数

すべて折りたたむ

評価する時系列。長さ n の数値ベクトル、または長さ n の複数の列を含む数値行列として指定します。X に欠損データがあってはなりません。

クエリ サブシーケンスの長さ。整数として指定します。len は時系列の長さ n よりも小さくなければなりません。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: MP = matrixProfile(X,len,UseParallel=true) は、並列処理を使用します。

クエリ開始位置 loc の両側の除外ゾーンの長さ。除外するデータ点の数として指定します。この引数により、クエリ サブシーケンス自体との誤一致が防止されます。

X がサブシーケンスの途中で終わっている場合の出力の長さを制御するオプション。次のオプションのいずれかとして指定します。

  • "discard" — 出力ベクトル MP および I の長さを nlen + 1 までで切り捨てます。ここで、nX の長さです。

  • "fill"MPlen – 1 個の NaN でパディングして distance および index の長さを n まで拡張します。ベクトル I の最後の len – 1 個の要素がシーケンス (nlen + 2:n) に設定されます。

MP の上限の計算の最大反復回数。整数として指定します。既定値は nlen+1 で、アルゴリズムが最後まで実行されます。

計算を高速化するために並列プールを使用するオプション。false (逐次計算を使用) または true (並列計算を使用) として指定します。

使用する行列プロファイル アルゴリズム。"STAMP" または "STOMP" として指定します。

  • STAMP アルゴリズム (Scalable Time series Anytime Matrix Profile) は、随時および並列の計算をサポートしており、通常は単変量時系列の適切な選択肢となります。

  • STOMP アルゴリズム (Scalable Time series Ordered Matrix Profile) は、STAMP アルゴリズムよりも log2(n) 倍高速です。GPU があり、随時の機能、つまり完了前にアルゴリズムを停止する機能は必要なく、それでも許容できる精度の解が得られる場合の多変量時系列に便利です。

.

出力引数

すべて折りたたむ

時系列 X の長さ len の各サブシーケンスとそのサブシーケンスに最も一致する長さ len の近傍との間の z 正規化距離を含む行列プロファイル。数値ベクトルとして返されます。

  • X がベクトルの場合、MP の計算時に単一チャネルとして扱われます。

  • X が行列の場合、各列について行列プロファイルが別々に計算されます。

MP の長さは、EndPoints の設定に応じて len または len – 1 のどちらかと等しくなります。

ExclusionZoneLength の値により、クエリ サブシーケンス自体との誤一致が防止されます。

MP の上位の不一致および上位のモチーフ ペアの位置は、関数 findDiscord および findMotif を使用してそれぞれ検出できます。

クエリ サブシーケンス x(loc:loc+len-1) に最も一致する X のサブシーケンス X(MPI(k):MPI(k)+len–1) の開始インデックス。整数ベクトルとして返されます。

参照

[1] Yeh, Chin-Chia Michael, et al. “Matrix Profile I: All Pairs Similarity Joins for Time Series: A Unifying View That Includes Motifs, Discords and Shapelets.” 2016 IEEE 16th International Conference on Data Mining (ICDM), IEEE, 2016, pp. 1317–22. DOI.org (Crossref), https://doi.org/10.1109/ICDM.2016.0179.

[2] Zhu, Yan, et al. “Matrix Profile II: Exploiting a Novel Algorithm and GPUs to Break the One Hundred Million Barrier for Time Series Motifs and Joins.” 2016 IEEE 16th International Conference on Data Mining (ICDM), IEEE, 2016, pp. 739–48. DOI.org (Crossref), https://doi.org/10.1109/ICDM.2016.0085.

拡張機能

すべて展開する

バージョン履歴

R2024b で導入

すべて展開する