BigQuery ML 评估指标 (nDCG = 1)

如何解决BigQuery ML 评估指标 (nDCG = 1)

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

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

此外,我在 google docu 中找不到任何关于如何计算 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`

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?