メインコンテンツ

templateLinear

R2026b

線形学習器テンプレート

説明

t = templateLinear は、高次元データでの線形分類モデルまたは線形回帰モデルの学習に適した線形学習器テンプレートを返します。

例

t = templateLinear(Name=Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用してテンプレートを返します。たとえば、正則化のタイプまたは強度や、目的関数の最小化に使用するソルバーを指定できます。学習器を指定しない場合、既定値 "svm" が使用されます。

名前と値の引数 Type を使用してモデルのタイプを指定する場合、t をコマンド ウィンドウで表示すると、名前と値の引数を使用して指定したもの以外については、すべての構成可能なオプションが空 ([]) として示されます。モデルのタイプを指定しない場合、この表示では、空のオプションは非表示になります。学習中、空のオプションには既定値が使用されます。

例

例

すべて折りたたむ

既定の線形学習器テンプレートを作成し、これを使用して複数のバイナリ線形分類モデルを含む ECOC モデルに学習をさせます。

NLP のデータ セットを読み込みます。

load nlpdata

X は予測子データのスパース行列、Y はクラス ラベルの categorical ベクトルです。データには 13 個のクラスが含まれています。

既定の線形学習器テンプレートを作成します。

t = templateLinear
t = 
Fit template with properties:
    
     Method: 'Linear'
       Type: ''

   Configurable Options:

    Learner: 'svm'

t は線形学習器のテンプレート オブジェクトです。t の構成可能なオプションは、Learner を除いてすべて設定されていません。t を学習関数 (ECOC マルチクラス分類用の fitcecoc など) に渡すと、空のプロパティとオプションはそれぞれの既定値に設定されます。たとえば、Type は "classification" に設定されます。既定値を変更するには、templateLinear の名前と値の引数を参照してください。

複数のバイナリ線形分類モデルで構成される ECOC モデルに学習させます。これらの分類モデルは、ドキュメンテーション Web ページにおける単語の度数分布からソフトウェア製品を特定します。学習時間を短縮するため、予測子データを転置し、観測値が列に対応することを指定します。

X = X';
rng(1); % For reproducibility 
Mdl = fitcecoc(X,Y,Learners=t,ObservationsIn="columns")
Mdl = 
  CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: [comm    dsp    ecoder    fixedpoint    hdlcoder    phased    physmod    simulink    stats    supportpkg    symbolic    vision    xpc]
    ScoreTransform: 'none'
    BinaryLearners: {78×1 cell}
      CodingMatrix: [13×78 double]


  Properties, Methods

または、Learners="linear" を指定して、既定の線形分類モデルを含む ECOC モデルに学習させることができます。

メモリを節約するため、fitcecoc は線形分類学習器を含む学習済みの ECOC モデルを CompactClassificationECOC モデル オブジェクトで返します。

名前と値の引数

すべて展開する

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

例: templateLinear(Learner="logistic",Regularization="lasso",CrossVal="on") は、LASSO ペナルティがあるロジスティック回帰と 10 分割の交差検証を実装するように指定します。

分類モデルと回帰モデル

すべて展開する

正則化項の強度。"auto"、非負のスカラー、または非負値のベクトルとして指定します。

  • "auto" の場合、Lambda = 1/n です。

    • 交差検証の名前と値の引数 (CrossVal など) を指定した場合、n は分割内観測値の数です。

    • それ以外の場合、n は学習標本のサイズです。

  • 非負値のベクトルの場合、templateLinear は、Lambda の異なる値それぞれについて目的関数の最適化を逐次的に昇順で実行します。

    • Solver が "sgd" または "asgd" で Regularization が "lasso" の場合、templateLinear が前の係数の推定値を次の最適化反復のウォーム スタートとして使用することはありません。それ以外の場合、templateLinear はウォーム スタートを使用します。

    • Regularization が "lasso" の場合、templateLinear が Lambda の以後の値を使用して最適化を行うときに、係数の推定値 0 は値が保持されます。

    • templateLinear は、指定された正則化強度ごとに係数の推定値を返します。

例: Lambda=10.^(-(10:-2:2))

データ型: char | string | double | single

線形学習器のタイプ。"svm"、"logistic"、または "leastsquares" として指定します。

次の表では、f(x)=xβ+b. です。

  • β は p 個の係数のベクトルです。

  • x は p 個の予測子変数による観測値です。

  • b はスカラー バイアスです。

値アルゴリズム応答の範囲損失関数
"svm"サポート ベクター マシン (分類または回帰)

分類: y ∊ {–1,1}。陽性クラスの場合は 1、それ以外の場合は –1

回帰: y ∊ (-∞,∞)

分類: ヒンジ ℓ[y,f(x)]=max[0,1−yf(x)]

回帰: イプシロン不感応 ℓ[y,f(x)]=max[0,|y−f(x)|−ε]

"logistic"ロジスティック回帰 (分類のみ)y ∊ {–1,1}。陽性クラスの場合は 1、それ以外の場合は –1逸脱度 (ロジスティック) ℓ[y,f(x)]=log{1+exp[−yf(x)]}
"leastsquares"通常の最小二乗による線形回帰 (回帰のみ)y ∊ (-∞,∞)平均二乗誤差 (MSE) ℓ[y,f(x)]=12[y−f(x)]2

例: Learner="logistic"

データ型: char | string

複雑度ペナルティのタイプ。"lasso" または "ridge" として指定します。

最小化のための目的関数は、平均損失関数 (Learner を参照) と次の表の正則化項を加算することにより作成されます。

値説明
"lasso"LASSO (L1) ペナルティ: λ∑j=1p|βj|
"ridge"リッジ (L2) ペナルティ: λ2∑j=1pβj2

正則化項の強度 (式の λ) を指定するには、Lambda を使用します。

バイアス項 (β0) は正則化ペナルティから除外されます。

Solver が "sparsa" の場合、Regularization の既定値は "lasso" になります。それ以外の場合は、既定値は "ridge" です。

ヒント

  • 予測子変数を選択する場合は、"lasso" を指定します。変数の選択の詳細については、特徴選択の紹介を参照してください。

  • 最適化の精度を向上させるには、"ridge" を指定します。

例: Regularization="lasso"

目的関数の最小化手法。次の表の値をもつ文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。

値説明制限
"sgd"確率的勾配降下法 (SGD) [4][2] 
"asgd"平均化確率的勾配降下法 (ASGD) [7] 
"dual"SVM 用の双対 SGD [1][6]Regularization は "ridge"、Learner は "svm" でなければなりません。
"bfgs"Broyden-Fletcher-Goldfarb-Shanno 準ニュートン アルゴリズム (BFGS) [3]X の次元数が非常に多い場合は非効率的です。Regularization は "ridge" でなければなりません。
"lbfgs"メモリ制限 BFGS (LBFGS) [3]Regularization は "ridge" でなければなりません。
"sparsa"可分近似によるスパース再構成 (SpaRSA) [5]Regularization は "lasso" でなければなりません。

指定する項目によって、内容は次のように変わります。

  • 予測子データ セットに 100 個以下の予測子変数が格納されている場合にリッジ ペナルティ (Regularization を参照) を指定すると、既定のソルバーは "bfgs" になります。

  • 予測子データ セットに 100 個より多い予測子変数が格納されている場合に SVM モデル (Learner を参照) とリッジ ペナルティを指定すると、既定のソルバーは "dual" になります。

  • 予測子データ セットに 100 個以下の予測子変数が格納されている場合に LASSO ペナルティを指定すると、既定のソルバーは "sparsa" になります。

それ以外の場合、既定のソルバーは "sgd" になります。既定のソルバーはハイパーパラメーターの最適化を実行するときに変更できることに注意してください。詳細については、ハイパーパラメーターの最適化で使用される線形学習器ソルバーを正則化手法に基づいて決定を参照してください。

ソルバー名の string 配列または cell 配列を指定する場合、Lambda のそれぞれの値に対して、ソルバー j の解がソルバー j + 1 のウォーム スタートとして使用されます。

例: ["sgd","lbfgs"] は、オブジェクティブを解決するために SGD を適用し、解を LBFGS のウォーム スタートとして使用します。

ヒント

  • SGD および ASGD は他のソルバーより高速に目的関数を解決できるのに対し、LBFGS および SpaRSA は他のソルバーより正確な解が得られます。["sgd","lbfgs"] や ["sgd","sparsa"] のようにソルバーを組み合わせると、速度と精度の最適化のバランスをとることができます。

  • SGD と ASGD のいずれかを選択する場合、以下を考慮します。

    • SGD は反復あたりの時間が短くなりますが、収束するまでに必要な反復回数が多くなります。

    • ASGD は収束するまでに必要な反復回数が少なくなりますが、反復あたりの時間が長くなります。

  • 予測子データが高次元で Regularization が "ridge" の場合、Solver を次の組み合わせのいずれかに設定します。

    • "sgd"

    • "asgd"

    • "dual" (Learner が "svm" の場合)

    • "lbfgs"

    • ["sgd","lbfgs"]

    • ["asgd","lbfgs"]

    • ["dual","lbfgs"] (Learner が "svm" の場合)

    他の組み合わせも設定できますが、多くの場合、不十分な精度の解となります。

  • 予測子データが中~低次元で Regularization が "ridge" の場合、Solver を "bfgs" に設定します。

  • Regularization が "lasso" の場合、Solver を次の組み合わせのいずれかに設定します。

    • "sgd"

    • "asgd"

    • "sparsa"

    • ["sgd","sparsa"]

    • ["asgd","sparsa"]

例: Solver=["sgd","lbfgs"]

データ型: char | string | cell

線形係数の初期推定値 (β)。p 次元の数値ベクトルまたは p 行 L 列の数値行列として指定します。p はカテゴリカル変数用にダミー変数が作成された後の予測子変数の数 (詳細については、CategoricalPredictors を参照)、L は正則化強度値の数 (詳細については、Lambda を参照) です。

  • p 次元ベクトルを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。

    1. 初期値として Beta、正則化強度として Lambda の最小値を使用して最適化を行う。

    2. 前回の最適化で生成された推定値をウォーム スタートとして使用し、Lambda 内の次に小さい値を正則化強度として使用して、再度最適化を行う。

    3. Lambda の値をすべて使用するまでステップ 2 を繰り返す。

  • p 行 L 列の行列を指定した場合、目的関数が L 回最適化されます。反復 j では、初期値として Beta(:,j) が使用され、Lambda を昇順で並べ替えた後で正則化強度として Lambda(j) が使用されます。

Solver="dual" を設定した場合、Beta は無視されます。

データ型: single | double

切片の初期推定値 (b)。数値スカラーまたは L 次元の数値ベクトルとして指定します。L は正則化強度値の数です (詳細については、Lambda を参照)。

  • スカラーを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。

    1. 初期値として Bias、正則化強度として Lambda の最小値を使用して最適化を行う。

    2. 生成された推定値を次回の最適化の反復でウォーム スタートとして使用し、Lambda 内の次に小さい値を正則化強度として使用する。

    3. Lambda の値をすべて使用するまでステップ 2 を繰り返す。

  • L 次元ベクトルを指定した場合、目的関数が L 回最適化されます。反復 j では、初期値として Bias(j) が使用され、Lambda を昇順で並べ替えた後で正則化強度として Lambda(j) が使用されます。

  • 既定の設定では、次のようになります。

    • Learner が "logistic" の場合、gj は Y(j) が陽性クラスであれば 1、そうでなければ -1 になります。Bias は、学習の場合は g の加重平均、交差検証の場合は分割内観測値の加重平均になります。

    • Learner が "svm" の場合、Bias は 0 になります。

データ型: single | double

線形モデルの切片使用フラグ。true または false として指定します。

値説明
true線形モデルにバイアス項 b が追加され、推定されます。
false推定時に b = 0 に設定されます。

例: FitBias=false

データ型: logical

最適化後に線形モデルの切片を当てはめるフラグ。true または false として指定します。

値説明
false最適化時にバイアス項 b と係数 β が推定されます。
true

b を推定するため、以下が行われます。

  1. モデルを使用して β と b を推定する

  2. 分類スコアを推定する

  3. 最大精度が得られる分類スコアのしきい値を設定して b を再度当てはめる

true を指定する場合、FitBias は true でなければなりません。

例: PostFitBias=true

データ型: logical

R2023b 以降

線形モデルのタイプ。"classification" または "regression" として指定します。

値説明
"classification"分類線形学習器テンプレートを作成します。Type を "classification" と指定しない場合、近似関数 fitcecoc、testckfold、および fitsemigraph に t を渡すと、この値が設定されます。
"regression"回帰線形学習器テンプレートを作成します。Type を "regression" と指定しない場合、近似関数 directforecaster に t を渡すと、この値が設定されます。

例: Type="classification"

データ型: char | string

詳細レベル。0 または 1 として指定します。Verbose は、コマンド ラインにおける診断情報の表示を制御します。

値説明
0templateLinear は診断情報を表示しません。
1templateLinear は、目的関数の値、勾配の大きさ、および他の診断情報を定期的に表示します。

例: Verbose=1

データ型: single | double

回帰モデルのみ

すべて展開する

イプシロン不感応区間の幅の半分。非負のスカラー値を指定します。この引数は、サポート ベクター マシン学習器にのみ適用されます。

Epsilon の既定値は、iqr(Y)/13.49 です。これは、応答変数 Y の四分位数間範囲を使用した標準偏差の推定値です。iqr(Y) がゼロに等しい場合、Epsilon の既定値は 0.1 になります。

例: Epsilon=0.3

データ型: single | double

SGD および ASGD ソルバーのオプション

すべて展開する

ミニバッチのサイズ。正の整数として指定します。各反復では、学習データの観測値を BatchSize 個使用して勾配が推定されます。

  • 予測子データが数値行列の場合、既定値は 10 です。

  • 予測子データがスパース行列の場合、既定値は max([10,ceil(sqrt(ff))]) です。ここで、ff = numel(X)/nnz(X) (X の "スパース性係数") です。

例: BatchSize=100

データ型: single | double

学習率。正のスカラーとして指定します。LearnRate は、劣勾配をスケールすることによって最適化のステップ サイズを制御します。

  • Regularization が "ridge" の場合、LearnRate は初期学習率 γ0 を指定します。templateLinear は、次の式を使用して、反復 t の学習率 γt を決定します。

    γt=γ0(1+λγ0t)c.

    • λ は Lambda の値です。

    • Solver が "sgd" の場合、c = 1 です。

    • Solver が "asgd" の場合、c は 0.75 です[7]。

  • Regularization が "lasso" の場合、すべての反復について LearnRate は一定になります。

既定の設定では、LearnRate は 1/sqrt(1+max((sum(X.^2,obsDim)))) です。obsDim は、観測値が予測子データ X の列から構成されている場合は 1、それ以外の場合は 2 です。

例: LearnRate=0.01

データ型: single | double

発散 (最小値の限度を超える状態) が検出された場合に学習率を減少させるフラグ。true または false として指定します。

OptimizeLearnRate が true の場合、次のようになります。

  1. 数回の最適化反復について、LearnRate を学習率として使用して最適化が開始される。

  2. 目的関数の値が増加した場合、現在の学習率の半分の値を使用して再開される。

  3. 目的関数が減少するまで、ステップ 2 が繰り返される。

例: OptimizeLearnRate=true

データ型: logical

LASSO 切り捨て実行間のミニバッチの回数。正の整数として指定します。

切り捨て実行の後で、ソフトしきい値が線形係数に適用されます。つまり、k = TruncationPeriod 回のミニバッチが処理された後で、次を使用して係数推定 j が切り捨てられます。

β^j∗={β^j−utif β^j>ut,0if |β^j|≤ut,β^j+utif β^j<−ut.      

  • SGD の場合、β^j はミニバッチを次を満たす k の回数処理した後の係数 j の推定値です。ut=kγtλ.γt は反復 t における学習率です。λ は Lambda の値です。

  • ASGD の場合、β^j はミニバッチを次を満たす k の回数処理した後の係数 j の平均推定値です。ut=kλ.

Regularization が "ridge" の場合、TruncationPeriod は無視されます。

例: TruncationPeriod=100

データ型: single | double

SGD と ASGD の収束制御

すべて展開する

バッチを処理する最大回数。正の整数として指定します。BatchLimit 回のバッチが処理されると、最適化が終了します。

  • 既定の設定では、次のようになります。

    • データを通す回数は PassLimit 回です。

    • 複数のソルバーを指定し、SGD または ASGD を使用して次のソルバーの初期近似値を取得する場合、既定値は ceil(1e6/BatchSize) です。BatchSize は名前と値の引数 BatchSize の値です。

  • BatchLimit を指定した場合、templateLinear では、BatchLimit と PassLimit の引数のうち、処理する観測値の数が少なくなる方が使用されます。

例: BatchLimit=100

データ型: single | double

線形係数およびバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。

Bt=[βt′  bt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。‖Bt−Bt−1‖2‖Bt‖2<BetaTolerance で最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: BetaTolerance=1e-6

データ型: single | double

次回の収束チェックの前にバッチを処理する回数。正の整数として指定します。

バッチのサイズの指定について、BatchSize を参照してください。

既定の設定では、データ セット全体が通されるたびに約 10 回収束がチェックされます。

例: NumCheckConvergence=100

データ型: single | double

データを通す最大回数。正の整数として指定します。

データが完全に 1 回通されると、すべての観測値が処理されます。

データが通される回数が PassLimit になると、最適化が終了します。

BatchLimit を指定した場合、templateLinear では、BatchLimit と PassLimit の引数のうち、処理する観測値の数が少なくなる方が使用されます。

例: PassLimit=5

データ型: single | double

双対 SGD の収束制御

すべて展開する

線形係数およびバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。

Bt=[βt′  bt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。‖Bt−Bt−1‖2‖Bt‖2<BetaTolerance で最適化が終了します。

DeltaGradientTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: BetaTolerance=1e-6

データ型: single | double

上位および下位プールのカルーシュ・キューン・タッカー (KKT) 相補性条件違反値の間における勾配差分の許容誤差。非負のスカラーとして指定します。

  • KKT 違反値の大きさが DeltaGradientTolerance より小さい場合、最適化が終了します。

  • Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: DeltaGradientTolerance=1e-2

データ型: double | single

次回の収束チェックの前に処理するデータ セット全体が通される回数。正の整数として指定します。

例: NumCheckConvergence=100

データ型: single | double

データを通す最大回数。正の整数として指定します。

データが完全に 1 回通されると、すべての観測値が処理されます。

データが通される回数が PassLimit になると、最適化が終了します。

例: PassLimit=5

データ型: single | double

BFGS、LBFGS および SpaRSA の収束制御

すべて展開する

線形係数およびバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。

Bt=[βt′  bt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。‖Bt−Bt−1‖2‖Bt‖2<BetaTolerance で最適化が終了します。

GradientTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: BetaTolerance=1e-6

データ型: single | double

勾配の絶対許容誤差。非負のスカラーとして指定します。

最適化反復 t における係数およびバイアス項に関する目的関数の勾配ベクトルを ∇ℒt とします。‖∇ℒt‖∞=max|∇ℒt|<GradientTolerance で最適化が終了します。

BetaTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: GradientTolerance=1e-5

データ型: single | double

ヘッセ近似の履歴バッファーのサイズ。正の整数として指定します。各反復において、最新の HessianHistorySize 回の反復の統計量を使用してヘッシアンが構成されます。

SpaRSA の場合、HessianHistorySize はサポートされません。

例: HessianHistorySize=10

データ型: single | double

最適化反復の最大回数。正の整数として指定します。IterationLimit は、Solver の値が "bfgs"、"lbfgs"、"sparsa" である場合に適用されます。

例: IterationLimit=500

データ型: single | double

出力引数

すべて折りたたむ

線形分類モデルまたは線形回帰モデルの学習に適した線形学習器テンプレート。テンプレート オブジェクトとして返されます。学習中、空のオプションに既定値が使用されます。

詳細

すべて折りたたむ

ヒント

  • 観測値が列に対応するように予測子行列を配置して ObservationsIn="columns" を指定することをお勧めします。このようにすると、最適化実行時間が大幅に短縮される可能性があります。

  • 予測子データに含まれている観測値の数が少なく、予測子変数の数が多い場合、次のようにします。

    • PostFitBias=true を指定します。

    • ソルバーが SGD または ASGD の場合、PassLimit を 1 より大きい正の整数 (5 や 10 など) に設定します。このように設定すると、多くの場合に精度が向上します。

  • ソルバーが SGD または ASGD の場合、BatchSize は収束速度に影響を与えます。

    • BatchSize が小さすぎる場合、最小値を計算するための反復回数は多くなりますが、反復ごとの勾配の計算時間は短くなります。

    • BatchSize が大きすぎる場合、最小値を計算するための反復回数は少なくなりますが、反復ごとの勾配の計算時間は長くなります。

  • 学習率 (LearnRate を参照) が大きいと、最小値への収束が高速になりますが、発散 (最小値の限度を超える状態) の可能性があります。学習率が小さいと最小値への収束が保証されますが、終了までに時間がかかる可能性があります。

  • Regularization が "lasso" の場合は、さまざまな値の TruncationPeriod を試してください。たとえば、TruncationPeriod を 1、10 に設定してから 100 に設定します。

  • 効率のため、予測子データは標準化されません。予測子データ (X) を標準化して観測値が列に対応するように配置するには、次のように入力します。

    X = normalize(X,2);

    観測値が行に対応するように配置する場合は、次のように入力します。

    X = normalize(X);

    メモリを節約するため、このコードは元の予測子データを標準化されたデータに置き換えます。

参照

[1] Hsieh, C. J., K. W. Chang, C. J. Lin, S. S. Keerthi, and S. Sundararajan. “A Dual Coordinate Descent Method for Large-Scale Linear SVM.” Proceedings of the 25th International Conference on Machine Learning, ICML ’08, 2001, pp. 408–415.

[2] Langford, J., L. Li, and T. Zhang. “Sparse Online Learning Via Truncated Gradient.” J. Mach. Learn. Res., Vol. 10, 2009, pp. 777–801.

[3] Nocedal, J. and S. J. Wright. Numerical Optimization, 2nd ed., New York: Springer, 2006.

[4] Shalev-Shwartz, S., Y. Singer, and N. Srebro. “Pegasos: Primal Estimated Sub-Gradient Solver for SVM.” Proceedings of the 24th International Conference on Machine Learning, ICML ’07, 2007, pp. 807–814.

[5] Wright, S. J., R. D. Nowak, and M. A. T. Figueiredo. “Sparse Reconstruction by Separable Approximation.” Trans. Sig. Proc., Vol. 57, No 7, 2009, pp. 2479–2493.

[6] Xiao, Lin. “Dual Averaging Methods for Regularized Stochastic Learning and Online Optimization.” J. Mach. Learn. Res., Vol. 11, 2010, pp. 2543–2596.

[7] Xu, Wei. “Towards Optimal One Pass Large Scale Learning with Averaged Stochastic Gradient Descent.” CoRR, abs/1107.2490, 2011.

拡張機能

すべて展開する

バージョン履歴

R2016a で導入

すべて展開する