
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를 이용해 설명하는 것
topMfeaturesInput
ErrorList: An ordered list of error per featureOutput
shaptopMfeatures : SHAP values for each feature within topMfeatures
Algorithm
topMfeatures<- top values fromErrorListfor each
iintopMfeaturesdo
explainer<-shap.KernelExplainer(f, X1..j)
shaptopMfeatures[i]<-explainer.shap_values(X, i)return
shaptopMfeatures
Input
shaptopMfeatures : SHAP values for each featuresOutput
shapContribute, shapoffsetAlgorithm
for each
iinshaptopMfeaturesdoif then
shapContribute[i]<-shaptopMfeatures[i] < 0
shapOffset[i]<-shaptopMfeatures[i] > 0else
shapContribute[i]<-shaptopMfeatures[i] > 0
shapOffset[i]<-shaptopMfeatures[i] < 0return
shapContribute,shapOffset
논문을 아무리 보아도 Top-m Features를 선정하되, 전체 변수에 대해서도 충분히 유의미한 결과인지에 대한 내용을 찾기가 어려움
Anomaly를 설명하는 내용을 다루고 있기 때문에, 철저하게 inlier 값들은 배제하고 있음
관련한 Repository는 있음
Updates (April 26, 2021)
SHAP 라이브러리에 DeepExplainer를 활용하는 것이 더 나을 것으로 보임