lime-explainer
Overview
LIME-based local explanation skill for individual predictions across tabular, text, and image data using Local Interpretable Model-agnostic Explanations.
Capabilities
- Tabular data explanations
- Text classification explanations
- Image classification explanations
- Submodular pick for representative samples
- Custom distance metrics
- Kernel width tuning
- Feature discretization
- Local surrogate model analysis
Target Processes
- Model Interpretability and Explainability Analysis
- Model Evaluation and Validation Framework
Tools and Libraries
- LIME
- scikit-learn
- numpy
- PIL/Pillow (for images)
Input Schema
{
"type": "object",
"required": ["modelPath", "dataType", "instancePath"],
"properties": {
"modelPath": {
"type": "string",
"description": "Path to the trained model or prediction function"
},
"dataType": {
"type": "string",
"enum": ["tabular", "text", "image"],
"description": "Type of data to explain"
},
"instancePath": {
"type": "string",
"description": "Path to instance(s) to explain"
},
"tabularConfig": {
"type": "object",
"properties": {
"trainingDataPath": { "type": "string" },
"featureNames": { "type": "array", "items": { "type": "string" } },
"categoricalFeatures": { "type": "array", "items": { "type": "integer" } },
"classNames": { "type": "array", "items": { "type": "string" } }
}
},
"textConfig": {
"type": "object",
"properties": {
"classNames": { "type": "array", "items": { "type": "string" } },
"splitExpression": { "type": "string" }
}
},
"imageConfig": {
"type": "object",
"properties": {
"segmenter": { "type": "string", "enum": ["quickshift", "slic", "felzenszwalb"] },
"hideColor": { "type": "string" },
"numSamples": { "type": "integer" }
}
},
"explainerConfig": {
"type": "object",
"properties": {
"numFeatures": { "type": "integer" },
"numSamples": { "type": "integer" },
"kernelWidth": { "type": "number" }
}
}
}
}
Output Schema
{
"type": "object",
"required": ["status", "explanations"],
"properties": {
"status": {
"type": "string",
"enum": ["success", "error"]
},
"explanations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"instanceId": { "type": "string" },
"predictedClass": { "type": "string" },
"predictionProbability": { "type": "number" },
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"feature": { "type": "string" },
"weight": { "type": "number" },
"contribution": { "type": "string" }
}
}
},
"localAccuracy": { "type": "number" }
}
}
},
"visualizations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"instanceId": { "type": "string" },
"plotPath": { "type": "string" }
}
}
}
}
}
Usage Example
{
kind: 'skill',
title: 'Generate LIME explanations for predictions',
skill: {
name: 'lime-explainer',
context: {
modelPath: 'models/classifier.pkl',
dataType: 'tabular',
instancePath: 'data/instances_to_explain.csv',
tabularConfig: {
trainingDataPath: 'data/train.csv',
featureNames: ['age', 'income', 'credit_score'],
categoricalFeatures: [0, 2],
classNames: ['reject', 'approve']
},
explainerConfig: {
numFeatures: 10,
numSamples: 5000
}
}
}
}