MySQL AI User Guide
After generating predicted ratings/rankings and recommendations, you can score the model to assess its reliability. For a list of scoring metrics you can use with recommendation models, see Recommendation Model Metrics. For this use case, you use the test dataset for validation. In a real-world use case, you should use a separate validation dataset that has the target column and ground truth values for the scoring validation. You should also use a larger number of records for training and validation to get a valid score.
Review and complete the following tasks:
The options for
ML_SCORE
include the following:
threshold: The optional threshold
that defines positive feedback, and a relevant sample.
Only use with ranking metrics. It can be used for either
explicit or implicit feedback.
topk: The optional top number of
recommendations to provide. The default is
3. Set a positive integer between 1
and the number of rows in the table.
A recommendation task and ranking
metrics can use both threshold and
topk.
remove_seen: If the input table
overlaps with the training table, and
remove_seen is
true, then the model will not repeat
existing interactions. The default is
true. Set
remove_seen to
false to repeat existing interactions
from the training table.
item_metadata: Defines the table that
has item descriptions. It is a JSON object that has the
table_name option as a key, which
specifies the table that has item descriptions. One
column must be the same as the
item_id in the input table.
user_metadata: Defines the table that
has user descriptions. It is a JSON object that has the
table_name option as a key, which
specifies the table that has user descriptions. One
column must be the same as the
user_id in the input table.
table_name: To be used with the
item_metadata and
user_metadata options. It
specifies the table name that has item or user
descriptions. It must be a string in a fully
qualified format (schema_name.table_name) that
specifies the table name.
If not already done, load the model. You can use the
session variable for the model that is valid for the
duration of the connection. Alternatively, you can use
the model handle previously set. For the option to set
the user name, you can set it to
NULL.
The following example uses the session variable.
mysql> CALL sys.ML_MODEL_LOAD(@model, NULL);
The following example uses the model handle.
mysql> CALL sys.ML_MODEL_LOAD('recommendation_use_case', NULL);
Score the model with the
ML_SCORE
routine and use the precision_at_k
metric.
mysql> CALL sys.ML_SCORE(table_name, target_column_name, model_handle, metric, score, [options]);
Replace table_name,
target_column_name,
model_handle,
metric,
score with your own values.
The following example runs
ML_SCORE
on the testing dataset previously created.
mysql> CALL sys.ML_SCORE('recommendation_data.testing_dataset', 'rating', @model, 'precision_at_k', @recommendation_score, NULL);Where:
recommendation_data.testing_dataset
is the fully qualified name of the validation
dataset.
rating is the target column name
with ground truth values.
@model is the session variable
for the model handle.
precision_at_k is the selected
scoring metric.
@recommendation_score is the
session variable name for the score value.
NULL means that no other options
are defined for the routine.
Retrieve the score by querying the @score session variable.
mysql> SELECT @recommendation_score;
+-----------------------+
| @recommendation_score |
+-----------------------+
| 0.23333333432674408 |
+-----------------------+
If done working with the model, unload it with the
ML_MODEL_UNLOAD
routine.
mysql> CALL sys.ML_MODEL_UNLOAD('recommendation_use_case');
To avoid consuming too much memory, it is good practice to unload a model when you are finished using it.
Review other Machine Learning Use Cases.