首页 > 解决方案 > BigQuery ML 评估指标 (nDCG = 1)

问题描述

我正在使用 BigQuery ML 来训练矩阵分解模型,以便根据客户的交易历史向他们推荐产品。

我的问题是nDCG (由谷歌计算)是 1,我不知道为什么。这显然是错误的。
我的理论是,以前购买的产品具有最高的预测评级,因此以完美的评级“混乱”预测,从而产生完美的 nDCG。但事实并非如此,通常一个新产品排在第 4 位或第 6 位。

此外,我在谷歌文档中找不到任何关于如何计算 nDCG 的内容来解释这种行为。
我希望有人可以解释这种行为或帮助我解决根本问题。

输入数据

输入数据基于隐式反馈,评级是二进制编码的。

1 -> bought the product previously
0 -> no previous transaction

输入数据仅包含交易历史中存在的cust prod组合。
所以每个输入都有一个等级1。它看起来像这样,有 80,3M 行:

| cust_code |   prod_code | rating |
| --------- | ----------- | ------ |
| CUST0000000001 | PRD0900001 | 1 |
| CUST0000000001 | PRD0900027 | 1 |
| CUST0000000009 | PRD0900008 | 1 |
| CUST0000000009 | PRD0900034 | 1 |

询问

训练模型的查询:

CREATE OR REPLACE MODEL `my_model`
    OPTIONS(MODEL_TYPE = 'MATRIX_FACTORIZATION',
        FEEDBACK_TYPE = 'IMPLICIT',
        USER_COL = "cust_code",
        ITEM_COL = "prod_code",
        RATING_COL = "rating",
        DATA_SPLIT_METHOD = 'AUTO_SPLIT') AS 
    SELECT
      cust_code,
      prod_code,
      rating,
    FROM
      `project_id.dataset.source_table`

标签: google-bigqueryrecommendation-enginematrix-factorization

解决方案


推荐阅读