Antwarg, Liat, et al. "Explaining anomalies detected by autoencoders using SHAP." arXiv preprint arXiv:1903.02407 (2019).
Input values와 Autoencoder를 통해 얻은 Reconstructed output values 사이의 차이 (Reconstruction Error)를 설명하는 방법을 제시
Notations
errorList
such that topMfeatures
= contains a set of features for which the total corresponding errors topMerrors
: represent an adjustable percent of .논문에서 제안하는 방법은 topMFeatures
내에 높은 Reconstruction errors의 영향을 받은 Feature들을 SHAP value를 이용해 설명하는 것
topMfeatures
Input
ErrorList
: An ordered list of error per featureOutput
shaptopMfeatures
: SHAP values for each feature within topMfeatures
Algorithm
topMfeatures
<- top values fromErrorList
for each
i
intopMfeatures
do
explainer
<-shap.KernelExplainer(f, X1..j)
shaptopMfeatures[i]
<-explainer.shap_values(X, i)
return
shaptopMfeatures
Input
shaptopMfeatures
: SHAP values for each featuresOutput
shapContribute
, shapoffset
Algorithm
for each
i
inshaptopMfeatures
doif then
shapContribute[i]
<-shaptopMfeatures[i] < 0
shapOffset[i]
<-shaptopMfeatures[i] > 0
else
shapContribute[i]
<-shaptopMfeatures[i] > 0
shapOffset[i]
<-shaptopMfeatures[i] < 0
return
shapContribute
,shapOffset
논문을 아무리 보아도 Top-m Features를 선정하되, 전체 변수에 대해서도 충분히 유의미한 결과인지에 대한 내용을 찾기가 어려움
Anomaly를 설명하는 내용을 다루고 있기 때문에, 철저하게 inlier 값들은 배제하고 있음
관련한 Repository는 있음
Updates (April 26, 2021)
SHAP 라이브러리에 DeepExplainer
를 활용하는 것이 더 나을 것으로 보임