このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
lime
説明
LIMEは、重要な予測子を見つけて解釈可能な単純モデルを当てはめることにより、クエリ点に対する機械学習モデル (分類または回帰) の予測を説明します。
クエリ点 (queryPoint
) と重要な予測子の数 (numImportantPredictors
) を指定して、機械学習モデル用の lime
オブジェクトを作成できます。ソフトウェアは合成データ セットを生成し、クエリ点周辺の合成データに対する予測を効果的に説明する重要な予測子の解釈可能な単純モデルを当てはめます。単純モデルにできるのは、線形モデル (既定) または決定木モデルです。
当てはめられた単純モデルを使用して、指定したクエリ点での機械学習モデルの予測を局所的に説明します。関数 plot
を使用して、LIME の結果を可視化します。ローカルな説明に基づいて、機械学習モデルを信頼するかどうかを判断できます。
別のクエリ点には、関数 fit
を使用して、新しい単純モデルを当てはめます。
作成
構文
説明
は、事前生成されたカスタム合成予測子データ セット results
= lime(blackbox
,'CustomSyntheticData',customSyntheticData
)customSyntheticData
を使用して lime
オブジェクトを作成します。関数 lime
は、customSyntheticData
の標本についての予測を計算します。
も、指定された数の重要な予測子を検索し、クエリ点 results
= lime(___,'QueryPoint',queryPoint
,'NumImportantPredictors',numImportantPredictors
)queryPoint
に対して線形単純モデルを当てはめます。前の構文におけるいずれかの入力引数の組み合わせに加えて、queryPoint
および numImportantPredictors
を指定できます。
では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、results
= lime(___,Name,Value
)'SimpleModelType','tree'
は、単純モデルのタイプを決定木モデルとして指定します。
入力引数
blackbox
— 解釈される機械学習モデル
回帰モデル オブジェクト | 分類モデル オブジェクト | 関数ハンドル
解釈される機械学習モデル。完全またはコンパクトな回帰または分類モデル オブジェクトとして指定するか、関数ハンドルとして指定します。
完全またはコンパクトなモデル オブジェクト — オブジェクト関数
predict
をもつ、完全またはコンパクトな、回帰または分類モデル オブジェクトを指定できます。ソフトウェアは、関数predict
を使用して、クエリ点についての予測と合成予測子データ セットを計算します。予測子データを含まないモデル オブジェクト (コンパクトなモデルなど) を指定する場合、
X
またはcustomSyntheticData
を使用して予測子データを提供しなければなりません。lime
は、スパース行列で学習させたモデル オブジェクトをサポートしません。モデルに学習させる場合は、行が各観測値に対応する非スパースの数値行列または table を予測子データに使用してください。
回帰モデル オブジェクト
サポートされているモデル 完全またはコンパクトな回帰モデル オブジェクト 回帰モデルのアンサンブル RegressionEnsemble
,RegressionBaggedEnsemble
,CompactRegressionEnsemble
ランダムな特徴量拡張を使用したガウス カーネル回帰モデル RegressionKernel
ガウス過程回帰 RegressionGP
,CompactRegressionGP
一般化加法モデル RegressionGAM
,CompactRegressionGAM
高次元データの線形回帰 RegressionLinear
ニューラル ネットワーク回帰モデル RegressionNeuralNetwork
,CompactRegressionNeuralNetwork
回帰木 RegressionTree
,CompactRegressionTree
サポート ベクター マシン回帰 RegressionSVM
,CompactRegressionSVM
分類モデル オブジェクト
サポートされているモデル 完全またはコンパクトな分類モデル オブジェクト マルチクラス分類用の二分決定木 ClassificationTree
,CompactClassificationTree
判別分析分類器 ClassificationDiscriminant
,CompactClassificationDiscriminant
分類用のアンサンブル学習器 ClassificationEnsemble
,CompactClassificationEnsemble
,ClassificationBaggedEnsemble
ランダムな特徴量拡張を使用したガウス カーネル分類モデル ClassificationKernel
一般化加法モデル ClassificationGAM
,CompactClassificationGAM
k 最近傍モデル ClassificationKNN
線形分類モデル ClassificationLinear
サポート ベクター マシンまたはその他の分類器用のマルチクラス モデル ClassificationECOC
,CompactClassificationECOC
単純ベイズ モデル ClassificationNaiveBayes
,CompactClassificationNaiveBayes
ニューラル ネットワーク分類器 ClassificationNeuralNetwork
,CompactClassificationNeuralNetwork
バイナリ分類用のサポート ベクター マシン ClassificationSVM
,CompactClassificationSVM
関数ハンドル — 予測子データを受け入れ、予測子データの各観測値についての予測が格納された列ベクトルを返す関数ハンドルを指定できます。予測は、回帰の場合は予測された応答、分類の場合は分類されたラベルになります。
X
またはcustomSyntheticData
を使用して予測子データを提供し、名前と値の引数'Type'
を指定しなければなりません。
X
— 予測子データ
数値行列 | テーブル
予測子データ。数値行列またはテーブルとして指定します。X
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
X
は、blackbox.X
に格納されている、blackbox
の学習に使用した予測子データと一致しなければなりません。指定する値に応答変数を含めてはなりません。
X
は、blackbox
の学習に使用した予測子変数 (たとえば、trainX
) と同じデータ型でなければなりません。X
の列を構成する変数の個数と順序は、trainX
と同じでなければなりません。数値行列を使用して
blackbox
に学習をさせる場合、X
は数値行列でなければなりません。table を使用して
blackbox
に学習をさせる場合、X
は table でなければなりません。X
内のすべての予測子変数は、変数名およびデータ型がtrainX
と同じでなければなりません。
lime
はスパース行列をサポートしません。
blackbox
が予測子データを含まないモデル オブジェクトまたは関数ハンドルである場合、X
または customSyntheticData
を指定しなければなりません。blackbox
が完全な機械学習モデル オブジェクトである場合にこの引数を指定すると、lime
で blackbox
の予測子データは使用されません。指定した予測子データのみが使用されます。
データ型: single
| double
| table
customSyntheticData
— 事前生成されたカスタム合成予測子データ セット
[]
(既定値) | 数値行列 | テーブル
事前生成されたカスタム合成予測子データ セット。数値行列またはテーブルとして指定します。
事前生成されたデータ セットを提供する場合、lime
は新しい合成予測子データ セットを生成する代わりに、提供されたデータ セットを使用します。
customSyntheticData
は、blackbox.X
に格納されている、blackbox
の学習に使用した予測子データと一致しなければなりません。指定する値に応答変数を含めてはなりません。
customSyntheticData
は、blackbox
の学習に使用した予測子変数 (たとえば、trainX
) と同じデータ型でなければなりません。customSyntheticData
の列を構成する変数の個数と順序は、trainX
と同じでなければなりません。数値行列を使用して
blackbox
に学習をさせる場合、customSyntheticData
は数値行列でなければなりません。テーブルを使用して
blackbox
に学習をさせる場合、customSyntheticData
はテーブルでなければなりません。customSyntheticData
内のすべての予測子変数は、変数名およびデータ型がtrainX
と同じでなければなりません。
lime
はスパース行列をサポートしません。
blackbox
が予測子データを含まないモデル オブジェクトまたは関数ハンドルである場合、X
または customSyntheticData
を指定しなければなりません。blackbox
が完全な機械学習モデル オブジェクトであり、この引数を指定する場合、lime
は blackbox
の予測子データを使用しません。指定した予測子データのみを使用します。
データ型: single
| double
| table
queryPoint
— クエリ点
数値の行ベクトル | 単一行テーブル
lime
が予測を説明するクエリ点。数値の行ベクトルまたは単一行テーブルとして指定します。queryPoint
のデータ型および列の数は、X
、customSyntheticData
、または blackbox
の予測子データと同じでなければなりません。
numImportantPredictors
と queryPoint
を指定すると、関数 lime
は lime
オブジェクトを作成するときに単純モデルを当てはめます。
queryPoint
に欠損値が含まれていてはなりません。
例: blackbox.X(1,:)
は、完全な機械学習モデル blackbox
の予測子データの最初の観測値としてクエリ点を指定します。
データ型: single
| double
| table
numImportantPredictors
— 単純モデルで使用する重要な予測子の数
正の整数スカラー値
単純モデルで使用する重要な予測子の数。正の整数スカラー値として指定します。
'SimpleModelType'
が'linear'
(既定) である場合、ソフトウェアは、指定された数の重要な予測子を選択し、選択した予測子の線形モデルを当てはめます。重要でない予測子は線形モデルの当てはめに使用されないことに注意してください。'SimpleModelType'
が'tree'
である場合、ソフトウェアは、重要な予測子の数として決定分岐 (枝ノード) の最大数を指定し、当てはめられた決定木が、指定された数を上限に予測子を使用するようにします。
numImportantPredictors
と queryPoint
を指定すると、関数 lime
は lime
オブジェクトを作成するときに単純モデルを当てはめます。
データ型: single
| double
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例:
は、クエリ点を lime
(blackbox
,'QueryPoint'
,q,'NumImportantPredictors'
,n,'SimpleModelType','tree')q
、単純モデルに使用するための重要な予測子の数を n
、単純モデルのタイプを決定木モデルとして指定します。lime
は、合成予測子データ セットの標本を生成し、標本の予測を計算し、指定数が最大の予測子を使用してクエリ点に決定木モデルを当てはめます。
DataLocality
— データ生成する合成データの局所性
'global'
(既定値) | 'local'
データ生成する合成データの局所性。'DataLocality'
と 'global'
または 'local'
で構成されるコンマ区切りのペアとして指定します。
'global'
— ソフトウェアが、予測子データ セット全体 (X
またはblackbox
の予測子データ) を使用して分布パラメーターを推定します。ソフトウェアは、推定されたパラメーターを使用して合成予測子データ セットを生成し、任意のクエリ点への単純モデルの当てはめにそのデータ セットを使用します。'local'
—ソフトウェアが、クエリ点の k 最近傍を使用して分布パラメーターを推定します。ここで、k は'NumNeighbors'
個の値です。ソフトウェアは、指定されたクエリ点に単純モデルを当てはめるたびに、新しい合成予測子データ セットを生成します。
詳細は、LIMEを参照してください。
例: 'DataLocality','local'
データ型: char
| string
NumNeighbors
— クエリ点の近傍の数
1500 (既定値) | 正の整数スカラー値
クエリ点の近傍の数。'NumNeighbors'
と正の整数スカラー値で構成されるコンマ区切りのペアとして指定します。この引数は、'DataLocality'
が 'local'
である場合のみ有効です。
指定された値が予測子データ セット (blackbox
の X
または予測子データ) 内の観測値の数より大きい場合、lime
はすべての観測値を使用します。
例: 'NumNeighbors',2000
データ型: single
| double
NumSyntheticData
— 合成データ セットのために生成する標本の数
5000 (既定値) | 正の整数スカラー値
合成データ セットのために生成する標本の数。'NumSyntheticData'
と正の整数スカラー値で構成されるコンマ区切りのペアとして指定します。
例: 'NumSyntheticData',2500
データ型: single
| double
BetaTolerance
— 線形単純モデルの線形係数とバイアス項の相対許容誤差
1e-4
(既定値) | 非負のスカラー
R2023b 以降
線形単純モデルの線形係数とバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。
この引数は、SimpleModelType
の値が "linear"
の場合のみ有効です。
であるとします。これは、当てはめのステップ t における係数とバイアス項のベクトルです。 で線形単純モデルの当てはめプロセスが終了します。
例: "BetaTolerance",1e-8
データ型: single
| double
KernelWidth
— カーネルの幅
0.75 (既定値) | 数値スカラー値
二乗指数 (またはガウス) カーネル関数のカーネルの幅。'KernelWidth'
と数値スカラー値で構成されるコンマ区切りのペアとして指定します。
関数 lime
は、クエリ点と合成予測子データ セット内の標本の間の距離を計算し、その距離を二乗指数カーネル関数を使用して重みに変換します。'KernelWidth'
値を低くすると、lime
が使用する重みは、クエリ点に近い標本に重点を置くものになります。詳細については、LIMEを参照してください。
例: 'KernelWidth',0.5
データ型: single
| double
SimpleModelType
— 単純モデルのタイプ
'linear'
(既定値) | 'tree'
単純モデルのタイプ。'SimpleModelType'
と 'linear'
または 'tree'
で構成されるコンマ区切りのペアとして指定します。
'linear'
— ソフトウェアは、回帰にはfitrlinear
を、分類にはfitclinear
を使用して、線形モデルを当てはめます。'tree'
— ソフトウェアは、回帰にはfitrtree
を、分類にはfitctree
を使用して、決定木モデルを当てはめます。
例: 'SimpleModelType','tree'
データ型: char
| string
CategoricalPredictors
— カテゴリカル予測子のリスト
正の整数のベクトル | logical ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列 | 'all'
カテゴリカル予測子のリスト。'CategoricalPredictors'
と次の表のいずれかの値から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~
|
logical ベクトル |
|
文字行列 | 行列の各行は予測子変数の名前です。名前は、table 形式の予測子データの変数名と一致しなければなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの cell 配列または string 配列 | 配列の各要素は予測子変数の名前です。名前は、table 形式の予測子データの変数名と一致しなければなりません。 |
"all" | すべての予測子がカテゴリカルです。 |
blackbox
を関数ハンドルとして指定する場合、lime
は予測子データX
またはcustomSyntheticData
からカテゴリカル予測子を識別します。予測子データがテーブル内にある場合、lime
は、その変数が logical ベクトル、順序付けのない categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。予測子データが行列である場合、lime
はすべての予測子が連続的であると見なします。blackbox
を回帰または分類モデル オブジェクトとして指定する場合、lime
はモデル オブジェクトのCategoricalPredictors
プロパティを使用してカテゴリカル予測子を識別します。
lime
は順序付きのカテゴリカル予測子をサポートしていません。
例: 'CategoricalPredictors','all'
データ型: single
| double
| logical
| char
| string
| cell
Type
— 機械学習モデルのタイプ
'regression
| 'classification'
機械学習モデルのタイプ。'Type'
と 'regression
または 'classification'
で構成されるコンマ区切りのペアとして指定します。
blackbox
を関数ハンドルとして指定するときは、この引数を指定しなければなりません。blackbox
を回帰または分類モデル オブジェクトとして指定した場合、lime
はモデルのタイプに応じて 'Type'
の値を決定します。
例: 'Type','classification'
データ型: char
| string
Distance
— 距離計量
文字ベクトル | string スカラー | 関数ハンドル
距離計量。'Distance'
と文字ベクトル、string スカラー、または関数ハンドルで構成されるコンマ区切りのペアとして指定します。
予測子データに連続変数のみが含まれる場合、
lime
はこれらの距離計量をサポートします。値 説明 'euclidean'
ユークリッド距離。
'seuclidean'
標準化されたユークリッド距離。観測値間の各座標差は、標準偏差
S = std(PD,'omitnan')
の対応する要素で除算することによりスケーリングされます。ここで、PD
は予測子データ、または合成予測子データです。別のスケーリングを指定するには、名前と値の引数'Scale'
を使用します。'mahalanobis'
PD
の標本共分散を使用したマハラノビス距離、C = cov(PD,'omitrows')
。共分散行列の値を変更するには、名前と値の引数'Cov'
を使用します。'cityblock'
市街地距離。
'minkowski'
ミンコフスキー距離。既定の指数は 2 です。別の指数を指定するには、名前と値の引数
'P'
を使用します。'chebychev'
チェビシェフ距離 (最大座標差)。
'cosine'
1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値。
'correlation'
1 から、値の系列として扱われる点の間の標本相関を引いた値。
'spearman'
1 から、観測値間の標本スピアマンの順位相関 (値の系列として扱われる) を引いた値。
@
distfun
カスタム距離関数のハンドル。距離関数の形式は次のようになります。
ここでfunction D2 = distfun(ZI,ZJ) % calculation of distance ...
ZI
は、単一の観測値が含まれている1
行t
列のベクトルです。ZJ
は、複数の観測値が含まれているs
行t
列の行列です。distfun
は、任意の個数の観測値が含まれている行列ZJ
を受け入れなければなりません。D2
はs
行1
列の距離のベクトルであり、D2(k)
は観測値ZI
とZJ(k,:)
の間の距離です。
データがスパースでない場合、通常は関数ハンドルではなく組み込みの距離計量を使用する方が高速に距離を計算できます。
予測子データに連続変数とカテゴリカル変数の両方が含まれる場合、
lime
はこれらの距離計量をサポートします。値 説明 'goodall3'
異形グドール距離
'ofd'
出現頻度距離
定義については距離計量を参照してください。
既定値は、予測子データに連続変数のみが含まれる場合は 'euclidean'
、予測子データに連続変数とカテゴリカル変数の両方が含まれる場合は 'goodall3'
です。
例: 'Distance','ofd'
データ型: char
| string
| function_handle
Cov
— マハラノビス距離計量の共分散行列
正定値行列
マハラノビス距離計量の共分散行列。'Cov'
と K 行 K 列の正定値行列で構成されるコンマ区切りのペアとして指定します。K は予測子の数です。
この引数は、'Distance'
が 'mahalanobis'
である場合のみ有効です。
既定の 'Cov'
値は cov(PD,'omitrows')
です。ここで、PD
は予測子データ、または合成予測子データです。'Cov'
値を指定しなかった場合、ソフトウェアは、予測子データおよび合成予測子データの両方の距離を計算するときに、異なる共分散行列を使用します。
例: 'Cov',eye(3)
データ型: single
| double
P
— ミンコフスキー距離計量の指数
2
(既定値) | 正のスカラー
ミンコフスキー距離計量の指数。'P'
と正のスカラー値をコンマで区切って指定します。
この引数は、'Distance'
が 'minkowski'
である場合のみ有効です。
例: 'P',3
データ型: single
| double
Scale
— 標準化されたユークリッド距離計量のスケール パラメーター値
非負の数値ベクトル
標準化されたユークリッド距離計量のスケール パラメーター値。'Scale'
と長さ K の非負の数値ベクトルで構成されるコンマ区切りのペアとして指定します。K は予測子の数です。
この引数は、'Distance'
が 'seuclidean'
である場合のみ有効です。
既定の 'Scale'
値は std(PD,'omitnan')
です。ここで、PD
は予測子データ、または合成予測子データです。'Scale'
値を指定しなかった場合、ソフトウェアは、予測子データおよび合成予測子データの両方の距離を計算するときに、異なるスケール パラメーターを使用します。
例: 'Scale',quantile(X,0.75) - quantile(X,0.25)
データ型: single
| double
プロパティ
指定されるプロパティ
lime
オブジェクトを作成するときに、以下のプロパティを指定できます。
BlackboxModel
— 解釈される機械学習モデル
回帰モデル オブジェクト | 分類モデル オブジェクト | 関数ハンドル
この プロパティ は読み取り専用です。
解釈される機械学習モデル。回帰または分類モデル オブジェクトとして指定するか、関数ハンドルとして指定します。
blackbox
引数によってこのプロパティが設定されます。
CategoricalPredictors
— カテゴリカル予測子のインデックス
正の整数のベクトル | []
この プロパティ は読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors
には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p
です。p
はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]
) になります。
関数ハンドルを使用して
blackbox
を指定した場合、lime
は予測子データX
またはcustomSyntheticData
からカテゴリカル予測子を識別します。名前と値の引数'CategoricalPredictors'
を指定した場合にこのプロパティが設定されます。blackbox
を回帰または分類モデル オブジェクトとして指定した場合、lime
はモデル オブジェクトのCategoricalPredictors
プロパティを使用してこのプロパティを決定します。
lime
は順序付きのカテゴリカル予測子をサポートしていません。
'SimpleModelType'
が 'linear'
の場合 (既定)、lime
は識別されたそれぞれのカテゴリカル予測子についてダミー変数を作成します。lime
は、指定されたクエリ点のカテゴリを参照グループとして扱い、カテゴリの数より 1 つ少ないダミー変数を作成します。詳細は、参照グループを使用したダミー変数を参照してください。
データ型: single
| double
DataLocality
— データ生成する合成データの局所性
'global'
| 'local'
この プロパティ は読み取り専用です。
データ生成する合成データの局所性。'global'
または 'local'
として指定します。
名前と値の引数 'DataLocality'
によってこのプロパティが設定されます。
NumImportantPredictors
— 単純モデルで使用する重要な予測子の数
正の整数スカラー値
この プロパティ は読み取り専用です。
単純モデル (SimpleModel
) で使用する重要な予測子の数。正の整数スカラー値として指定します。この値は単純モデルの学習に実際に使用した予測子の数より大きくてもかまわないことに注意してください。詳細については、LIMEを参照してください。
lime
の numImportantPredictors
引数、または fit
の numImportantPredictors
引数によってこのプロパティが設定されます。
データ型: single
| double
NumSyntheticData
— 合成データ セットの標本数
正の整数スカラー値
この プロパティ は読み取り専用です。
合成データ セットの標本数。正の整数スカラー値として指定します。
customSyntheticData
を指定した場合、カスタム合成データ セットの標本数によってこのプロパティが設定されます。そうでない場合、
lime
の名前と値の引数'NumSyntheticData'
、またはfit
の名前と値の引数'NumSyntheticData'
によってこのプロパティが設定されます。
データ型: single
| double
QueryPoint
— クエリ点
数値の行ベクトル | 単一行テーブル
この プロパティ は読み取り専用です。
lime
が単純モデル (SimpleModel
) を使用して予測子を説明するクエリ点。数値の行ベクトルまたは単一行テーブルとして指定します。
lime
の queryPoint
引数、または fit
の queryPoint
引数によってこのプロパティが設定されます。
データ型: single
| double
| table
Type
— 機械学習モデルのタイプ
'regression
| 'classification'
この プロパティ は読み取り専用です。
機械学習モデル (BlackboxModel
) のタイプ。'regression
または 'classification'
として指定します。
X
— 予測子データ
数値行列 | テーブル
この プロパティ は読み取り専用です。
予測子データ。数値行列またはテーブルとして指定します。
X
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
X
引数を指定した場合にこのプロパティが設定されます。customSyntheticData
引数を指定した場合、このプロパティは空になります。blackbox
を完全な機械学習モデル オブジェクトとして指定し、X
またはcustomSyntheticData
を指定しなかった場合、このプロパティ値がblackbox
の学習に使用される予測子データになります。
lime
は欠損値を含む行は使用せず、それらの行は X
に格納されません。
データ型: single
| double
| table
計算されるプロパティ
以下のプロパティはソフトウェアによって計算されます。
BlackboxFitted
— 機械学習モデルによって計算されたクエリ点の予測
スカラー
この プロパティ は読み取り専用です。
機械学習モデル (BlackboxModel
) によって計算されたクエリ点の予測。スカラーとして指定します。予測は、回帰の場合は予測された応答、分類の場合は分類されたラベルになります。
データ型: single
| double
| categorical
| logical
| char
| string
| cell
Fitted
— 機械学習モデルによって計算された合成予測子データの予測
ベクトル
この プロパティ は読み取り専用です。
機械学習モデル (BlackboxModel
) によって計算された合成予測子データの予測。ベクトルとして指定します。
データ型: single
| double
| categorical
| logical
| char
| string
| cell
ImportantPredictors
— 重要な予測子のインデックス
正の整数のベクトル
この プロパティ は読み取り専用です。
重要な予測子のインデックス。正の整数のベクトルとして指定します。ImportantPredictors
には単純モデル (SimpleModel
) で使用される予測子の列に対応するインデックス値が格納されます。
データ型: single
| double
SimpleModel
— 単純モデル
RegressionLinear
モデル オブジェクト | RegressionTree
モデル オブジェクト | ClassificationLinear
モデル オブジェクト | ClassificationTree
モデル オブジェクト
この プロパティ は読み取り専用です。
単純モデル。RegressionLinear
、RegressionTree
、ClassificationLinear
、または ClassificationTree
モデル オブジェクトとして指定します。lime
は機械学習モデルのタイプ (Type
) および単純モデルのタイプ ('SimpleModelType'
) に応じて単純モデル オブジェクトのタイプを決定します。
SimpleModelFitted
— 単純モデルによって計算されたクエリ点の予測
スカラー
この プロパティ は読み取り専用です。
単純モデル (SimpleModel
) によって計算されたクエリ点の予測。スカラーとして指定します。
SimpleModel
が ClassificationLinear
の場合、SimpleModelFitted
の値は 1 または –1 になります。
SimpleModelFitted
の値が 1 になるのは、単純モデルからの予測がBlackboxFitted
(機械学習モデルからの予測) と同じである場合です。SimpleModelFitted
の値が –1 になるのは、単純モデルからの予測がBlackboxFitted
と異なる場合です。BlackboxFitted
の値がA
であった場合、関数plot
はSimpleModelFitted
の値をNot A
として表示します。
データ型: single
| double
| categorical
| logical
| char
| string
| cell
SyntheticData
— 合成予測子データ
数値行列 | テーブル
この プロパティ は読み取り専用です。
合成予測子データ。数値行列または table として指定します。
customSyntheticData
入力引数を指定した場合にこのプロパティが設定されます。そうでない場合、
lime
は、予測子データX
から分布パラメーターを推定して合成予測子データ セットを生成します。
データ型: single
| double
| table
オブジェクト関数
例
単純な決定木モデルを使った予測の説明
分類モデルの学習を行い、単純な決定木モデルを使用する lime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定して、ソフトウェアが合成データ セットの標本を生成し、重要な予測子を使って単純モデルをクエリ点に当てはめるようにします。次に、オブジェクト関数 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' }
tbl
から顧客 ID と信用格付けの列を削除して、予測子変数の table を作成します。
tblX = removevars(tbl,["ID","Rating"]);
関数fitcecoc
を使用して、信用格付けの blackbox モデルに学習させます。
blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry');
単純な決定木モデルを使用して最後の観測値の予測を説明する lime
オブジェクトを作成します。最大 6 つの重要な予測子を見つけるため、'NumImportantPredictors'
を 6 に指定します。lime
オブジェクトを作成するときに 'QueryPoint'
と 'NumImportantPredictors'
の値を指定した場合、ソフトウェアは合成データ セットの標本を生成し、解釈可能な単純モデルを合成データ セットに当てはめます。
queryPoint = tblX(end,:)
queryPoint=1×6 table
WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry
_____ _____ _______ ________ ____ ________
0.239 0.463 0.065 2.924 0.34 2
rng('default') % For reproducibility results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ... 'SimpleModelType','tree')
results = lime with properties: BlackboxModel: [1x1 ClassificationECOC] DataLocality: 'global' CategoricalPredictors: 6 Type: 'classification' X: [3932x6 table] QueryPoint: [1x6 table] NumImportantPredictors: 6 NumSyntheticData: 5000 SyntheticData: [5000x6 table] Fitted: {5000x1 cell} SimpleModel: [1x1 ClassificationTree] ImportantPredictors: [2x1 double] BlackboxFitted: {'AA'} SimpleModelFitted: {'AA'}
オブジェクト関数 plot
を使用して、lime
オブジェクト results
をプロットします。
f = plot(results);
プロットには、クエリ点についての 2 つの予測値が示されています。この予測値は、results
のBlackboxFittedプロパティとSimpleModelFittedプロパティに対応します。
横棒グラフは、予測子の重要度の並べ替えられた値を示しています。lime
はクエリ点の重要な予測子として財務比率変数 MVE_BVTD
および RE_TA
を求めます。
バーの長さは、データ ヒントまたはBar のプロパティを使用して読み取ることができます。たとえば、関数 findobj
を使用して Bar
オブジェクトを検索し、関数 text
を使用して、バーの端にラベルを追加できます。
b = findobj(f,'Type','bar'); text(b.YEndPoints+0.001,b.XEndPoints,string(b.YData))
あるいは、予測子変数名をもつ table に係数値を表示することもできます。
imp = b.YData; flipud(array2table(imp', ... 'RowNames',f.CurrentAxes.YTickLabel,'VariableNames',{'Predictor Importance'}))
ans=2×1 table
Predictor Importance
____________________
MVE_BVTD 0.088412
RE_TA 0.0018061
線形単純モデルを使用した予測の説明
回帰モデルの学習を行い、線形単純モデルを使用する lime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定しなかった場合、ソフトウェアは合成データ セットの標本を生成しますが、単純モデルの当てはめは行いません。オブジェクト関数 fit
を使用して、クエリ点に単純モデルを当てはめます。次に、オブジェクト関数 plot
を使用して、当てはめた線形単純モデルの係数を表示します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
Acceleration
、Cylinders
などの予測子変数と応答変数 MPG
が格納された table を作成します。
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);
学習セットの欠損値を削除すると、メモリ消費量を減らして関数 fitrkernel
の学習速度を向上させることができます。tbl
の欠損値を削除します。
tbl = rmmissing(tbl);
tbl
から応答変数を削除して、予測子変数のテーブルを作成します。
tblX = removevars(tbl,'MPG');
関数fitrkernel
を使用して MPG
の blackbox モデルの学習を行います。
rng('default') % For reproducibility mdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]);
lime
オブジェクトを作成します。mdl
には予測子データが含まれないため、予測子データ セットを指定します。
results = lime(mdl,tblX)
results = lime with properties: BlackboxModel: [1x1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392x6 table] QueryPoint: [] NumImportantPredictors: [] NumSyntheticData: 5000 SyntheticData: [5000x6 table] Fitted: [5000x1 double] SimpleModel: [] ImportantPredictors: [] BlackboxFitted: [] SimpleModelFitted: []
results
には、生成された合成データ セットが含まれます。SimpleModel
プロパティは空 ([]
) です。
tblX
の最初の観測値に線形単純モデルを当てはめます。検出する重要な予測子の数を 3 に指定します。
queryPoint = tblX(1,:)
queryPoint=1×6 table
Acceleration Cylinders Displacement Horsepower Model_Year Weight
____________ _________ ____________ __________ __________ ______
12 8 307 130 70 3504
results = fit(results,queryPoint,3);
オブジェクト関数 plot
を使用して、lime
オブジェクト results
をプロットします。
plot(results)
プロットには、クエリ点についての 2 つの予測値が示されています。この予測値は、results
のBlackboxFittedプロパティとSimpleModelFittedプロパティに対応します。
横棒グラフは、絶対値で並べ替えられた、単純モデルの係数値を示します。LIME は、クエリ点の重要な予測子として、Horsepower
、Model_Year
、および Cylinders
を見つけます。
Model_Year
および Cylinders
は複数のカテゴリをもつカテゴリカル予測子です。線形単純モデルの場合、各カテゴリカル予測子について、カテゴリの数よりも 1 つ少ないダミー変数が作成されます。棒グラフには最も重要なダミー変数のみが表示されます。他のダミー変数の係数は results
の SimpleModel
プロパティを使用して確認できます。すべてのカテゴリカル ダミー変数を含む並べ替えられた係数の値を表示します。
[~,I] = sort(abs(results.SimpleModel.Beta),'descend'); table(results.SimpleModel.ExpandedPredictorNames(I)',results.SimpleModel.Beta(I), ... 'VariableNames',{'Expanded Predictor Name','Coefficient'})
ans=17×2 table
Expanded Predictor Name Coefficient
__________________________ ___________
{'Horsepower' } -3.5035e-05
{'Model_Year (74 vs. 70)'} -6.1591e-07
{'Model_Year (80 vs. 70)'} -3.9803e-07
{'Model_Year (81 vs. 70)'} 3.4186e-07
{'Model_Year (82 vs. 70)'} -2.2331e-07
{'Cylinders (6 vs. 8)' } -1.9807e-07
{'Model_Year (76 vs. 70)'} 1.816e-07
{'Cylinders (5 vs. 8)' } 1.7318e-07
{'Model_Year (71 vs. 70)'} 1.5694e-07
{'Model_Year (75 vs. 70)'} 1.5486e-07
{'Model_Year (77 vs. 70)'} 1.5151e-07
{'Model_Year (78 vs. 70)'} 1.3864e-07
{'Model_Year (72 vs. 70)'} 6.8949e-08
{'Cylinders (4 vs. 8)' } 6.3098e-08
{'Model_Year (73 vs. 70)'} 4.9696e-08
{'Model_Year (79 vs. 70)'} -2.4822e-08
⋮
Blackbox モデルを関数ハンドルとして指定
回帰モデルの学習を行い、モデルの関数 predict
の関数ハンドルを使用する lime
オブジェクトを作成します。オブジェクト関数 fit
を使用して、指定したクエリ点に単純モデルを当てはめます。次に、オブジェクト関数 plot
を使用して、当てはめた線形単純モデルの係数を表示します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
予測子変数 Acceleration
、Cylinders
などを格納する table を作成します。
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight);
関数 TreeBagger
を使用して MPG
の blackbox モデルの学習を行います。
rng('default') % For reproducibility Mdl = TreeBagger(100,tbl,MPG,'Method','regression','CategoricalPredictors',[2 5]);
lime
は TreeBagger
オブジェクトを直接はサポートしないため、lime
の最初の入力引数 (blackbox モデル) を TreeBagger
オブジェクトとして指定することはできません。代わりに、関数 predict
の関数ハンドルを使用できます。関数 predict
のオプションも関数の名前と値の引数を使用して指定できます。
TreeBagger
オブジェクト Mdl
の関数 predict
の関数ハンドルを作成します。使用する木のインデックスの配列を 1:50
と指定します。
myPredict = @(tbl) predict(Mdl,tbl,'Trees',1:50);
関数ハンドル myPredict
を使用して lime
オブジェクトを作成します。blackbox モデルを関数ハンドルとして指定する場合、予測子データを提供し、名前と値の引数 'Type'
を指定しなければなりません。tbl
には、double
データ型のカテゴリカル予測子 (Cylinder
および Model_Year
) が含まれています。既定では、lime
は double
データ型の変数をカテゴリカル予測子として扱いません。2 番目 (Cylinder
) と 5 番目 (Model_Year
) の変数をカテゴリカル予測子として指定します。
results = lime(myPredict,tbl,'Type','regression','CategoricalPredictors',[2 5]);
tbl
の最初の観測値に線形単純モデルを当てはめます。
results = fit(results,tbl(1,:),4); plot(results)
lime
は、重要な予測子として Horsepower
、Displacement
、Cylinders
、および Model_Year
を見つけます。
詳細
距離計量
距離計量は、2 つの観測値の間の距離を定義する関数です。lime
は、連続変数用のさまざまな距離計量や、連続変数とカテゴリカル変数の混在をサポートします。
連続変数の距離計量
mx 行 n 列のデータ行列 X (mx 個の 1 行 n 列の行ベクトル x1、x2、...、xmx として扱われる) と、my 行 n 列のデータ行列 Y (my 個の 1 行 n 列の行ベクトル y1、y2、...、ymy として扱われる) が与えられた場合、ベクトル xs と yt の間のさまざまな距離は次のように定義されます。
ユークリッド距離
ユークリッド距離はミンコフスキー距離の特殊なケース、p = 2 の場合です。
ユークリッド距離を指定するには、
Distance
パラメーターを'euclidean'
に設定します。標準化されたユークリッド距離
ここで、V は j 番目の対角要素が (S(j))2 である n 行 n 列の対角行列です。S は各次元のスケーリング係数のベクトルです。
標準化されたユークリッド距離を指定するには、
Distance
パラメーターを'seuclidean'
に設定します。マハラノビス距離
ここで、C は共分散行列です。
マハラノビス距離を指定するには、
Distance
パラメーターを'mahalanobis'
に設定します。市街地距離
市街地距離はミンコフスキー距離の特殊なケース、p = 1 の場合です。
市街地距離を指定するには、
Distance
パラメーターを'cityblock'
に設定します。ミンコフスキー距離
p = 1 という特殊なケースでは、ミンコフスキー距離は市街地距離を与えます。p = 2 という特殊なケースでは、ミンコフスキー距離はユークリッド距離を与えます。p = ∞ という特殊なケースでは、ミンコフスキー距離はチェビシェフ距離を与えます。
ミンコフスキー距離を指定するには、
Distance
パラメーターを'minkowski'
に設定します。チェビシェフ距離
チェビシェフ距離はミンコフスキー距離の特殊なケース、p = ∞ の場合です。
チェビシェフ距離を指定するには、
Distance
パラメーターを'chebychev'
に設定します。コサイン距離
コサイン距離を指定するには、
Distance
パラメーターを'cosine'
に設定します。相関距離
ここで
および
相関距離を指定するには、
Distance
パラメーターを'correlation'
に設定します。スピアマン距離は、1 から一連の値として扱われる観測値間の標本スピアマン順位相関係数を引きます。
ここで
スピアマン距離を指定するには、
Distance
パラメーターを'spearman'
に設定します。
連続変数とカテゴリカル変数が混在する場合の距離計量
異形グドール距離
この距離は、グドール距離のバリアントであり、他の値の頻度に関係なく、一致する値が互いに離れた場所にある場合に小さな距離を割り当てます。不一致の場合、予測子の距離寄与は 1/(変数の数) です。
異形グドール距離を指定するには、
Distance
パラメーターを'goodall3'
に設定します。出現頻度距離
一致の場合、出現頻度距離はゼロ距離を割り当てます。不一致の場合、出現頻度距離は、頻度の低い値に高い距離を割り当て、頻度の高い値に低い距離を割り当てます。
出現頻度距離を指定するには、
Distance
パラメーターを'ofd'
に設定します。
アルゴリズム
LIME
手順 1 ~ 5 の記載のとおり、LIME [1]を使用して機械学習モデルの予測を説明するため、ソフトウェアは、合成データ セットを生成し、lime
と fit
を使用して解釈可能な単純モデルを合成データ セットに当てはめます。
lime
のqueryPoint
値とnumImportantPredictors
値を指定した場合、関数lime
はすべての手順を実行します。queryPoint
およびnumImportantPredictors
を指定せずに'DataLocality'
を'global'
(既定の設定) として指定した場合、関数lime
が合成データ セットを生成し (手順 1 ~ 2)、関数fit
が単純モデルを当てはめます (手順 3 ~ 5)。queryPoint
およびnumImportantPredictors
を指定せずに'DataLocality'
を'local'
として指定した場合、関数fit
はすべての手順を実行します。
関数 lime
および fit
は、以下の手順を実行します。
連続変数には多変量正規分布を、各カテゴリカル変数には多変量分布を使用して、合成予測子データ セット Xs を生成します。名前と値の引数
'NumSyntheticData'
を使用して、生成する標本の数を指定できます。'DataLocality'
が'global'
(既定の設定) である場合、ソフトウェアは、予測子データ セット全体 (X
またはblackbox
内の予測子データ) から分布パラメーターを推定します。'DataLocality'
が'local'
である場合、ソフトウェアは、クエリ点の k 個の最近傍を使用して分布パラメーターを推定します。ここで、k は'NumNeighbors'
値です。名前と値の引数'Distance'
を使用して、最近傍を見つけるための距離計量を指定できます。
ソフトウェアは、分布パラメーターを推定する際、予測子データ セット内の欠損値を無視します。
あるいは、
lime
の入力引数customSyntheticData
を使用することで、事前生成されたカスタム合成予測子データ セットを提供できます。合成データ セット Xs についての予測値 Ys を計算します。この予測値は、回帰、または分類を行うための分類済みラベルについての予測応答です。ソフトウェアは、
blackbox
モデルの関数predict
を使用して予測値を計算します。blackbox
を関数ハンドルとして指定した場合、ソフトウェアは、その関数ハンドルを使用して予測値を計算します。'Distance'
によって指定された距離計量を使用して、クエリ点と合成予測子データ セット内の標本の距離 d を計算します。二乗指数 (またはガウス) カーネル関数を使用して、クエリ点 q に対する合成予測子データ セット内の標本の重み値 wq を計算します。
xs は、合成予測子データ セット Xs 内の標本です。
d(xs,q) は、標本 xs とクエリ点 q の距離です。
p は、Xs 内の予測子の数です。
σ はカーネルの幅です。名前と値の引数
'KernelWidth'
を使用して指定できます。既定の'KernelWidth'
値は 0.75 です。
クエリ点における重み値は 1 であり、距離の値が大きくなるにつれ、0 に収束していきます。
'KernelWidth'
値は、重み値が 0 に収束する速度を制御します。'KernelWidth'
値が小さければ、重み値はより速く 0 に収束します。その結果、アルゴリズムは、クエリ点に近い標本に、より大きな重みを付与します。このような重み値がアルゴリズムによって使用されることで、選択された重要な予測子、および当てはめられた単純モデルによる、クエリ点周辺の合成データについての予測子の局所的な説明が有効となります。単純モデルを当てはめます。
'SimpleModelType'
が'linear'
(既定の設定) である場合、ソフトウェアは、重要な予測子を選択し、選択した重要な予測子の線形モデルを当てはめます。グループ直交マッチング追跡 (OMP) アルゴリズム[2][3]を使用して、n 個の重要な予測子 () を選択します。ここで、n は
numImportantPredictors
値です。このアルゴリズムは、合成予測子データ セット (Xs)、予測子 (Ys)、および重み値 (wq) を使用します。重要でない予測子 (推定される係数が 0 の予測子) は選択されないことに注意してください。したがって、選択される重要な予測子の数は n 未満になることがあります。
重み値 (wq) を使用して、選択した重要な予測子 () の線形モデルを予測子 (Ys) に当てはめます。ソフトウェアは、回帰には
fitrlinear
を、分類にはfitclinear
を使用します。マルチクラス モデルの場合、ソフトウェアは、1 対他 (OVA) 方式を使用してバイナリ分類問題を作成します。陽性クラスはblackbox
モデルからのクエリ点についての予測クラスであり、陰性クラスはその他のクラスを指します。
'SimpleModelType'
が'tree'
である場合、ソフトウェアは、回帰にはfitrtree
を、分類にはfitctree
を使用して決定木モデルを当てはめます。ソフトウェアは、重要な予測子の数として決定分岐 (枝ノード) の最大数を指定し、当てはめられた決定木が、指定された数を上限に予測子を使用するようにします。
参照
[1] Ribeiro, Marco Tulio, S. Singh, and C. Guestrin. "'Why Should I Trust You?': Explaining the Predictions of Any Classifier." In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 1135–44. San Francisco, California: ACM, 2016.
[2] Świrszcz, Grzegorz, Naoki Abe, and Aurélie C. Lozano. "Grouped Orthogonal Matching Pursuit for Variable Selection and Prediction." Advances in Neural Information Processing Systems (2009): 1150–58.
[3] Lozano, Aurélie C., Grzegorz Świrszcz, and Naoki Abe. "Group Orthogonal Matching Pursuit for Logistic Regression." Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics (2011): 452–60.
バージョン履歴
R2020b で導入R2023b: LIME で線形単純モデルの BetaTolerance
の指定をサポート
線形単純モデル (SimpleModelType
を参照) を当てはめて LIME の値を計算する場合に、名前と値の引数 BetaTolerance
を使用して単純モデルの線形係数とバイアス項の相対許容誤差を指定できます。BetaTolerance
の既定値は 1e-4
です。
R2023a では、線形単純モデルの線形係数の相対許容誤差は 1e-8
でした。以前のリリースでは、値は 1e-4
でした。
参考
plotPartialDependence
| shapley
トピック
- LIME を使用した表形式データに関する深層ネットワークの予測の解釈 (Deep Learning Toolbox)
- 機械学習モデルの解釈
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)