Main Content

resume

一般化加法モデル (GAM) の学習の再開

    説明

    UpdatedMdl = resume(Mdl,numTrees) は、Mdl の学習に使用したものと同じオプションを使用して、さらに numTrees 回の反復について Mdl に学習させ、更新された一般化加法モデル UpdatedMdl を返します。

    それぞれの反復において、resume は、線形項ごとに 1 つの予測子木または交互作用項ごとに 1 つの交互作用木に学習させます。

    • Mdl に予測子の線形項 (予測子木) のみが含まれている場合、resume は予測子ごとに numTrees 個の追加の木に学習させます。

    • Mdl に予測子の線形項と交互作用項 (予測子木と交互作用木) の両方が含まれている場合、resume は交互作用項ごとに numTrees 個の追加の木に学習させます。

    resume はモデルに新しい項は追加しません。線形項のみを含むモデルに交互作用項を追加する場合は、関数 addInteractions を使用します。

    UpdatedMdl = resume(Mdl,numTrees,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、'Verbose',2 は、1 回の反復ごとに診断メッセージを表示するように詳細レベルを 2 に指定します。

    すべて折りたたむ

    反復回数を少なくして一変量の分類の GAM (線形項のみを格納) に学習させます。反復回数を増やしてモデルに追加で学習させてから、再代入損失を比較します。

    ionosphere データセットを読み込みます。このデータセットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。

    load ionosphere

    レーダー反射が不良 ('b') と良好 ('g') のどちらであるかを識別する一変量の GAM に学習させます。線形項あたりの木の数を 2 と指定します。fitcgam は、反復回数の指定に従ってブースティング アルゴリズムを反復します。それぞれのブースティング反復において、線形項ごとに 1 つの木が追加されます。'Verbose' を 2 と指定して、1 回の反復ごとに診断メッセージを表示します。

    Mdl = fitcgam(X,Y,'NumTreesPerPredictor',2,'Verbose',2);
    |========================================================|
    | Type | NumTrees |  Deviance  |   RelTol   | LearnRate  |
    |========================================================|
    |    1D|         0|      486.59|      -     |      -     |
    |    1D|         1|      166.71|         Inf|           1|
    |    1D|         2|      78.336|     0.58205|           1|
    

    fitcgam で指定した数の木の学習が実行されたかどうかを確認するには、学習済みモデルの ReasonForTermination プロパティを表示し、表示されるメッセージを確認します。

    Mdl.ReasonForTermination
    ans = struct with fields:
          PredictorTrees: 'Terminated after training the requested number of trees.'
        InteractionTrees: ''
    
    

    学習データの分類損失を計算します。

    resubLoss(Mdl)
    ans = 0.0142
    

    モデルの学習を再開し、100 回の反復を追加で実行します。Mdl には線形項のみが格納されているため、関数 resume は線形項の学習を再開し、それらについての木 (予測子木) を追加します。'Verbose''NumPrint' を指定して、10 回の反復ごとに診断メッセージを表示します。

    UpdatedMdl = resume(Mdl,100,'Verbose',1,'NumPrint',10);
    |========================================================|
    | Type | NumTrees |  Deviance  |   RelTol   | LearnRate  |
    |========================================================|
    |    1D|         0|      78.336|      -     |      -     |
    |    1D|         1|      38.364|     0.17429|           1|
    |    1D|        10|     0.16311|    0.011894|           1|
    |    1D|        20|  0.00035693|   0.0025178|           1|
    |    1D|        30|  8.1191e-07|   0.0011006|           1|
    |    1D|        40|  1.7978e-09|  0.00074607|           1|
    |    1D|        50|  3.6113e-12|  0.00034404|           1|
    |    1D|        60|  1.7497e-13|  0.00016541|           1|
    
    UpdatedMdl.ReasonForTermination
    ans = struct with fields:
          PredictorTrees: 'Unable to improve the model fit.'
        InteractionTrees: ''
    
    

    resume は、木を追加してもモデルの当てはめの逸脱度が改善されなくなると学習を終了します。

    更新されたモデルを使用して分類損失を計算します。

    resubLoss(UpdatedMdl)
    ans = 0
    

    反復回数を増やして resume でモデルを更新すると、分類損失が減少します。

    線形項と交互作用項の両方が格納されている回帰 GAM に学習させます。反復回数を少なくして交互作用項に学習させるように指定します。反復回数を増やして交互作用項に追加で学習させてから、再代入損失を比較します。

    carbig データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。

    load carbig

    予測子変数 (X) として AccelerationDisplacementHorsepower および Weight を、応答変数 (Y) として MPG を指定します。

    X = [Acceleration,Displacement,Horsepower,Weight];
    Y = MPG;

    X 内の使用可能なすべての線形項と交互作用項が格納されている GAM に学習させます。交互作用項あたりの木の数を 2 と指定します。fitrgam は、線形項についてはブースティング アルゴリズムを 300 回 (既定) 反復し、交互作用項については反復回数の指定に従ってアルゴリズムを反復します。それぞれのブースティング反復において、線形項ごとに 1 つの木または交互作用項ごとに 1 つの木が追加されます。'Verbose' を 1 と指定して、10 回の反復ごとに診断メッセージを表示します。

    Mdl = fitrgam(X,Y,'Interactions','all','NumTreesPerInteraction',2,'Verbose',1);
    |========================================================|
    | Type | NumTrees |  Deviance  |   RelTol   | LearnRate  |
    |========================================================|
    |    1D|         0|  2.4432e+05|      -     |      -     |
    |    1D|         1|      9507.4|         Inf|           1|
    |    1D|        10|      4470.6|  0.00025206|           1|
    |    1D|        20|      3895.3|  0.00011448|           1|
    |    1D|        30|      3617.7|  3.5365e-05|           1|
    |    1D|        40|      3402.5|  3.7992e-05|           1|
    |    1D|        50|      3257.1|  2.4983e-05|           1|
    |    1D|        60|      3131.8|  2.3873e-05|           1|
    |    1D|        70|      3019.8|  2.2967e-05|           1|
    |    1D|        80|      2925.9|  2.8071e-05|           1|
    |    1D|        90|      2845.3|  1.6811e-05|           1|
    |    1D|       100|      2772.7|   1.852e-05|           1|
    |    1D|       110|      2707.8|  1.6754e-05|           1|
    |    1D|       120|      2649.8|   1.651e-05|           1|
    |    1D|       130|      2596.6|  1.1723e-05|           1|
    |    1D|       140|      2547.4|   1.813e-05|           1|
    |    1D|       150|      2501.1|  1.8659e-05|           1|
    |    1D|       160|      2455.7|   1.386e-05|           1|
    |    1D|       170|      2416.9|  1.0615e-05|           1|
    |    1D|       180|      2377.2|   8.534e-06|           1|
    |    1D|       190|        2339|  7.6771e-06|           1|
    |    1D|       200|      2303.3|  9.5866e-06|           1|
    |    1D|       210|      2270.7|  8.4276e-06|           1|
    |    1D|       220|      2240.1|  8.5778e-06|           1|
    |    1D|       230|      2209.2|  9.6761e-06|           1|
    |    1D|       240|      2178.7|  7.0622e-06|           1|
    |    1D|       250|      2150.3|  8.3082e-06|           1|
    |    1D|       260|      2122.3|  7.9542e-06|           1|
    |    1D|       270|      2097.7|  7.6328e-06|           1|
    |    1D|       280|      2070.4|  9.4322e-06|           1|
    |    1D|       290|      2044.3|  7.5722e-06|           1|
    |    1D|       300|      2019.7|  6.6719e-06|           1|
    |========================================================|
    | Type | NumTrees |  Deviance  |   RelTol   | LearnRate  |
    |========================================================|
    |    2D|         0|      2019.7|      -     |      -     |
    |    2D|         1|      1795.5|   0.0005975|           1|
    |    2D|         2|      1523.4|   0.0010079|           1|
    

    fitrgam で指定した数の木の学習が実行されたかどうかを確認するには、学習済みモデルの ReasonForTermination プロパティを表示し、表示されるメッセージを確認します。

    Mdl.ReasonForTermination
    ans = struct with fields:
          PredictorTrees: 'Terminated after training the requested number of trees.'
        InteractionTrees: 'Terminated after training the requested number of trees.'
    
    

    学習データの回帰損失を計算します。

    resubLoss(Mdl)
    ans = 3.8277
    

    モデルの学習を再開し、100 回の反復を追加で実行します。Mdl には線形項と交互作用項の両方が格納されているため、関数 resume は交互作用項の学習を再開し、それらについての木 (交互作用木) を追加します。

    UpdatedMdl = resume(Mdl,100);
    |========================================================|
    | Type | NumTrees |  Deviance  |   RelTol   | LearnRate  |
    |========================================================|
    |    2D|         0|      1523.4|      -     |      -     |
    |    2D|         1|      1363.9|  0.00039695|           1|
    |    2D|        10|      594.04|  8.0295e-05|           1|
    |    2D|        20|      359.44|  4.3201e-05|           1|
    |    2D|        30|      238.51|  2.6869e-05|           1|
    |    2D|        40|      153.98|  2.6271e-05|           1|
    |    2D|        50|      91.464|  8.0936e-06|           1|
    |    2D|        60|      61.882|  3.8528e-06|           1|
    |    2D|        70|      43.206|  5.9888e-06|           1|
    
    UpdatedMdl.ReasonForTermination
    ans = struct with fields:
          PredictorTrees: 'Terminated after training the requested number of trees.'
        InteractionTrees: 'Unable to improve the model fit.'
    
    

    resume は、木を追加してもモデルの当てはめの逸脱度が改善されなくなると学習を終了します。

    更新されたモデルを使用して回帰損失を計算します。

    resubLoss(UpdatedMdl)
    ans = 0.0944
    

    反復回数を増やして resume でモデルを更新すると、回帰損失が減少します。

    入力引数

    すべて折りたたむ

    一般化加法モデル。ClassificationGAM または RegressionGAM モデル オブジェクトとして指定します。

    追加する木の数。正の整数スカラーとして指定します。

    データ型: single | double

    名前と値の引数

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

    R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

    例: 'Verbose',1,'NumPrint',100 は、100 回の反復ごとに診断メッセージをコマンド ウィンドウに出力するように指定します。

    診断メッセージ出力の反復回数。非負の整数スカラーとして指定します。この引数は、'Verbose' として 1 を指定した場合のみ有効です。

    'Verbose',1'NumPrint',numPrint を指定すると、numPrint 回の反復ごとに診断メッセージがコマンド ウィンドウに表示されます。

    既定値は Mdl.ModelParameters.NumPrint で、GAM オブジェクト Mdl を作成する際に指定する NumPrint 値です。

    例: 'NumPrint',500

    データ型: single | double

    詳細レベル。01、または 2 を指定します。Verbose の値は、コマンド ウィンドウに表示される情報の量を制御します。

    次の表は、使用できる詳細レベル オプションの一覧です。

    説明
    0いずれの情報も表示されません。
    1numPrint 回の反復ごとに診断メッセージが表示されます。ここで、numPrint'NumPrint' の値です。
    21 回の反復ごとに診断メッセージが表示されます。

    診断メッセージの各行にそれぞれのブースティング反復に関する情報が表示されます。次の列があります。

    • Type — 学習済みの木のタイプ 1D (予測子木、予測子の線形項のブースティング木) または 2D (交互作用木、予測子の交互作用項のブースティング木)

    • NumTreesresume がそれまでにモデルに追加した線形項または交互作用項あたりの木の数

    • Deviance — モデルの逸脱度

    • RelTol — モデル予測の相対変化 (y^ky^k1)(y^ky^k1)/y^ky^k (y^k は反復 k におけるモデル予測の列ベクトル)

    • LearnRate — 現在の反復で使用されている学習率

    既定値は Mdl.ModelParameters.VerbosityLevel で、GAM オブジェクト Mdl を作成する際に指定する Verbose 値です。

    例: 'Verbose',1

    データ型: single | double

    出力引数

    すべて折りたたむ

    更新された一般化加法モデル。ClassificationGAM または RegressionGAM モデル オブジェクトとして返されます。UpdatedMdl のオブジェクト タイプは入力モデル Mdl と同じになります。

    入力引数 Mdl を上書きするには、resume の出力を Mdl に代入します。

    Mdl = resume(Mdl,numTrees);

    詳細

    すべて折りたたむ

    逸脱度

    逸脱度は、残差二乗和を汎化したものです。飽和モデルと比較した適合度を測定します。

    当てはめたモデルの逸脱度は、そのモデルと飽和モデルの対数尤度の差の 2 倍です。

    -2(logL - logLs),

    L は当てはめたモデルの対数尤度、Ls は飽和モデルの対数尤度です。飽和モデルは、推定可能な最大数のパラメーターを含むモデルです。

    resume は、逸脱度を使用してモデルの適合度を測定し、各反復で逸脱度が小さくなる学習率を探します。コマンド ウィンドウに逸脱度と学習率を表示するには、'Verbose' で 1 または 2 を指定します。

    バージョン履歴

    R2021a で導入