ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fscnca

分類に近傍成分分析を使用する特徴選択

説明

mdl = fscnca(X,Y) は、X 内の予測子と Y 内の応答を使用して、分類用の特徴選択を実行します。

fscnca は、正則化がある近傍成分分析 (NCA) を対角的に適用することにより、特徴量の重みを学習します。

mdl = fscnca(X,Y,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、分類用の特徴選択を実行します。

すべて折りたたむ

応答変数が 3、9 および 15 番目の予測子に依存する遊びのデータを生成します。

rng(0,'twister'); % For reproducibility
N = 100;
X = rand(N,20);
y = -ones(N,1);
y(X(:,3).*X(:,9)./X(:,15) < 0.4) = 1;

分類用の近傍成分分析モデルをあてはめます。

mdl = fscnca(X,y,'Solver','sgd','Verbose',1);
 o Tuning initial learning rate: NumTuningIterations = 20, TuningSubsetSize = 100

|===============================================|
|    TUNING    | TUNING SUBSET |    LEARNING    |
|     ITER     |   FUN VALUE   |      RATE      |
|===============================================|
|            1 | -3.755936e-01 |   2.000000e-01 |
|            2 | -3.950971e-01 |   4.000000e-01 |
|            3 | -4.311848e-01 |   8.000000e-01 |
|            4 | -4.903195e-01 |   1.600000e+00 |
|            5 | -5.630190e-01 |   3.200000e+00 |
|            6 | -6.166993e-01 |   6.400000e+00 |
|            7 | -6.255669e-01 |   1.280000e+01 |
|            8 | -6.255669e-01 |   1.280000e+01 |
|            9 | -6.255669e-01 |   1.280000e+01 |
|           10 | -6.255669e-01 |   1.280000e+01 |
|           11 | -6.255669e-01 |   1.280000e+01 |
|           12 | -6.255669e-01 |   1.280000e+01 |
|           13 | -6.255669e-01 |   1.280000e+01 |
|           14 | -6.279210e-01 |   2.560000e+01 |
|           15 | -6.279210e-01 |   2.560000e+01 |
|           16 | -6.279210e-01 |   2.560000e+01 |
|           17 | -6.279210e-01 |   2.560000e+01 |
|           18 | -6.279210e-01 |   2.560000e+01 |
|           19 | -6.279210e-01 |   2.560000e+01 |
|           20 | -6.279210e-01 |   2.560000e+01 |

 o Solver = SGD, MiniBatchSize = 10, PassLimit = 5

|==========================================================================================|
|   PASS   |     ITER     | AVG MINIBATCH | AVG MINIBATCH |   NORM STEP   |    LEARNING    |
|          |              |   FUN VALUE   |   NORM GRAD   |               |      RATE      |
|==========================================================================================|
|        0 |            9 | -5.658450e-01 |  4.492407e-02 |  9.290605e-01 |   2.560000e+01 |
|        1 |           19 | -6.131382e-01 |  4.923625e-02 |  7.421541e-01 |   1.280000e+01 |
|        2 |           29 | -6.225056e-01 |  3.738784e-02 |  3.277588e-01 |   8.533333e+00 |
|        3 |           39 | -6.233366e-01 |  4.947901e-02 |  5.431133e-01 |   6.400000e+00 |
|        4 |           49 | -6.238576e-01 |  3.445763e-02 |  2.946188e-01 |   5.120000e+00 |

         Two norm of the final step = 2.946e-01
Relative two norm of the final step = 6.588e-02, TolX = 1.000e-06
EXIT: Iteration or pass limit reached.

選択された特徴量をプロットします。無関連性な特徴量の重みはゼロに近いはずです。

figure()
plot(mdl.FeatureWeights,'ro')
grid on
xlabel('Feature index')
ylabel('Feature weight')

fscnca は、関連する特徴量を正しく判別しています。

標本データの読み込み

load ovariancancer; 
whos
  Name        Size                Bytes  Class     Attributes

  grp       216x1                 26784  cell                
  obs       216x4000            3456000  single              

この例では、WCX2 タンパク質配列を使用して生成された高解像度の卵巣癌データセットを使用します。このデータは、FDA-NCI Clinical Proteomics Program Databank によるものです。いくつかの前処理手順の後で、データセットには obs および grp という 2 つの変数が含まれています。変数 obs は、4000 個の特徴量と 216 個の観測値から構成されています。grp の各要素によって、obs の対応する行が属するグループが定義されます。

学習セットとテスト セットへのデータの分割

cvpartition を使用して、サイズが 160 の学習セットとサイズが 56 のテスト セットにデータを分割します。学習セットとテスト セットのグループ比率は、どちらも grp の場合とほとんど同じです。

rng(1); % For reproducibility
cvp = cvpartition(grp,'holdout',56)
cvp = 
Hold-out cross validation partition
   NumObservations: 216
       NumTestSets: 1
         TrainSize: 160
          TestSize: 56
Xtrain = obs(cvp.training,:);
ytrain = grp(cvp.training,:);
Xtest  = obs(cvp.test,:);
ytest  = grp(cvp.test,:);

特徴選択が必要であるかどうかの判別

あてはめを行わずに汎化誤差を計算します。

nca = fscnca(Xtrain,ytrain,'FitMethod','none');
L = loss(nca,Xtest,ytest)
L = 0.0893

このオプションでは、fscnca で指定される特徴量の重みの初期値 (この場合は既定の特徴量の重み) を使用して、近傍成分分析 (NCA) 特徴選択モデルの汎化誤差を計算します。

正則化パラメーターなし (Lambda = 0) で NCA をあてはめます。

nca = fscnca(Xtrain,ytrain,'FitMethod','exact','Lambda',0,...
      'Solver','sgd','Standardize',true);
L = loss(nca,Xtest,ytest)
L = 0.0714

損失値が改善されたので、特徴選択が有効であることがわかります。通常は、λ の値を調整すると結果が改善されます。

5 分割交差検証を使用して NCA の正則化パラメーターを調整します。

λ の調整とは、分類損失が最小になる λ の値を求めることを意味します。交差検証を使用して λ を調整するため、以下を行います。

1.学習データを 5 つに分割し、検定 (テスト) セットの個数を抽出します。各分割について、cvpartition は各データの 4/5 を学習セットとして、1/5 をテスト セットとして割り当てます。

cvp = cvpartition(ytrain,'kfold',5);
numvalidsets = cvp.NumTestSets;

λ の値を割り当て、損失関数の値を格納する配列を作成します。

n = length(ytrain);
lambdavals = linspace(0,20,20)/n;
lossvals = zeros(length(lambdavals),numvalidsets);

2.各分割の学習セットを使用して、λ の各値について NCA モデルに学習をさせます。

3.NCA モデルを使用して、分割内の対応するテスト セットの分類損失を計算します。損失の値を記録します。

4.このプロセスをすべての分割およびすべての λ の値に対して繰り返します。

for i = 1:length(lambdavals)
    for k = 1:numvalidsets
        X = Xtrain(cvp.training(k),:);
        y = ytrain(cvp.training(k),:);
        Xvalid = Xtrain(cvp.test(k),:);
        yvalid = ytrain(cvp.test(k),:);

        nca = fscnca(X,y,'FitMethod','exact', ...
             'Solver','sgd','Lambda',lambdavals(i), ...
             'IterationLimit',30,'GradientTolerance',1e-4, ...
             'Standardize',true);
                  
        lossvals(i,k) = loss(nca,Xvalid,yvalid,'LossFunction','classiferror');
    end
end

λ の各値について、分割から得られる平均損失を計算します。

meanloss = mean(lossvals,2);

平均損失値と λ の値をプロットします。

figure()
plot(lambdavals,meanloss,'ro-')
xlabel('Lambda')
ylabel('Loss (MSE)')
grid on

最小の平均損失に対応する最適な λ の値を求めます。

[~,idx] = min(meanloss) % Find the index
idx = 2
bestlambda = lambdavals(idx) % Find the best lambda value
bestlambda = 0.0066
bestloss = meanloss(idx)
bestloss = 0.0250

最適な λ の使用によるすべてのデータへの NCA モデルのあてはめと特徴量の重みのプロット

LBFGS ソルバーを使用し、予測子の値を標準化します。

nca = fscnca(Xtrain,ytrain,'FitMethod','exact','Solver','sgd',...
    'Lambda',bestlambda,'Standardize',true,'Verbose',1);
 o Tuning initial learning rate: NumTuningIterations = 20, TuningSubsetSize = 100

|===============================================|
|    TUNING    | TUNING SUBSET |    LEARNING    |
|     ITER     |   FUN VALUE   |      RATE      |
|===============================================|
|            1 |  2.403497e+01 |   2.000000e-01 |
|            2 |  2.275050e+01 |   4.000000e-01 |
|            3 |  2.036845e+01 |   8.000000e-01 |
|            4 |  1.627647e+01 |   1.600000e+00 |
|            5 |  1.023512e+01 |   3.200000e+00 |
|            6 |  3.864283e+00 |   6.400000e+00 |
|            7 |  4.743816e-01 |   1.280000e+01 |
|            8 | -7.260138e-01 |   2.560000e+01 |
|            9 | -7.260138e-01 |   2.560000e+01 |
|           10 | -7.260138e-01 |   2.560000e+01 |
|           11 | -7.260138e-01 |   2.560000e+01 |
|           12 | -7.260138e-01 |   2.560000e+01 |
|           13 | -7.260138e-01 |   2.560000e+01 |
|           14 | -7.260138e-01 |   2.560000e+01 |
|           15 | -7.260138e-01 |   2.560000e+01 |
|           16 | -7.260138e-01 |   2.560000e+01 |
|           17 | -7.260138e-01 |   2.560000e+01 |
|           18 | -7.260138e-01 |   2.560000e+01 |
|           19 | -7.260138e-01 |   2.560000e+01 |
|           20 | -7.260138e-01 |   2.560000e+01 |

 o Solver = SGD, MiniBatchSize = 10, PassLimit = 5

|==========================================================================================|
|   PASS   |     ITER     | AVG MINIBATCH | AVG MINIBATCH |   NORM STEP   |    LEARNING    |
|          |              |   FUN VALUE   |   NORM GRAD   |               |      RATE      |
|==========================================================================================|
|        0 |            9 |  4.016078e+00 |  2.835465e-02 |  5.395984e+00 |   2.560000e+01 |
|        1 |           19 | -6.726156e-01 |  6.111354e-02 |  5.021138e-01 |   1.280000e+01 |
|        1 |           29 | -8.316555e-01 |  4.024185e-02 |  1.196030e+00 |   1.280000e+01 |
|        2 |           39 | -8.838656e-01 |  2.333418e-02 |  1.225839e-01 |   8.533333e+00 |
|        3 |           49 | -8.669035e-01 |  3.413150e-02 |  3.421881e-01 |   6.400000e+00 |
|        3 |           59 | -8.906935e-01 |  1.946293e-02 |  2.232510e-01 |   6.400000e+00 |
|        4 |           69 | -8.778630e-01 |  3.561283e-02 |  3.290643e-01 |   5.120000e+00 |
|        4 |           79 | -8.857136e-01 |  2.516633e-02 |  3.902977e-01 |   5.120000e+00 |

         Two norm of the final step = 3.903e-01
Relative two norm of the final step = 6.171e-03, TolX = 1.000e-06
EXIT: Iteration or pass limit reached.

特徴量の重みをプロットします。

figure()
plot(nca.FeatureWeights,'ro')
xlabel('Feature index')
ylabel('Feature weight')
grid on

特徴量の重みおよび相対的なしきい値を使用して、特徴量を選択します。

tol    = 0.02;
selidx = find(nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)))
selidx = 72×1

   565
   611
   654
   681
   737
   743
   744
   750
   754
   839
      ⋮

テスト セットを使用して分類損失を計算します。

L = loss(nca,Xtest,ytest)
L = 0.0179

選択した特徴量の使用による観測値の分類

重みが 0 より大きい特徴量を学習データから抽出します。

features = Xtrain(:,selidx);

選択した特徴量を使用するサポート ベクター マシン分類器を、縮小した学習セットに適用します。

svmMdl = fitcsvm(features,ytrain);

特徴量の選択には使用されなかったテスト データに対する学習済み分類器の精度を評価します。

L = loss(svmMdl,Xtest(:,selidx),ytest)
L = single
    0

入力引数

すべて折りたたむ

予測子変数の値。n 行 p 列の行列を指定します。n は観測値の個数、p は予測子変数の個数です。

データ型: single | double

クラス ラベル。categorical ベクトル、logical ベクトル、数値ベクトル、string 配列、長さ n の文字ベクトルの cell 配列、または n 行の文字行列を指定します。n は観測値の個数です。Y の要素 i または行 i は、X の行 i (観測値 i) に対応するクラス ラベルです。

データ型: single | double | logical | char | string | cell | カテゴリカル

名前と値のペアの引数

オプションの Name,Value 引数のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'Solver','sgd','Weights',W,'Lambda',0.0003 は、ソルバーとして確率的勾配降下を、観測値の重みとしてベクトル W の値を指定し、正則化パラメーターとして 0.0003 を設定します。

近似オプション

すべて折りたたむ

モデルのあてはめ方式。'FitMethod' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'exact' — すべてのデータを使用してあてはめを実行します。

  • 'none' — あてはめを行いません。fscnca を呼び出すときに指定した特徴量の重みの初期値を使用して NCA モデルの汎化誤差を評価する場合に、このオプションを使用します。

  • 'average' — データをサブセットに分割し、exact 法を使用して各分割をあてはめ、特徴量の重みの平均を返します。名前と値のペアの引数 NumPartitions を使用して分割数を指定できます。

例: 'FitMethod','none'

'FitMethod','average' オプションで使用するデータの分割数。'NumPartitions' と 2 ~ n の整数値から構成されるコンマ区切りのペアとして指定します。n は観測値の個数です。

例: 'NumPartitions',15

データ型: double | single

過適合を防止するための正則化パラメーター。'Lambda' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。

観測値の個数 n が大きくなると、過適合の可能性が小さくなり、必要な正則化の量も少なくなります。正則化パラメーターを調整する方法の詳細については、分類用の関連する特徴量の特定および分類に NCA を使用して特徴量を判別するための正則化パラメーターの調整を参照してください。

例: 'Lambda',0.002

データ型: double | single

カーネルの幅。'LengthScale' と正の実数スカラーから構成されるコンマ区切りのペアとして指定します。

すべての予測子が同じスケールである場合、特性長スケールの値は 1 が妥当です。X 内の予測子の大きさが非常に異なる場合は、'Standardize',true を使用して予測子の値を標準化し、'LengthScale',1 を設定することを検討してください。

例: 'LengthScale',1.5

データ型: double | single

特徴量の重みの初期値。'InitialFeatureWeights' と正の実数スカラーによる p 行 1 列のベクトルから構成されるコンマ区切りのペアとして指定します。p は学習データ内の予測子の個数です。

特徴量の重みを最適化する正則化された目的関数は、凸型ではありません。このため、特徴量の重みの初期値が異なると結果が異なる可能性があります。通常は特徴量の重みの初期値をすべて 1 に設定すると良好に機能しますが、状況によっては rand(p,1) を使用するランダムな初期値の方が解の品質が向上する可能性があります。

データ型: double | single

観測値の重み。'ObservationWeights' と正の実数スカラーによる n 行 1 列のベクトルから構成されるコンマ区切りのペアとして指定します。一部の観測値の重要度を他の観測値に比べて大きくするには、観測値の重みを使用します。既定の重みは、同じ重要度をすべての観測値に割り当てます。

データ型: double | single

各クラスの事前確率。'Prior' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'empirical'fscnca は、クラスの事前確率をクラスの頻度から取得します。

  • 'uniform'fscnca は、すべてのクラス確率を均等に設定します。

  • 次の 2 つのフィールドがある構造体。

    • ClassProbs — クラス確率のベクトル。数値の合計が 1 を超える場合、fsnca は合計が 1 になるようにこれらを正規化します。

    • ClassNamesClassProbs のクラス確率に対応するクラス名。

例: 'Prior','uniform'

予測子データの標準化のインジケーター。'Standardize'false または true から構成されるコンマ区切りのペアとして指定します。詳細は、標準化の影響を参照してください。

例: 'Standardize',true

データ型: logical

収束概要表示の詳細レベル インジケーター。'Verbose' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 0 — 収束概要なし

  • 1 — 勾配のノルムと目的関数の値を収束概要に含める

  • 1 より大きい値 — あてはめアルゴリズムに応じた、より多くの収束情報

    'minibatch-lbfgs' ソルバーを使用する場合に詳細レベルを 1 より大きい値にすると、中間的なミニバッチ LBFGS のあてはめによる反復ログが収束情報に含まれます。

例: 'Verbose',1

データ型: double | single

特徴量の重みを推定するソルバーのタイプ。'Solver' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'lbfgs' — メモリ制限 Broyden-Fletcher-Goldfarb-Shanno (LBFGS) アルゴリズム

  • 'sgd' — 確率的勾配降下 (SGD) アルゴリズム

  • 'minibatch-lbfgs' — LBFGS アルゴリズムをミニバッチに適用した確率的勾配降下

既定値は、n ≤ 1000 の場合は 'lbfgs'、n > 1000 の場合は 'sgd' です。

例: 'solver','minibatch-lbfgs'

損失関数。'LossFunction' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'classiferror' — 誤分類誤差

    l(yi,yj)={1ifyiyj,0otherwise.

  • @lossfun — カスタム損失関数のハンドル。損失関数の形式は次のとおりです。

    function L = lossfun(Yu,Yv)
    % calculation of loss
    ...
    Yu は u 行 1 列のベクトル、Yv は v 行 1 列のベクトルです。L は、L(i,j)Yu(i) および Yv(j) の損失値となる u 行 v 列の行列です。

最小化対象の目的関数には、損失関数 l(yi,yj) が次のように含まれます。

f(w)=1ni=1nj=1,jinpijl(yi,yj)+λr=1pwr2,

ここで、w は特徴量の重みのベクトル、n は観測値の個数、p は予測子変数の個数です。pijxjxi の基準点である確率です。詳細については、分類の場合の NCA 特徴選択を参照してください。

例: 'LossFunction',@lossfun

目的関数と勾配の計算に使用するメモリのサイズ (MB)。'CacheSize' と整数から構成されるコンマ区切りのペアとして指定します。

例: 'CacheSize',1500MB

データ型: double | single

LBFGS のオプション

すべて折りたたむ

ソルバーが 'lbfgs' である場合のヘッセ近似の履歴バッファー サイズ。'HessianHistorySize' と正の整数から構成されるコンマ区切りのペアとして指定します。ヘッセ行列の逆行列に対する近似を構築するために、各反復で最大 HessianHistorySize 回の最新の反復が使用されます。

例: 'HessianHistorySize',20

データ型: double | single

'lbfgs' ソルバーの初期ステップ サイズ。'InitialStepSize' と正の実数スカラーから構成されるコンマ区切りのペアとして指定します。既定では、初期ステップ サイズは自動的に決定されます。

データ型: double | single

直線探索法。'LineSearchMethod' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'weakwolfe' — 弱 Wolfe 直線探索

  • 'strongwolfe' — 強 Wolfe 直線探索

  • 'backtracking' — バックトラッキング直線探索

例: 'LineSearchMethod','backtracking'

直線探索の最大反復回数。'MaxLineSearchIterations' と正の整数から構成されるコンマ区切りのペアとして指定します。

例: 'MaxLineSearchIterations',25

データ型: double | single

lbfgs ソルバーの、勾配ノルムに対する収束の相対許容誤差。'GradientTolerance' と正の実数スカラーから構成されるコンマ区切りのペアとして指定します。

例: 'GradientTolerance',0.000002

データ型: double | single

SGD のオプション

すべて折りたたむ

'sgd' ソルバーの初期学習率。'InitialLearningRate' と正の実数スカラーから構成されるコンマ区切りのペアとして指定します。

ソルバー タイプとして 'sgd' を使用する場合、学習率は 'InitialLearningRate' で指定された値から始まって反復ごとに減衰します。

既定の 'auto' では、データの小規模なサブセットに対する実験を使用して初期学習率が決定されます。初期学習率を自動調整するための反復回数を指定するには、名前と値のペアの引数 NumTuningIterations を使用します。初期学習率の自動調整で使用する観測値の個数を指定するには、名前と値のペアの引数 TuningSubsetSize を使用します。

ソルバー タイプが 'minibatch-lbfgs' である場合、'InitialLearningRate' を非常に大きい値に設定できます。この場合、前回のミニバッチによる特徴量の重みの初期値を使用して、各ミニバッチに LBFGS が個別に適用されます。

選択した初期学習率によって目的値が各反復で減少していることを確認するには、mdl.FitInfo プロパティに格納されている Objective の値に対して Iteration をプロットします。

mdl.FeatureWeights に等しい 'InitialFeatureWeights'refit 法を使用すると、最新の解から始めて、さらに反復を実行することができます。

例: 'InitialLearningRate',0.9

データ型: double | single

'sgd' ソルバーの場合に各バッチで使用する観測値の個数。'MiniBatchSize' と 1 ~ n の正の整数から構成されるコンマ区切りのペアとして指定します。

例: 'MiniBatchSize',25

データ型: double | single

ソルバーが 'sgd' である場合に n 個の観測値すべてを通過する最大回数。'PassLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。すべてのデータを 1 回通過することをエポックと呼びます。

例: 'PassLimit',10

データ型: double | single

'sgd' ソルバーの場合の収束概要を表示するバッチの頻度。'NumPrint' と正の整数から構成されるコンマ区切りのペアとして指定します。この引数は、'Verbose' の値が 0 より大きい場合に適用されます。コマンド ラインに表示される収束概要の各行について NumPrint 個のミニバッチが処理されます。

例: 'NumPrint',5

データ型: double | single

'sgd' ソルバーの調整反復回数。'NumTuningIterations' と正の整数から構成されるコンマ区切りのペアとして指定します。このオプションは、'InitialLearningRate','auto' の場合のみ有効です。

例: 'NumTuningIterations',15

データ型: double | single

初期学習率の調整に使用する観測値の個数。'TuningSubsetSize' と 1 ~ n の正の整数値から構成されるコンマ区切りのペアとして指定します。このオプションは、'InitialLearningRate','auto' の場合のみ有効です。

例: 'TuningSubsetSize',25

データ型: double | single

SGD または LBFGS のオプション

すべて折りたたむ

最大反復回数。'IterationLimit' と正の整数で構成されるコンマ区切りのペアとして指定します。既定値は、SGD の場合は 10000、LBFGS およびミニバッチ LBFGS の場合は 1000 です。

反復とは、バッチを 1 回通過することです。エポックとは、すべてのデータを 1 回通過することです。データが k 個のミニバッチに分割されている場合、どのエポックも k 回の反復に等しくなります。

例: 'IterationLimit',250

データ型: double | single

ステップ サイズに対する収束の許容誤差。'StepTolerance' と正の実数スカラーから構成されるコンマ区切りのペアとして指定します。'lbfgs' ソルバーは絶対ステップ許容誤差を、'sgd' ソルバーは相対ステップ許容誤差を使用します。

例: 'StepTolerance',0.000005

データ型: double | single

ミニバッチ LBFGS のオプション

すべて折りたたむ

ミニバッチ LBFGS の各ステップにおける最大反復回数。'MiniBatchLBFGSIterations' と正の整数から構成されるコンマ区切りのペアとして指定します。

例: 'MiniBatchLBFGSIterations',15

ミニバッチ LBFGS アルゴリズムは、SGD 法と LBFGS 法の組み合わせです。したがって、SGD ソルバーと LBFGS ソルバーに適用される名前と値のペアの引数は、すべてミニバッチ LBFGS アルゴリズムにも適用されます。

データ型: double | single

出力引数

すべて折りたたむ

分類用の近傍成分分析モデル。FeatureSelectionNCAClassification オブジェクトとして返されます。

R2016b で導入