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(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`。

模型中输入的列名称和数据类型必须与表中的列名称和数据类型匹配。输入必须有一列与训练期间提供的标签列名称匹配。此值通过 input_label_cols 选项提供。如果未指定 input_label_cols,则使用训练数据中名为“标签”的列。

query_statement

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

query_statement 引用的所有列都用作模型的输入。

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`)
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面