Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

plot

シャープレイ値のプロット

R2021a 以降

    説明

    plot(explainer) は、shapley オブジェクト explainer のシャープレイ値の横棒グラフを作成します。これらの値はオブジェクトの ShapleyValues プロパティに格納されています。各棒グラフは、クエリ点 (explainer.QueryPoint) について blackbox モデル (explainer.BlackboxModel) 内の各特徴量のシャープレイ値を示します。

    plot(explainer,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、'NumImportantPredictors',5 と指定して、絶対シャープレイ値が上位の特徴量のうち 5 つの特徴量のシャープレイ値をプロットします。

    plot(ax,___) は、ターゲットの座標軸 ax にプロットを表示します。前述の任意の構文で、最初の引数として座標軸を指定します。 (R2023b 以降)

    b = plot(___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、棒グラフ オブジェクト b を返します。b を使用して、作成後の棒グラフの Bar のプロパティ をクエリまたは変更します。

    すべて折りたたむ

    分類モデルの学習を行い、shapley オブジェクトを作成します。次に、オブジェクト関数 plot を使用して、シャープレイ値をプロットします。

    CreditRating_Historical データセットを読み込みます。データ セットには、顧客 ID、顧客の財務比率、業種ラベル、および信用格付けが格納されています。

    tbl = readtable('CreditRating_Historical.dat');

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

    head(tbl,3)
         ID      WC_TA    RE_TA    EBIT_TA    MVE_BVTD    S_TA     Industry    Rating
        _____    _____    _____    _______    ________    _____    ________    ______
    
        62394    0.013    0.104     0.036      0.447      0.142       3        {'BB'}
        48608    0.232    0.335     0.062      1.969      0.281       8        {'A' }
        42444    0.311    0.367     0.074      1.935      0.366       1        {'A' }
    

    関数fitcecocを使用して、信用格付けの blackbox モデルに学習させます。tbl 内の 2 ~ 7 列目の変数を予測子変数として使用します。クラス名を指定してクラスの順序を設定することが推奨されます。

    blackbox = fitcecoc(tbl,'Rating', ...
        'PredictorNames',tbl.Properties.VariableNames(2:7), ...
        'CategoricalPredictors','Industry', ...
        'ClassNames',{'AAA' 'AA' 'A' 'BBB' 'BB' 'B' 'CCC'});

    最後の観測値の予測を説明する shapley オブジェクトを作成します。計算速度を向上するには、tbl の観測値の 25% を階層的にサブサンプリングし、その標本を使用してシャープレイ値を計算します。

    queryPoint = tbl(end,:)
    queryPoint=1×8 table
         ID      WC_TA    RE_TA    EBIT_TA    MVE_BVTD    S_TA    Industry    Rating
        _____    _____    _____    _______    ________    ____    ________    ______
    
        73104    0.239    0.463     0.065      2.924      0.34       2        {'AA'}
    
    
    rng('default') % For reproducibility
    c = cvpartition(tbl.Rating,'Holdout',0.25);
    tbl_s = tbl(test(c),:);
    explainer = shapley(blackbox,tbl_s,'QueryPoint',queryPoint);

    分類モデルの場合、shapley は各クラスの予測クラス スコアを使用してシャープレイ値を計算します。ShapleyValues プロパティの値を表示します。

    explainer.ShapleyValues
    ans=6×8 table
        Predictor        AAA           AA             A            BBB            BB             B            CCC    
        __________    _________    __________    ___________    __________    ___________    __________    __________
    
        "WC_TA"        0.051044      0.022644      0.0096138     0.0015955      -0.027857     -0.041342     -0.039476
        "RE_TA"         0.16729      0.094791        0.05308     -0.011178       -0.08769      -0.20847      -0.29204
        "EBIT_TA"     0.0012014    0.00053339     0.00043344    0.00012321    -0.00066993    -0.0013388    -0.0011793
        "MVE_BVTD"       1.3377         1.338        0.67839     -0.027654       -0.55142      -0.75321      -0.59576
        "S_TA"        -0.012482     -0.009097    -0.00074119    -0.0035582    -7.3517e-05     0.0014497    -0.0020609
        "Industry"    -0.099094     -0.046871      0.0031376      0.080071       0.089726      0.099687       0.15691
    
    

    ShapleyValues プロパティには、クラスごとにすべての特徴量のシャープレイ値が格納されています。

    関数 plot を使用して予測クラスのシャープレイ値をプロットします。

    plot(explainer)

    Figure contains an axes object. The axes object with title Shapley Explanation, xlabel Shapley Value, ylabel Predictor contains an object of type bar.

    横棒グラフは、絶対値で並べ替えられた、すべての変数のシャープレイ値を示します。各シャープレイ値は、クエリ点についてのスコアに関して対応する変数が原因で生じた予測クラスの平均スコアからの偏差を説明します。

    explainer.BlackboxModel ですべてのクラス名を指定して、すべてのクラスのシャープレイ値をプロットします。

    plot(explainer,'ClassNames',explainer.BlackboxModel.ClassNames)

    Figure contains an axes object. The axes object with title Shapley Explanation, xlabel Shapley Value, ylabel Predictor contains 7 objects of type bar. These objects represent AAA, AA, A, BBB, BB, B, CCC.

    回帰モデルの学習を行い、shapley オブジェクトを作成します。オブジェクト関数 fit を使用して、指定したクエリ点のシャープレイ値を計算します。次に、オブジェクト関数 plot を使用して、予測子のシャープレイ値をプロットします。関数 plot を呼び出すときにプロットする重要な予測子の数を指定します。

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

    load carbig

    AccelerationCylinders などの予測子変数と応答変数 MPG が格納された table を作成します。

    tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);

    学習セットの欠損値を削除すると、メモリ消費量を減らして関数 fitrkernel の学習速度を向上させることができます。tbl の欠損値を削除します。

    tbl = rmmissing(tbl);

    関数fitrkernelを使用して MPG の blackbox モデルの学習を行います。

    rng('default') % For reproducibility
    mdl = fitrkernel(tbl,'MPG','CategoricalPredictors',[2 5]);

    shapley オブジェクトを作成します。mdl には学習データが含まれないため、データ セット tbl を指定します。

    explainer = shapley(mdl,tbl)
    explainer = 
      shapley with properties:
    
                BlackboxModel: [1x1 RegressionKernel]
                   QueryPoint: []
               BlackboxFitted: []
                ShapleyValues: []
                            X: [392x7 table]
        CategoricalPredictors: [2 5]
                       Method: 'interventional-kernel'
                    Intercept: 22.6202
                   NumSubsets: 64
    
    

    explainer は、学習データ tblX プロパティに格納します。

    tbl の最初の観測値についてすべての予測子変数のシャープレイ値を計算します。

    queryPoint = tbl(1,:)
    queryPoint=1×7 table
        Acceleration    Cylinders    Displacement    Horsepower    Model_Year    Weight    MPG
        ____________    _________    ____________    __________    __________    ______    ___
    
             12             8            307            130            70         3504     18 
    
    
    explainer = fit(explainer,queryPoint);

    回帰モデルの場合、shapley は予測応答を使用してシャープレイ値を計算し、ShapleyValues プロパティに格納します。ShapleyValues プロパティの値を表示します。

    explainer.ShapleyValues
    ans=6×2 table
          Predictor       ShapleyValue
        ______________    ____________
    
        "Acceleration"       -0.1561  
        "Cylinders"         -0.18306  
        "Displacement"      -0.34203  
        "Horsepower"        -0.27291  
        "Model_Year"         -0.2926  
        "Weight"            -0.32402  
    
    

    関数 plot を使用して、クエリ点のシャープレイ値をプロットします。'NumImportantPredictors',5 を指定して、予測応答について最も重要な 5 つの予測子のみをプロットします。

    plot(explainer,'NumImportantPredictors',5)

    Figure contains an axes object. The axes object with title Shapley Explanation, xlabel Shapley Value, ylabel Predictor contains an object of type bar.

    横棒グラフは、絶対値で並べ替えられた、5 つの最も重要な予測子のシャープレイ値を示します。各シャープレイ値は、クエリ点についての予測に関して対応する変数が原因で生じた平均からの偏差を説明します。

    入力引数

    すべて折りたたむ

    blackbox モデルを説明するオブジェクト。shapley オブジェクトとして指定します。

    R2023b 以降

    プロットの座標軸。Axes オブジェクトとして指定します。ax を指定しない場合、plot は、現在の座標軸を使用してプロットを作成します。Axes オブジェクトを作成する方法の詳細については、axes を参照してください。

    名前と値の引数

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

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

    例: plot(explainer,'NumImportantPredictors',5,'ClassNames',c) は、クラス c について 5 つの最も重要な予測子のシャープレイ値を示す棒グラフを作成します。

    プロットする重要な予測子の数。正の整数を指定します。関数 plot は、絶対シャープレイ値が上位の予測子のうち指定された数の予測子のシャープレイ値をプロットします。

    例: 'NumImportantPredictors',5 は、上位 5 つの重要な予測子をプロットするように指定します。関数 plot は、絶対シャープレイ値を使用して重要度の順序を決定します。

    データ型: single | double

    プロットするクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。'ClassNames' 値の値とデータ型は、explainer における機械学習モデルの ClassNames プロパティ (explainer.BlackboxModel.ClassNames) のクラス名のものと一致しなければなりません。

    1 つ以上のラベルを指定できます。複数のクラス ラベルを指定した場合は、各特徴量の複数の棒グラフが異なる色でプロットされます。

    既定値は、クエリ点についての予測クラス (explainerBlackboxFitted プロパティ) です。

    この引数は、explainer の機械学習モデル (BlackboxModel) が分類モデルである場合のみ有効です。

    例: 'ClassNames',{'red','blue'}

    例: 'ClassNames',explainer.BlackboxModel.ClassNames は、'ClassNames' として BlackboxModel 内のすべてのクラスを指定します。

    データ型: single | double | logical | char | cell | categorical

    詳細

    すべて折りたたむ

    シャープレイ値

    ゲーム理論におけるプレーヤーのシャープレイ値とは、協力ゲームでのプレーヤーの平均限界貢献度です。機械学習予測のコンテキストでは、クエリ点の特徴量のシャープレイ値は、指定したクエリ点での予測 (回帰の場合は応答、分類の場合は各クラスのスコア) に対する特徴量の寄与を説明します。

    クエリ点の特徴量のシャープレイ値は、平均予測からの偏差に対する特徴量の寄与です。クエリ点について、すべての特徴量に関するシャープレイ値の合計は、予測の平均からの合計偏差に対応します。つまり、平均予測とすべての特徴量に関するシャープレイ値の合計は、クエリ点についての予測に対応します。

    詳細については、機械学習モデルのシャープレイ値を参照してください。

    参照

    [1] Lundberg, Scott M., and S. Lee. "A Unified Approach to Interpreting Model Predictions." Advances in Neural Information Processing Systems 30 (2017): 4765–774.

    [2] Aas, Kjersti, Martin Jullum, and Anders Løland. "Explaining Individual Predictions When Features Are Dependent: More Accurate Approximations to Shapley Values." Artificial Intelligence 298 (September 2021).

    [3] Lundberg, Scott M., G. Erion, H. Chen, et al. "From Local Explanations to Global Understanding with Explainable AI for Trees." Nature Machine Intelligence 2 (January 2020): 56–67.

    バージョン履歴

    R2021a で導入

    すべて展開する