Métricas de explicabilidade

IA explicável em Python

Fouad Trad

Machine Learning Engineer

Consistência

  • Avalia a estabilidade das explicações quando o modelo é treinado em subsets diferentes
  • Baixa consistência → explicações não robustas

Imagem mostrando um conjunto de dados dividido em dois subsets: subset 1 e subset 2.

IA explicável em Python

Consistência

  • Avalia a estabilidade das explicações quando o modelo é treinado em subsets diferentes
  • Baixa consistência → explicações não robustas

Um modelo é treinado em cada subset.

IA explicável em Python

Consistência

  • Avalia a estabilidade das explicações quando o modelo é treinado em subsets diferentes
  • Baixa consistência → explicações não robustas

Cada vez que o modelo é treinado em um subset, extraímos importâncias de features e calculamos a similaridade do cosseno entre elas.

IA explicável em Python

Cosseno para medir consistência

 

 

 

Imagem mostrando valores-chave de Consistência e seus significados: 1 indica explicações muito consistentes.

IA explicável em Python

Cosseno para medir consistência

 

 

 

Imagem mostrando valores-chave de Consistência e seus significados: 1 indica explicações muito consistentes, 0 indica nenhuma consistência.

IA explicável em Python

Cosseno para medir consistência

 

 

 

Imagem mostrando valores-chave de Consistência e seus significados: 1 indica explicações muito consistentes, 0 indica nenhuma consistência, e -1 indica explicações opostas.

IA explicável em Python

Conjunto de admissões

GRE Score TOEFL Score University Rating SOP LOR CGPA Chance of Admit
337 118 4 4.5 4.5 9.65 0.92
324 107 4 4 4.5 8.87 0.76
316 104 3 3 3.5 8 0.72
322 110 3 3.5 2.5 8.67 0.8
314 103 2 2 3 8.21 0.45

 

  • X1, y1: primeira parte do conjunto de dados
  • X2, y2: segunda parte do conjunto de dados
  • model1, model2: random forest regressors
IA explicável em Python

Calculando consistência

from sklearn.metrics.pairwise import cosine_similarity

explainer1 = shap.TreeExplainer(model1) explainer2 = shap.TreeExplainer(model2)
shap_values1 = explainer1.shap_values(X1) shap_values2 = explainer2.shap_values(X2)
feature_importance1 = np.mean(np.abs(shap_values1), axis=0) feature_importance2 = np.mean(np.abs(shap_values2), axis=0)
consistency = cosine_similarity([feature_importance1], [feature_importance2]) print("Consistency between SHAP values:", consistency)
Consistency between SHAP values: [[0.99706516]]
IA explicável em Python

Fidelidade

  • Avalia se as features importantes influenciam as previsões
  • Baixa fidelidade → engana a confiança no raciocínio do modelo
  • Útil em aplicações sensíveis

Imagem mostrando um modelo gerando uma previsão original para uma amostra.

IA explicável em Python

Fidelidade

  • Avalia se as features importantes influenciam as previsões
  • Baixa fidelidade → engana a confiança no raciocínio do modelo
  • Útil em aplicações sensíveis

SHAP ou LIME explicam localmente essa previsão original.

IA explicável em Python

Fidelidade

  • Avalia se as features importantes influenciam as previsões
  • Baixa fidelidade → engana a confiança no raciocínio do modelo
  • Útil em aplicações sensíveis

Uma amostra modificada é passada ao modelo para gerar nova previsão.

IA explicável em Python

Fidelidade

  • Avalia se as features importantes influenciam as previsões
  • Baixa fidelidade → engana a confiança no raciocínio do modelo
  • Útil em aplicações sensíveis

Imagem mostrando a fórmula da fidelidade como o valor absoluto da diferença entre a nova previsão e a original.

IA explicável em Python

Calculando fidelidade

X_instance = X_test.iloc[[0]]

original_prediction = model.predict_proba(X_instance)[0, 1] print(f"Original prediction: {original_prediction}")
Original prediction: 0.43

Imagem mostrando a explicação de importância de features do LIME para a amostra selecionada.

IA explicável em Python

Calculando fidelidade

X_instance['GRE Score'] = 310  


new_prediction = model.predict_proba(X_instance)[0, 1] print(f"Prediction after perturbing {important_feature}: {new_prediction}")
faithfulness_score = np.abs(original_prediction - new_prediction) print(f"Local Faithfulness Score: {faithfulness_score}")
Prediction after perturbing GRE Score: 0.77

Local Faithfulness Score: 0.34
IA explicável em Python

Vamos praticar!

IA explicável em Python

Preparing Video For Download...