Main Content

tspartition

交差検証用の時系列データの分割

R2022b 以降

    説明

    tspartition オブジェクトは、データ セットの指定されたサイズに基づいて、規則的にサンプリングされた時系列データのセットを分割します。このオブジェクトは、エクスパンディング ウィンドウ交差検証、スライディング ウィンドウ交差検証、またはホールドアウト検証を使って時系列回帰モデルを検証するために学習セットとテスト セットを定義するときに使用します。学習インデックスの抽出のためにオブジェクト関数 training を使用し、テスト インデックスの抽出のためにオブジェクト関数 test を使用します。

    tspartition を時系列予想に使用する例については、Perform Time Series Direct Forecasting with directforecasterを参照してください。

    作成

    説明

    c = tspartition(n,"ExpandingWindow",t) は、エクスパンディング ウィンドウを使用して n 個の時間依存観測値を分割する tspartition オブジェクト c を作成します。tspartition は、データ セットを拡張学習セットと固定サイズのテスト セットをもつ t 個のウィンドウに分割します。

    c = tspartition(n,"SlidingWindow",t) は、スライディング ウィンドウを使用して n 個の時間依存観測値を分割する tspartition オブジェクト c を作成します。tspartition は、データ セットを固定サイズの学習セットとテスト セットをもつ t 個のウィンドウに分割します。

    c = tspartition(n,"Holdout",p) は、n 個の観測値に対するホールドアウト検証用に時間ベースの分割を定義する tspartition オブジェクト c を作成します。tspartition は、n 個の観測値を学習セットとテスト セットに分割します。ここで、p はテスト セット内の観測値の比率または数を決定します。

    c = tspartition(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、名前と値の引数 GapSize を使用して、各学習セットの末尾から対応するテスト セットの先頭より前までの間で除外する観測値の数を指定できます。

    入力引数

    すべて展開する

    時系列データ セットに含まれている観測値の数。正の整数スカラーとして指定します。

    例: 10000

    データ型: single | double

    作成するテスト セットの数。正の整数スカラーとして指定します。t は観測値の総数 n よりも小さくなければなりません。

    例: 5

    データ型: single | double

    ホールドアウト検証に使用されるテスト セット内の観測値の比率または数。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。

    • p が範囲 (0,1) にある場合、tspartition はテスト セットとして約 p*n 個の最新の観測値を選択します。

    • p が正の整数の場合、tspartition はテスト セットとして p 個の最新の観測値を選択します。

    データ型: single | double

    名前と値の引数

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

    例: tspartition(10000,"ExpandingWindow",5,MaxTrainSize=7500) は、10,000 個の観測値を拡張学習セットと固定サイズのテスト セットをもつ 5 つの区画に分割します。各学習セットに 7500 個を超える観測値を含めることはできません。

    時間枠を作成するための開始方向。"forward" または "reverse" を指定します。

    • "forward"tspartition では必ず、最も古い観測値が最初のウィンドウに含まれます。一部の最新の観測値が交差検証から省略される可能性があります。

    • "reverse"tspartition では必ず、最新の観測値が最後のウィンドウに含まれます。一部の古い観測値が交差検証から省略される可能性があります。

    メモ

    この名前と値の引数は、エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証でのみ有効です。

    例: Direction="forward"

    データ型: char | string

    各学習セットの末尾から対応するテスト セットの先頭より前までの間で除外する観測値の数。範囲 [0,1) のスカラー、または正の整数スカラーとして指定します。

    • GapSize の値が範囲 [0,1) にある場合、tspartition は約 GapSize*n 個の観測値を除外します。

    • GapSize の値が正の整数の場合、tspartitionGapSize 個の観測値を除外します。

    例: GapSize=10

    データ型: single | double

    すべての学習セットの最大サイズ。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。

    • MaxTrainSize の値が範囲 (0,1) にある場合、tspartition は各学習セットに最大 MaxTrainSize*n 個の観測値を含めます。

    • MaxTrainSize の値が正の整数の場合、tspartition は各学習セットに最大 MaxTrainSize 個の観測値を含めます。

    メモ

    この名前と値の引数は、エクスパンディング ウィンドウ交差検証でのみ有効です。

    例: MaxTrainSize=500

    データ型: single | double

    すべての学習セットの最小サイズ。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。

    • MinTrainSize の値が範囲 (0,1) にある場合、tspartition は各学習セットに少なくとも MinTrainSize*n 個の観測値を含めます。

    • MinTrainSize の値が正の整数の場合、tspartition は各学習セットに少なくとも MinTrainSize 個の観測値を含めます。

    他の名前と値の引数を指定しない場合、既定値は floor(n/(t+1)) です (nt を参照)。

    メモ

    この名前と値の引数は、エクスパンディング ウィンドウ交差検証でのみ有効です。

    例: MinTrainSize=100

    データ型: single | double

    連続するウィンドウ間のステップ長。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。具体的には、StepSize の値は 2 つの連続するテスト セットの末尾間のステップ数です。

    • StepSize の値が範囲 (0,1) にある場合、tspartition は約 StepSize*n 個のステップで連続するテスト セットを分割します。

    • StepSize の値が正の整数の場合、tspartitionStepSize 個のステップで連続するテスト セットを分割します。

    他の名前と値の引数を指定しない場合、既定値は floor(n/(t+1)) です (nt を参照)。

    メモ

    この名前と値の引数は、エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証でのみ有効です。

    例: StepSize=50

    データ型: single | double

    すべての学習セットのサイズ。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。

    • TrainSize の値が範囲 (0,1) にある場合、tspartition は各学習セットに約 TrainSize*n 個の観測値を含めます。

    • TrainSize の値が正の整数の場合、tspartition は各学習セットに TrainSize 個の観測値を含めます。

    他の名前と値の引数を指定しない場合、既定値は floor(n/(t+1)) です (nt を参照)。

    メモ

    この名前と値の引数は、スライディング ウィンドウ交差検証でのみ有効です。

    例: TrainSize=500

    データ型: single | double

    すべてのテスト セットのサイズ。範囲 (0,1) のスカラー、または正の整数スカラーとして指定します。

    • TestSize の値が範囲 (0,1) にある場合、tspartition は各テスト セットに約 TestSize*n 個の観測値を含めます。

    • TestSize の値が正の整数の場合、tspartition は各テスト セットに TestSize 個の観測値を含めます。

    他の名前と値の引数を指定しない場合、既定値は floor(n/(t+1)) です (nt を参照)。

    メモ

    この名前と値の引数は、エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証でのみ有効です。

    例: TestSize=100

    データ型: single | double

    プロパティ

    すべて展開する

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

    検証分割のタイプ。'expanding-window''holdout'、または 'sliding-window' として返されます。

    データ型: char

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

    観測値の数。正の整数スカラーとして返されます。

    データ型: single | double

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

    テスト セットの数。正の整数スカラーとして返されます。ホールドアウト検証の場合、NumTestSets の値は 1 です。エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証の場合、NumTestSets の値は交差検証に使用するウィンドウの数を示します。

    データ型: single | double

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

    各学習セットのサイズ。ホールドアウト検証の場合は正の整数スカラー、エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証の場合は正の整数ベクトルとして返されます。

    データ型: single | double

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

    各テスト セットのサイズ。ホールドアウト検証の場合は正の整数スカラー、エクスパンディング ウィンドウ交差検証とスライディング ウィンドウ交差検証の場合は正の整数ベクトルとして返されます。

    データ型: single | double

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

    連続するウィンドウ間のステップ長。NumTestSets の値が 1 より大きい場合は正の整数スカラー、それ以外の場合は NaN として返されます。

    データ型: single | double

    オブジェクト関数

    test時系列交差検証用のテスト インデックス
    training時系列交差検証用の学習インデックス

    すべて折りたたむ

    エクスパンディング ウィンドウ交差検証の tspartition オブジェクトの学習セットとテスト セットに含まれる観測値を特定します。

    20 個の時間依存観測値を使用して 3 つの学習セットと 3 つのテスト セットを作成します。各学習セットとそれに対応するテスト セットの間のギャップとして 2 つの観測値を指定します。

    c = tspartition(20,"ExpandingWindow",3, ...
        GapSize=2);

    3 つのウィンドウについて学習セットのインデックスを特定します。値 1 (true) は、対応する観測値がそのウィンドウの学習セット内にあることを示します。

    trainWindow1 = training(c,1);
    trainWindow2 = training(c,2);
    trainWindow3 = training(c,3);

    3 つのウィンドウについてテスト セットのインデックスを特定します。値 1 (true) は、対応する観測値がそのウィンドウのテスト セット内にあることを示します。

    testWindow1 = test(c,1);
    testWindow2 = test(c,2);
    testWindow3 = test(c,3);

    学習セットとテスト セットのインデックスを 1 つの行列に結合します。ここで、値 1 は学習観測値を示し、値 2 はテスト観測値を示します。

    data = [trainWindow1 + 2*testWindow1, ...
        trainWindow2 + 2*testWindow2, ...
        trainWindow3 + 2*testWindow3];

    ヒート マップを使用して異なるセットを可視化します。

    colormap = lines(3);
    heatmap(double(data),ColorbarVisible="off", ...
        Colormap=colormap);
    xlabel("Window")
    ylabel("Observation")
    title("Expanding Window Cross-Validation Scheme")

    Figure contains an object of type heatmap. The chart of type heatmap has title Expanding Window Cross-Validation Scheme.

    各ウィンドウについて、赤で示されている (値が 1 の) 観測値は学習セット内にあり、黄色で示されている (値が 2 の) 観測値はテスト セット内にあり、青で示されている (値が 0 の) 観測値は無視されます。たとえば、観測値 11 は、ウィンドウ 1 ではテスト観測値、ウィンドウ 2 ではギャップ観測値、ウィンドウ 3 では学習観測値です。

    スライディング ウィンドウ交差検証の tspartition オブジェクトの学習セットとテスト セットに含まれる観測値を特定します。

    20 個の時間依存観測値を使用して 5 つの学習セットと 5 つのテスト セットを作成します。

    c = tspartition(20,"SlidingWindow",5);

    5 つのウィンドウについて学習セットのインデックスを特定します。値 1 (true) は、対応する観測値がそのウィンドウの学習セット内にあることを示します。

    trainWindows = zeros(c.NumObservations,c.NumTestSets);
    for i = 1:c.NumTestSets
        trainWindows(:,i) = training(c,i);
    end

    5 つのウィンドウについてテスト セットのインデックスを特定します。値 1 (true) は、対応する観測値がそのウィンドウのテスト セット内にあることを示します。

    testWindows = zeros(c.NumObservations,c.NumTestSets);
    for i = 1:c.NumTestSets
        testWindows(:,i) = test(c,i);
    end

    学習セットとテスト セットのインデックスを 1 つの行列に結合します。ここで、値 1 は学習観測値を示し、値 2 はテスト観測値を示します。

    data = trainWindows + 2*testWindows;

    ヒート マップを使用して異なるセットを可視化します。

    colormap = lines(3);
    heatmap(double(data),ColorbarVisible="off", ...
        Colormap=colormap);
    xlabel("Window")
    ylabel("Observation")
    title("Sliding Window Cross-Validation Scheme")

    Figure contains an object of type heatmap. The chart of type heatmap has title Sliding Window Cross-Validation Scheme.

    各ウィンドウについて、赤で示されている (値が 1 の) 観測値は学習セット内にあり、黄色で示されている (値が 2 の) 観測値はテスト セット内にあり、青で示されている (値が 0 の) 観測値は無視されます。たとえば、観測値 9 ~ 11 は、ウィンドウ 2 ではテスト観測値、ウィンドウ 3 では学習観測値です。学習セット サイズ、テスト セット サイズ、ステップ サイズ、およびスライディング ウィンドウを作成するための方向の既定値が原因で、tspartition では一部の最も古い観測値 (1 および 2) がどのウィンドウでも使用されません。

    ホールドアウト検証のために tspartition オブジェクトの学習セットとテスト セット内にある観測値を特定します。

    20 個の時間依存観測値の 25% を使用してテスト セットを作成します。残りの観測値は、対応する学習セット内にあります。

    c = tspartition(20,"Holdout",0.25);

    テスト セットのインデックスを特定します。

    testIndices = test(c);

    ヒート マップを使用して観測値の 2 つのセットを可視化します。

    h = heatmap(double(testIndices),ColorbarVisible="off");
    h.XDisplayLabels = "";
    ylabel("Observation")
    title("Holdout Validation Scheme")

    Figure contains an object of type heatmap. The chart of type heatmap has title Holdout Validation Scheme.

    薄い青で示されている (値が 0 の) 観測値は学習セット内にあり、濃い青で示されている (値が 1 の) 観測値はテスト セット内にあります。時系列データのホールドアウト検証方式では、最新の観測値 (この場合は、観測値 16 ~ 20) はテスト セット内にあります。

    バージョン履歴

    R2022b で導入