retail/recommendation-system/bqml-scann/sql_scripts/sp_TrainItemMatchingModel.sql (22 lines of code) (raw):
CREATE OR REPLACE PROCEDURE @DATASET_NAME.sp_TrainItemMatchingModel(
IN dimensions INT64
)
BEGIN
CREATE OR REPLACE MODEL @DATASET_NAME.item_matching_model
OPTIONS(
MODEL_TYPE='matrix_factorization',
FEEDBACK_TYPE='implicit',
WALS_ALPHA=1,
NUM_FACTORS=(dimensions),
USER_COL='item1_Id',
ITEM_COL='item2_Id',
RATING_COL='score',
DATA_SPLIT_METHOD='no_split'
)
AS
SELECT
item1_Id,
item2_Id,
cooc * pmi AS score
FROM @DATASET_NAME.item_cooc;
END