Main Content

plotLocalEffects

一般化加法モデル (GAM) 内の項のローカルな効果のプロット

R2021a 以降

    説明

    plotLocalEffects(Mdl,queryPoint) は、指定したクエリ点 queryPoint の予測に対する一般化加法モデル Mdl 内の項のローカルな効果を示す棒グラフを作成します。

    plotLocalEffects(Mdl,queryPoint,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、'IncludeIntercept',true は棒グラフに切片項を含めるように指定します。

    plotLocalEffects(ax,___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、現在の座標軸 (gca) ではなく ax によって指定される座標軸にプロットします。 (R2024a 以降)

    b = plotLocalEffects(___) は、棒グラフ オブジェクト b を返します。b は、棒グラフの作成後に Bar のプロパティ をクエリまたは変更するのに使用します。

    すべて折りたたむ

    予測子の線形項が格納されている一変量の一般化加法モデルによる分類を学習させます。メモリ効率の高いモデル オブジェクトを使用して新しい観測値を分類します。その後、関数 plotLocalEffects を使用して指定のデータ インスタンスについての予測を解釈します。

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

    load ionosphere

    レーダー反射が不良 ('b') と良好 ('g') のどちらであるかを識別する一変量の GAM に学習させます。

    Mdl = fitcgam(X,Y);

    MdlClassificationGAM モデル オブジェクトです。

    学習させたモデルのサイズを減らし、メモリの消費量を抑えます。

    CMdl = compact(Mdl);

    学習データの最初の観測値を分類し、予測に対する Mdl 内の項のローカルな効果をプロットします。

    label = predict(CMdl,X(1,:))
    label = 1x1 cell array
        {'g'}
    
    
    plotLocalEffects(CMdl,X(1,:))

    関数predictで、最初の観測値 X(1,:)'g' として分類します。関数 plotLocalEffects で、予測に対する上位 10 個の重要な項のローカルな効果を示す横棒グラフを作成します。ローカルな効果の各値は、'g' の分類スコアへの各項の寄与を示します。これは、観測値の分類が 'g' となる事後確率のロジットです。

    予測子の線形項と交互作用項の両方を含むバイナリ分類用の GAM に学習させます。モデル内の線形項と交互作用項の両方を使用してローカルな効果のプロットを作成してから、モデル内の線形項のみを使用してプロットを作成します。ローカルな効果のプロットを作成する際に交互作用項を含めるかどうかを指定します。

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

    load ionosphere

    予測子 X とクラス ラベル Y を使用して、GAM に学習させます。クラス名を指定することが推奨されます。上位 10 個の最も重要な交互作用項を含めるように指定します。

    Mdl = fitcgam(X,Y,'ClassNames',{'b','g'},'Interactions',10);

    MdlClassificationGAM モデル オブジェクトです。

    10 番目の観測値についてのローカルな効果のプロットを作成します。1 つ目のプロットには Mdl 内の線形項と交互作用項の両方を使用し、2 つ目のプロットには Mdl 内の線形項のみを使用します。交互作用項を除外するには、'IncludeInteractions',false を指定します。

    t = tiledlayout(2,1);
    title(t,'Local Effects Plots for 10th Observation')
    nexttile
    plotLocalEffects(Mdl,X(10,:))
    title('GAM with linear and interaction terms')
    nexttile
    plotLocalEffects(Mdl,X(10,:),'IncludeInteractions',false)
    title('GAM with only linear terms')

    プロットに上位 10 個の重要な項が表示されます。両方のプロットに共通の項が 9 個と共通でない項が 1 個あります。1 つ目のプロットには x1x5 の交互作用項が含まれ、2 つ目のプロットには x14 の線形項が含まれています。

    予測子の線形項が格納されている回帰用の一変量の GAM に学習させます。その後、関数 plotLocalEffects を使用して指定のデータ インスタンスについての予測を解釈します。

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

    load NYCHousing2015

    データ セットには、2015 年のニューヨーク市における不動産の売上に関する情報を持つ 10 の変数が含まれます。この例では、これらの変数を使用して売価 (SALEPRICE) を解析します。

    データ セットを前処理します。外れ値を削除し、datetime 配列 (SALEDATE) を月番号に変換して、応答変数 (SALEPRICE) を最後の列に移動します。

    idx = isoutlier(NYCHousing2015.SALEPRICE);
    NYCHousing2015(idx,:) = [];
    NYCHousing2015.SALEDATE = month(NYCHousing2015.SALEDATE);
    NYCHousing2015 = movevars(NYCHousing2015,'SALEPRICE','After','SALEDATE');

    テーブルの最初の 3 行を表示します。

    head(NYCHousing2015,3)
        BOROUGH    NEIGHBORHOOD       BUILDINGCLASSCATEGORY        RESIDENTIALUNITS    COMMERCIALUNITS    LANDSQUAREFEET    GROSSSQUAREFEET    YEARBUILT    SALEDATE    SALEPRICE
        _______    ____________    ____________________________    ________________    _______________    ______________    _______________    _________    ________    _________
    
           2       {'BATHGATE'}    {'01  ONE FAMILY DWELLINGS'}           1                   0                4750              2619            1899           8           0    
           2       {'BATHGATE'}    {'01  ONE FAMILY DWELLINGS'}           1                   0                4750              2619            1899           8           0    
           2       {'BATHGATE'}    {'01  ONE FAMILY DWELLINGS'}           1                   1                1287              2528            1899          12           0    
    

    売価の一変量の GAM に学習させます。BOROUGHNEIGHBORHOODBUILDINGCLASSCATEGORY および SALEDATE の変数をカテゴリカル予測子として指定します。

    Mdl = fitrgam(NYCHousing2015,'SALEPRICE','CategoricalPredictors',[1 2 3 9]);

    MdlRegressionGAM モデル オブジェクトです。

    Mdl の推定された切片 (定数) 項を表示します。

    Mdl.Intercept
    ans = 3.7518e+05
    

    切片項の値は、学習データに NaN 値が含まれていなければ、回帰 GAM 内の応答変数の平均に近くなります。応答変数の平均を計算します。

    mean(NYCHousing2015.SALEPRICE)
    ans = 3.7518e+05
    

    学習データの最初の観測値について売価を予測し、予測に対する Mdl 内の項のローカルな効果をプロットします。プロットに切片項を含めるには、'IncludeIntercept',true を指定します。

    yFit = predict(Mdl,NYCHousing2015(1,:))
    yFit = 4.4421e+05
    
    plotLocalEffects(Mdl,NYCHousing2015(1,:),'IncludeIntercept',true)

    関数predictで、最初の観測値の売価を 4.4421e5 として予測します。関数 plotLocalEffects で、予測に対する Mdl 内の項のローカルな効果を示す横棒グラフを作成します。ローカルな効果の各値は、予測売価への各項の寄与を示します。

    入力引数

    すべて折りたたむ

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

    plotLocalEffects がローカルな効果をプロットするクエリ点。数値の行ベクトルまたは単一行 table として指定します。

    • 数値の行ベクトルの場合:

      • queryPoint の列を構成する変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

      • table (たとえば Tbl) を使用して Mdl に学習させた場合、Tbl に含まれている変数がすべて数値変数であれば、queryPoint を数値行列にすることができます。

    • 単一行 table の場合:

      • table (たとえば Tbl) を使用して Mdl に学習させた場合、queryPoint 内のすべての予測子変数は変数名およびデータ型が Tbl 内の変数と同じでなければなりません。ただし、queryPoint の列の順序が Tbl の列の順序に対応する必要はありません。

      • 数値行列を使用して Mdl に学習させた場合、Mdl.PredictorNames 内の予測子名と queryPoint 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定するには、名前と値の引数 'PredictorNames' を使用します。queryPoint 内の予測子変数はすべて数値ベクトルでなければなりません。

      • queryPoint に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、plotLocalEffects はこれらを無視します。

      • plotLocalEffects は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。

    データ型: single | double | table

    R2024a 以降

    ターゲットの座標軸。axes オブジェクトとして指定します。座標軸を指定しない場合、plotLocalEffects は現在の座標軸 (gca) を使用します。

    名前と値の引数

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

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

    例: plotLocalEffects(Mdl,queryPoint,'IncludeInteractions',false,'NumTerms',5) は、Mdl 内の交互作用項は含めずに、Mdl 内の予測子の最も重要な 5 つの線形項を含む棒グラフを作成するように指定します。

    プロットにモデルの交互作用項を含むというフラグ。true または false として指定します。

    Mdl に交互作用項が含まれる場合、'IncludeInteractions' の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。

    例: 'IncludeInteractions',false

    データ型: logical

    プロットにモデルの切片項を含むというフラグ。true または false として指定します。

    例: 'IncludeIntercept',true

    データ型: logical

    プロットする項の数。正の整数スカラーとして指定します。plotLocalEffects は、ローカルな効果の絶対値が最も高いものから指定された数の項をプロットします。

    例: 'NumTerms',5 は、上位 5 つの重要な項をプロットするように指定します。plotLocalEffects は、ローカルな効果の絶対値を使用して重要度の順序を判定します。

    データ型: single | double

    バージョン履歴

    R2021a で導入

    すべて展開する