ML.ROC_CURVE 函数

ML.ROC_CURVE 函数

利用 ML.ROC_CURVE 函数评估逻辑回归的特定指标。ML.ROC_CURVE 仅评估逻辑回归模型。

输出 ML.ROC_CURVE 函数包含多行针对模型不同阈值的指标。指标包括:

  • threshold
  • recall
  • false_positive_rate
  • true_positives
  • false_positives
  • true_negatives
  • false_negatives

ML.ROC_CURVE 限制

ML.ROC_CURVE 函数受到以下限制:

ML.ROC_CURVE 语法

ML.ROC_CURVE(MODEL model_name
            [, {TABLE table_name | (query_statement)}]
            [, GENERATE_ARRAY(thresholds)])

model_name

model_name 为您要评估的模型的名称。如果您未配置默认项目,请按照以下格式将项目 ID 添加到模型名称之前: `[PROJECT_ID].[DATASET].[MODEL]`(包括反引号);例如:`myproject.mydataset.mymodel`。

table_name

(可选)table_name 是包含评估数据的输入表的名称。如果您未配置默认项目,请按以下格式将项目 ID 添加到表名称之前:`[PROJECT_ID].[DATASET].[TABLE]`(包括反引号);例如:`myproject.mydataset.mytable`。

如果指定了 table_name,则模型中输入的列名称必须与表中的列名称匹配,并且根据 BigQuery 隐式强制转换规则,它们的类型应兼容。输入必须有一列与训练期间提供的标签列名称匹配。此值通过 input_label_cols 选项提供。如果未指定 input_label_cols,则使用训练数据中名为“标签”的列。

如果 table_namequery_statement 均未指定,则 ML.ROC_CURVE 会按以下方式计算 ROC 曲线结果:

  • 如果数据在训练期间拆分,则拆分评估数据用于计算 ROC 曲线结果。
  • 如果数据在训练期间未拆分,则整个训练输入用于计算 ROC 曲线结果。

query_statement

(可选)query_statement 子句指定了用于生成评估数据的标准 SQL 查询。请参阅标准 SQL 查询语法页面,了解支持 query_statement 子句的有关 SQL 语法。

如果指定了 query_statement,则查询中输入的列名称必须与模型中的列名称匹配,并且根据 BigQuery 隐式强制转换规则,它们的类型应兼容。输入必须有一列与训练期间提供的标签列名称匹配。此值通过 input_label_cols 选项提供。如果未指定 input_label_cols,则使用训练数据中名为“标签”的列。

如果 table_namequery_statement 均未指定,则 ML.ROC_CURVE 会按以下方式计算 ROC 曲线结果:

  • 如果数据在训练期间拆分,则拆分评估数据用于计算 ROC 曲线结果。
  • 如果数据在训练期间未拆分,则整个训练输入用于计算 ROC 曲线结果。

thresholds

(可选)thresholds 是通过 GENERATE_ARRAY 函数提供的预测输出的百分位值。其所提供的值应为 DOUBLE 类型。

如果您未指定要使用的阈值,则系统会通过 100 个近似分位数,根据预测输出值,自动选择阈值:APPROX_QUANTILES(predicted_label, 100)

ML.ROC_CURVE 示例

以下示例假定您的模型和输入表位于默认项目中。

评估逻辑回归模型的 ROC 曲线

以下查询返回的列为:thresholdrecallfalse_positive_ratetrue_positivesfalse_positivestrue_negativesfalse_negatives。召回率和假正例率可用于绘制 ROC 曲线。返回的阈值是基于预测输出的分位值而选择的。

SELECT
  *
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`)

通过自定义阈值评估 ROC 曲线

以下查询返回的列与上一示例相同。返回的阈值是根据 GENERATE_ARRAY 函数的输出而选择的。

SELECT
  *
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`,
    GENERATE_ARRAY(0.4,0.6,0.01))

评估精确率与召回率曲线

以下查询不是通过获得 ROC 曲线(召回率 VS 假正例率),而是利用由真和假正例总数获得的精确率来计算精确率与召回率曲线。

SELECT
  recall,
  true_positives / (true_positives + false_positives) AS precision
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`)
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
BigQuery ML 文档