ClassificationSolutionVersion - Global
The ClassificationSolutionVersion API is a scriptable object used in Predictive Intelligence stores.
This API requires the Predictive Intelligence plugin (com.glide.platform_ml) and is provided
within the sn_ml namespace.
This API is used for working with solution versions based on ClassificationSolution API objects in the ClassificationSolution store.
The system creates a solution version each time you train a solution definition. Most versions are created during scheduled solution training.
ClassificationSolutionVersion - getPredictionPerformance(Object options)
Calculates solution precision and coverage.
To use this method, you must first create settings using the setPredictionSettings() method.
| Name | Type | Description |
|---|---|---|
| options | Object | Selects a metric to retrieve within a span of dates. For more information, see Configuring target metrics. |
| options.fromDate | String | Optional. Start date from which to retrieve metrics in system date time format. |
| options.metricName | String | Name of the metric. Valid values:
|
| options.toDate | String | Optional. End date from which to retrieve metrics. Formnt: System date time format. |
| Type | Description |
|---|---|
| Object | Parseable JavaScript object containing the results for the input metric. |
| Object.metricName | Name of metric selected as input. Data type: String |
| Object.metricValue | Value of the selected metric. Data type: String |
| Object.numberOfRecordsConsidered | Number of records in the Predictor Results [ml_predictor_results] table
considered for calculations. Data type: String |
The following example shows how to get a precision value from the active version of a solution.
// Get precision value
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getPredictionPerformance({"metricName": "precision"})), null, 2));
Output:
{
"metricName": "precision",
"metricValue": "70.10",
"numberOfPredictionsConsidered": "10"
}
ClassificationSolutionVersion - getPredictionSettings()
Gets estimated precision, estimated coverage, estimated recall values from the ML Solutions [ml_solution] table and records from the Class Confidence [ml_class] table.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | Returns prediction settings for each class. Data includes precision, coverage, recall, and distribution values of all classes included in the trained model from the ML Solutions [ml_solution] table. For details,
see Predictive model components. |
| <Object>.<class name> | Training statistics data from the Class Confidence [ml_class] table. For more information, see Configuring target metrics. Data type: Object |
| <Object>.<class name>.precision | Estimated solution precision metric for this class. Data type: String (numerical value) |
| <Object>.<class name>.coverage | Estimated solution coverage metric for this class. Data type: String (numerical value) |
| <Object>.<class name>.recall | Estimated solution recall metric for this class. Data type: String (numerical value) |
The following example shows how to get prediction settings of an active solution version.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getPredictionSettings()), null, 2));
Output:
{
"solutionSettings": {
"precision": "61.69",
"coverage": "66.75",
"recall": "57.54"
},
"classSettings": {
"Approvals": {
"precision": "100",
"coverage": "0",
"recall": "0"
},
"Authentication": {
"precision": "38.71",
"coverage": "98.44",
"recall": "56.25"
},
"Automation": {
"precision": "100",
"coverage": "0",
"recall": "0"
}, ...
ClassificationSolutionVersion - getProperties()
Gets solution object properties and version number.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | Contents of the Dataset and ClassificationSolution version details. Results vary by object property setup. |
| <Object>.algorithmConfig | Method for encoding
the solution.
Data type: Object |
| <Object>.algorithmConfig.algorithm | Name of the
encoding algorithm for training this solution.
Possible values:
Data type: String |
| <Object>.algorithmConfig.targetClassRecall | Class recall parameter to steer
a solution's training to bias a specific class. The recall value is a number between
0 and 100 representing a percentage. Data type: String |
| <Object>.datasetProperties | Lists the properties of the DatasetDefinition() object associated with the solution. Data type: Object |
| <Object>.datasetProperties.tableName | Name of the table for the dataset. For
example, "tableName" : "Incident".
Data type: String |
| <Object>.datasetProperties.fieldNames | List of field names from the specified table
as strings. For example, "fieldNames" : ["short_description",
"priority"].
Data type: Array |
| <Object>.datasetProperties.fieldNames.fieldDetails | List of JavaScript objects that specify field
properties.
Data type: Array of Objects
|
| <Object>.datasetProperties.fieldNames.fieldDetails.<object>.name | Name of the field defining the type of
information to restrict this dataset to.
Data type: String |
| <Object>.datasetProperties.fieldDetails.<object>.type | Machine-learning field type.
Data type: String |
| <Object>.datasetProperties.fieldDetails.encodedQuery | Encoded query string in standard Glide format.
See Encoded query
strings.
Data type: String |
| <Object>.domainName | Domain name associated with this dataset. See Domain separation and Predictive Intelligence.
Data type: String |
| <Object>.encoder | Encoder object assigned to this
solution. See Encoder - Encoder(Object config). Data type: Object |
| <Object>.groupByFieldName | Field name
by which the system groups records to build classification solutions.
Data type: String |
| <Object>.inputFieldNames | List of input field names as strings. The
model uses these fields used to make
predictions.
Data type: String |
| <Object>.isActive | Flag that indicates whether this version is
active. Valid values:
Data type: String |
| <Object>.label | Identifies the prediction
task.
Data type: String |
| <Object>.name | System-assigned name.
Data type: String |
| <Object>.predictedFieldName | Identifies a field to be trained for
predictability.
Data type: String |
| <Object>.processingLanguage | Processing language in two-letter ISO 639-1 language code format.
Data type: String |
| <Object>.scope | Object scope. Currently the only valid value is
global.Data type: String |
| <Object>.stopwords | Optional. Preset
list of strings that the system automatically generates based on the
language property setting. For details, see Create a custom stopwords
list.
Data type: Array |
| <Object>.trainingFrequency | The frequency to retrain the model.
Possible values:
Data type: String |
| <Object>.versionNumber | Version number of
the
ClassificationSolution object. Data type: String |
The following example gets properties of the active object version in the store.
// Get properties
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getProperties()), null, 2));
Output:
*** Script: {
"datasetProperties": {
"encodedQuery": "activeANYTHING^EQ",
"fieldNames": [
"short_description",
"category"
],
"tableName": "incident"
},
"domainName": "global",
"inputFieldNames": [
"short_description"
],
"isActive": "true",
"label": "Incident Categorization_Trainer",
"name": "ml_incident_categorization",
"predictedFieldName": "category",
"processingLanguage": "en",
"stopwords": [
"Default English Stopwords"
],
"versionNumber": "1"
}
ClassificationSolutionVersion - getStatus(Boolean includeDetails)
Gets training completion status.
| Name | Type | Description |
|---|---|---|
| includeDetails | Boolean | Flag that indicates whether to return status details. Valid values:
Default: False |
| Type | Description |
|---|---|
| Object | JavaScript object containing training
status information
for a ClassificationSolution
object. |
| <Object>.state | Training completion state. If the training job reaches a terminal state, the job does not leave that state. If the state is terminal, the hasJobEnded property
is set to true.Possible values:
Data type: String |
| <Object>.hasJobEnded | Flag that indicates whether training is complete. Valid values:
Data type: Boolean value as a String |
| <Object>.percentComplete | Training percent complete. If the completion percentage is less than 100, the job might be in a terminal state. For example, if training times out. Data type: Number as a String Range: 0 thru 100 |
| <Object>.details | Object containing a list of additional
training details. Data type: Object |
The following example shows a successful result with training complete.
// Get status
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getStatus(true), null, 2)));
Output:
{
"state":"solution_complete",
"percentComplete":"100",
"hasJobEnded":"true",
"details":{"stepLabel":"Solution Complete"} // This information is only returned if getStatus(true);
}
The following example shows an unsuccessful result with training complete.
// Get status
var solutionName = 'ml_x_snc_global_global_classification_solution';
var mlSolution = sn_ml.ClassificationSolutionStore.get(solutionName);
var trainingStatus = mlSolution.getLatestVersion().getStatus();
gs.print(JSON.stringify(JSON.parse(trainingStatus), null, 2));
Output:
{
"state":"solution_error",
"percentComplete":"100",
"hasJobEnded":"true"
}
ClassificationSolutionVersion - getTrainingStatistics()
Gets all the training statistics for a given solution.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | JavaScript object with statistics for each class included in training and
values for each class that was excluded from training. For details, see Predictive model
components. |
| <Object>.includedClasses | Object containing precision, coverage, recall, and distribution values of each class in the trained model. Data type: Object
|
| <Object>.includedClasses.<class name>.distribution | Value of the outcome probability distribution for this class. Data type: String |
| <Object>.includedClasses.<class name>.statistics | List of objects providing training statistics data. For more information, see Configuring target metrics. Data type: Array of Objects
|
| <Object>.includedClasses.<class name>.statistics.coverage | Estimated solution coverage metric for this class. Data type: String (numerical value) |
| <Object>.includedClasses.<class name>.statistics.precision | Estimated solution precision metric for this class. Data type: String (numerical value) |
| <Object>.includedClasses.<class name>.statistics.recall | Estimated solution recall metric for this class. Data type: String (numerical value) |
| <Object>.includedClasses.<class name>.statistics.selected | Flag that indicates whether this class contains records included in solution training. Valid values:
Data type: String (Boolean value) Default: false |
| <Object>.excludedClasses | Distribution and row count of all the classes excluded from training. Data type: Object |
| <Object>.excludedClasses.<class name>.distribution | Value of the outcome probability distribution for this class. Data type: String |
| <Object>.excludedClasses.<class name>.rowCount | Number of rows excluded from training. Data type: String (numerical value) |
The following example shows how to get training statistics from the active solution.
// Get training stats
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getTrainingStatistics()), null, 2));
Output:
{
"includedClasses": {
"Approvals": {
"distribution": "0.43",
"statistics": [
{
"precision": "100",
"coverage": "0",
"recall": "0",
"selected": "true"
}
]
},
"Authentication": {
"distribution": "4.3",
"statistics": [
{
"precision": "39.33",
"coverage": "95.31",
"recall": "54.69",
"selected": "false"
},
{
"precision": "100",
"coverage": "0",
"recall": "0",
"selected": "false"
},
...
}
...
"excludedClasses": {
"ACE": {
"distribution": "0.11",
"rowCount": "9"
},
"AHA": {
"distribution": "0.01",
"rowCount": "1"
},
...
}
ClassificationSolutionVersion - getVersionNumber()
Gets the version number of a solution object.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| String | Version number. |
The following example shows how to get a version number.
// Get version number
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
gs.print("Version number: "+JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getVersionNumber()), null, 2));
Output:
Version number: 1
ClassificationSolutionVersion - predict(Object input, Object options)
Gets the input data for a prediction.
| Name | Type | Description |
|---|---|---|
| input | Object | GlideRecord or array of JSON objects containing field names and values as key-value pairs. |
| options | Object | Optional values for filtering prediction
results. |
| options.apply_threshold | Boolean | Flag that indicates whether to check the threshold value for the solution and apply it to the result set. Valid values:
Default: True |
| options.top_n | Number | If provided, returns the top results, up to the specified number of predictions. |
| Type | Description |
|---|---|
| Object | JSON object containing the prediction results sorted by
sys_id or record_number.
|
| <Object>.<identifier> | List of objects with details for each prediction result. Data type: Array of Objects
|
| <Object>.<identifier>.<object>.confidence | Value of the confidence associated
with the prediction. For example, 53.84.
Data type: Number |
| <Object>.<identifier>.<object>.predictedSysId | The sys_id of the predicted
value. Results can be from any table on which information is being
predicted.
Data type: String |
| <Object>.<identifier>.<object>.predictedValue | Value representing the
prediction result.
Data type: String |
| <Object>.<identifier>.<object>.threshold | Value of the configured threshold
associated with the prediction.
Data type: Number |
The following example shows how to display prediction results for a predict() method that takes a GlideRecord by sys_id for input and includes optional parameters to restrict to top three results and exclude the threshold value.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
// single GlideRecord input
var input = new GlideRecord("incident");
input.get("<sys_id>");
// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;
var results = mlSolution.getVersion(1).predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
Output:
{
"<sys_id/gr>": [
{
"confidence": 62.10782320780268,
"threshold": 20.36,
"predictedValue": "Clone Issues",
"predictedSysId": ""
},
{
"confidence": 6.945237375770391,
"threshold": 16.63,
"predictedValue": "Instance Administration",
"predictedSysId": ""
},
{
"confidence": 5.321061076300759,
"threshold": 23.7,
"predictedValue": "Administration",
"predictedSysId": ""
}
]
}
The following example shows how to display prediction results for a predict() method that takes an array of field names as key-value pairs for input and includes optional parameters to restrict to top three results and exclude the threshold value.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_incident_categorization');
// key-value pairs input
var input = [{"short_description":"my email is not working"}, {short_description:"need help with password"}];
// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;
var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
Output:
{
"1": [
{
"confidence": 37.5023032262591,
"threshold": 10.72,
"predictedValue": "Authentication",
"predictedSysId": ""
},
{
"confidence": 24.439964862166583,
"threshold": 23.7,
"predictedValue": "Administration",
"predictedSysId": ""
},
{
"confidence": 11.736320486031047,
"threshold": 100,
"predictedValue": "Security",
"predictedSysId": ""
}
],
"2": [
{
"confidence": 99,
"threshold": 17.77,
"predictedValue": "Email",
"predictedSysId": ""
},
{
"confidence": 3.182137005157543,
"threshold": 10.72,
"predictedValue": "Authentication",
"predictedSysId": ""
},
{
"confidence": 2.8773826570713514,
"threshold": -1,
"predictedValue": "Email (I/f)",
"predictedSysId": ""
}
]
}
ClassificationSolutionVersion - setPredictionSettings(Object options)
Sets precision, coverage, or recall values at solution level or class level.
| Name | Type | Description |
|---|---|---|
| options | Object | Metric configuration values. For information about these features, see Configuring target
metrics. |
| options.metricName | String | Name of the metric to set. Valid values:
|
| options.metricValue | String | Numeric value to assign to the metric. |
| options.className | String | Optional. Name of the class to restrict results to. Use the getTrainingStatistics() method to retrieve a complete list of classes for a solution. |
| Type | Description |
|---|---|
| None |
The following example shows how to set a precision metric to 89.5 for a class named
Clone Issues.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_classification');
var input = {"metricName" : "precision", "metricValue" : "89.5", "className" : "Clone Issues"};
mlSolution.getActiveVersion().setTrainingStatistics(input);