addInteractions
構文
説明
は、一変量の一般化加法モデル UpdatedMdl
= addInteractions(Mdl
,Interactions
)Mdl
に Interactions
の交互作用項を追加し、更新されたモデル UpdatedMdl
を返します。モデル Mdl
には予測子の線形項のみが格納されていなければなりません。
Mdl
内の既存の項の学習を再開する場合は、関数 resume
を使用します。
では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、UpdatedMdl
= addInteractions(Mdl
,Interactions
,Name,Value
)'MaxPValue',0.05
は、p 値が 0.05 以下である交互作用項のみを含めるように指定します。
例
交互作用項をもつ GAM の学習
予測子の線形項が格納されている一変量の GAM に学習させ、学習済みのモデルに関数 addInteractions
を使用して交互作用項を追加します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
予測子変数 (Acceleration
、Displacement
、Horsepower
、および Weight
) と応答変数 (MPG
) を格納する table を作成します。
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
tbl
内の予測子の線形項が格納されている一変量の GAM に学習させます。
Mdl = fitrgam(tbl,'MPG');
学習済みのモデルに上位 5 つの重要な交互作用項を追加します。
UpdatedMdl = addInteractions(Mdl,5);
Mdl
は一変量の GAM、UpdatedMdl
は Mdl
のすべての項と 5 つの追加の交互作用項を格納する更新された GAM です。UpdatedMdl
の交互作用項を表示します。
UpdatedMdl.Interactions
ans = 5×2
2 3
1 2
3 4
1 4
1 3
Interactions
プロパティの各行は 1 つの交互作用項を表し、交互作用項の予測子変数の列インデックスを格納します。Interactions
プロパティを使用して、モデル内の交互作用項とそれらが fitrgam
でモデルに追加された順序を確認できます。
交互作用項のオプションの指定
予測子の線形項が格納されている一変量の GAM に学習させ、学習済みのモデルに関数 addInteractions
を使用して交互作用項を追加します。名前と値の引数 'MaxPValue'
を指定して、p 値が 'MaxPValue'
の値以下である交互作用項を追加します。
フィッシャーのアヤメのデータ セットを読み込みます。versicolor と virginica の観測値を格納する table を作成します。
load fisheriris inds = strcmp(species,'versicolor') | strcmp(species,'virginica'); Tbl = array2table(meas(inds,:),'VariableNames',["x1","x2","x3","x4"]); Tbl.Y = species(inds,:);
Tbl
内の予測子の線形項が格納されている一変量の GAM に学習させます。
Mdl = fitcgam(Tbl,'Y');
学習済みのモデル Mdl
に重要な交互作用項を追加します。引数 Interactions
で 'all'
を指定し、名前と値の引数 'MaxPValue'
を 0.05 に設定します。addInteractions
は、利用可能なすべての交互作用項の中から p 値が 'MaxPValue'
の値以下であるものを特定し、それらをモデルに追加します。'MaxPValue'
の既定値は 1 であり、指定したすべての交互作用項がモデルに追加されます。
UpdatedMdl = addInteractions(Mdl,'all','MaxPValue',0.05); UpdatedMdl.Interactions
ans = 5×2
3 4
2 4
1 4
2 3
1 3
Mdl
は一変量の GAM、UpdatedMdl
は Mdl
のすべての項と 5 つの追加の交互作用項を格納する更新された GAM です。UpdatedMdl
には、利用可能な 6 組の交互作用項のペアのうち 5 組が含まれます。
入力引数
Mdl
— 一般化加法モデル
ClassificationGAM
モデル オブジェクト | RegressionGAM
モデル オブジェクト
一般化加法モデル。ClassificationGAM
または RegressionGAM
モデル オブジェクトとして指定します。
Interactions
— 交互作用項の数または交互作用項のリスト
0
| 非負の整数 | logical 行列 | 'all'
候補セット S に含める交互作用項の数またはリスト。非負の整数スカラー、logical 行列、または 'all'
を指定します。
交互作用項の数を非負の整数として指定 — 指定した数の重要な交互作用項が S に含まれます。含まれる項は項の p 値に基づいて選択されます。
交互作用項のリストを logical 行列として指定 —
t
行p
列の logical 行列で指定した項が S に含まれます。t
は交互作用項の数、p
はモデルの学習に使用した予測子の数です。たとえば、logical([1 1 0; 0 1 1])
は、最初と 2 番目の予測子のペアと 2 番目と 3 番目の予測子のペアの 2 組の交互作用項を表します。addInteractions
が入力変数のサブセットを予測子として使用する場合、関数はサブセットのみを使用して予測子にインデックスを作成します。つまり、logical 行列の列インデックスでは、応答変数および観測値の重み変数はカウントされません。また、関数で使用されない変数もインデックスでカウントされません。'all'
— 利用可能なすべての交互作用項のペアが S に含まれます。項の総数はp*(p – 1)/2
になります。
関数 addInteractions
は、S に含まれる交互作用項の中から p 値が 'MaxPValue'
の値以下であるものを特定し、それらを使用して一連の交互作用木を構築します。S に含まれるすべての項を使用して交互作用木を構築するには、既定値 ('MaxPValue'
,1) を使用します。
データ型: single
| double
| logical
| char
| string
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: addInteractions(
は、p 値が 0.05 以下である利用可能な交互作用項をすべて含め、10 回の反復ごとに診断メッセージを表示するように指定します。Mdl
,'all','MaxPValue',0.05,'Verbose',1,'NumPrints',10)
InitialLearnRateForInteractions
— 交互作用項の勾配ブースティングの学習率
1
(既定値) | (0,1] の数値スカラー
交互作用項の勾配ブースティングの初期学習率。区間 (0,1] の数値スカラーとして指定します。
交互作用木に対するそれぞれのブースティング反復において、addInteractions
は最初に初期学習率で当てはめを行います。分類の場合、モデルの当てはめが改善される学習率が見つかるまで、学習率を半分にして当てはめが繰り返されます。回帰の場合、学習全体を通じて初期の率が使用されます。
モデルの学習に使用する学習率を小さくした方が必要な学習反復回数は増えますが、多くの場合は精度が向上します。
勾配ブースティングの詳細については、勾配ブースティング アルゴリズムを参照してください。
例: 'InitialLearnRateForInteractions',0.1
データ型: single
| double
MaxNumSplitsPerInteraction
— 交互作用木あたりの決定分岐の最大数
4 (既定値) | 正の整数スカラー
それぞれの交互作用木 (交互作用項のブースティング木) の決定分岐 (枝ノード) の最大数。正の整数スカラーとして指定します。
例: 'MaxNumSplitsPerInteraction',5
データ型: single
| double
MaxPValue
— 交互作用項の検出に使用する最大 p 値
1 (既定値) | [0,1] の数値スカラー
交互作用項の検出に使用する最大 p 値。区間 [0,1] の数値スカラーとして指定します。
addInteractions
は、最初に Interactions
の値から交互作用項の候補セット S を特定します。その後、p 値が 'MaxPValue'
の値以下である交互作用項を特定し、それらを使用して一連の交互作用木を構築します。
既定値 ('MaxPValue',1
) では、候補セット S に含まれるすべての交互作用項についての交互作用木が構築されます。
交互作用項の検出の詳細については、交互作用項の検出を参照してください。
例: 'MaxPValue',0.05
データ型: single
| double
NumPrint
— 診断メッセージ出力の反復回数
Mdl.ModelParameters.NumPrint
(既定値) | 非負の整数スカラー
NumTreesPerInteraction
— 交互作用項あたりの木の数
100 (既定値) | 正の整数スカラー
交互作用項あたりの木の数。正の整数スカラーとして指定します。
'NumTreesPerInteraction'
の値は、予測子の交互作用項に対する勾配ブースティング反復回数と等しくなります。addInteractions
は、各反復において、交互作用項ごとに 1 つずつ一連の交互作用木をモデルに追加します。勾配ブースティング アルゴリズムの詳細については、勾配ブースティング アルゴリズムを参照してください。
当てはめたモデルに指定した数の木が含まれているかどうかについては、'Verbose'
が 1 または 2 の場合に表示される診断メッセージ、またはモデル Mdl
の ReasonForTermination
プロパティの値で確認できます。
例: 'NumTreesPerInteraction',500
データ型: single
| double
Verbose
— 詳細レベル
Mdl.ModelParameters.VerbosityLevel
(既定値) | 0 | 1
| 2
詳細レベル。0
、1
、または 2
を指定します。Verbose
の値は、コマンド ウィンドウに表示される情報の量を制御します。
次の表は、使用できる詳細レベル オプションの一覧です。
値 | 説明 |
---|---|
0 | いずれの情報も表示されません。 |
1 | numPrint 回の反復ごとに診断メッセージが表示されます。ここで、numPrint は 'NumPrint' の値です。 |
2 | 1 回の反復ごとに診断メッセージが表示されます。 |
診断メッセージの各行にそれぞれのブースティング反復に関する情報が表示されます。次の列があります。
Type
— 学習済みの木のタイプ1D
(予測子木、予測子の線形項のブースティング木) または2D
(交互作用木、予測子の交互作用項のブースティング木)NumTrees
—addInteractions
がそれまでにモデルに追加した線形項または交互作用項あたりの木の数Deviance
— モデルの逸脱度RelTol
— モデル予測の相対変化 ( は反復 k におけるモデル予測の列ベクトル)LearnRate
— 現在の反復で使用されている学習率
既定値は Mdl.ModelParameters.VerbosityLevel
で、GAM オブジェクト Mdl
を作成する際に指定する Verbose
値です。
例: 'Verbose',1
データ型: single
| double
出力引数
UpdatedMdl
— 更新された一般化加法モデル
ClassificationGAM
モデル オブジェクト | RegressionGAM
モデル オブジェクト
更新された一般化加法モデル。ClassificationGAM
または RegressionGAM
モデル オブジェクトとして返されます。UpdatedMdl
のオブジェクト タイプは入力モデル Mdl
と同じになります。
入力引数 Mdl
を上書きするには、addInteractions
の出力を Mdl
に代入します。
Mdl = addInteractions(Mdl,Interactions);
詳細
逸脱度
逸脱度は、残差二乗和を汎化したものです。飽和モデルと比較した適合度を測定します。
当てはめたモデルの逸脱度は、そのモデルと飽和モデルの対数尤度の差の 2 倍です。
-2(logL - logLs),
L は当てはめたモデルの対数尤度、Ls は飽和モデルの対数尤度です。飽和モデルは、推定可能な最大数のパラメーターを含むモデルです。
addInteractions
は、逸脱度を使用してモデルの適合度を測定し、各反復で逸脱度が小さくなる学習率を探します。コマンド ウィンドウに逸脱度と学習率を表示するには、'Verbose'
で 1 または 2 を指定します。
アルゴリズム
勾配ブースティング アルゴリズム
addInteractions
は、勾配ブースティング アリゴリズム (回帰の場合は最小二乗ブースティング、分類の場合は適応ロジスティック回帰) を使用して、交互作用木 (予測子の交互作用項のブースティング木) のセットを一変量の一般化加法モデルに追加します。このアルゴリズムは、交互作用木に対して最大 'NumTreesPerInteraction'
回まで反復されます。
それぞれのブースティング反復において、addInteractions
は初期学習率 'InitialLearnRateForInteractions'
で一連の交互作用木を構築します。
一連の木の構築において、関数は一度に 1 つずつ木に学習させます。応答 (回帰の場合は観測された応答値、分類の場合は観測されたクラスのスコア) とそれまでに学習させたすべての木から集約した予測の差分である残差に木を当てはめます。ブースティングの学習速度を制御するために、木を学習率で縮小し、その木をモデルに追加して残差を更新します。
更新されたモデル = 現在のモデル + (学習率)·(新しい木)
更新された残差 = 現在の残差 – (学習率)·(新しい木で説明される応答)
一連の木を追加してモデルの当てはめが改善されると (つまり、当てはめの逸脱度が許容誤差より大きな値だけ小さくなると)、
addInteractions
は次の反復に移ります。そうでない場合、分類では
addInteractions
は学習率を半分にし、それを使用してモデルと残差を更新します。モデルの当てはめが改善される学習率が見つかるまで、学習率を半分にして当てはめが繰り返されます。交互作用木に対してそのような学習率が見つからないと、モデルの当てはめが終了します。回帰では、一連の木を追加しても初期学習率でモデルの当てはめが改善されない場合、モデルの当てはめを終了します。学習が停止した原因は、学習済みモデルの
ReasonForTermination
プロパティで確認できます。
交互作用項の検出
交互作用項のペア xixj (Interactions
で指定) ごとに、項が統計的に有意であるかどうかを調べる F 検定が実行されます。
プロセスを高速化するために、addInteractions
は最大 8 個の同確率のビンに数値予測子をビン化します。予測子に含まれる一意の値が 8 より少なければ、ビンの数を 8 より少なくすることができます。F 検定では、xi と xj で作成されるビンの応答がそれぞれ等しくなるという帰無仮説が、少なくとも 1 つのビンの応答値が他とは異なるという対立仮説に対して検証されます。p 値が小さい場合、差が有意であることを意味します。これは、対応する交互作用項が有意であり、その項を含めることでモデルの当てはめを改善できることを示します。
addInteractions
は、p 値が 'MaxPValue'
の値以下である項を使用して一連の交互作用木を構築します。'MaxPValue'
の既定値 1
を使用すると、Interactions
で指定したすべての項を使用して交互作用木を構築できます。
addInteractions
は、交互作用項を p 値に基づく重要度の順序でモデルに追加します。交互作用項がモデルに追加された順序を確認するには、返されたモデルの Interactions
プロパティを使用します。
バージョン履歴
R2021a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)