这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

模型评估

一组 Vertica 机器学习函数评估训练模型生成的预测数据,或返回有关模型本身的信息。

1 - CONFUSION_MATRIX

使用响应变量的观察值和预测值计算表的混淆矩阵。 CONFUSION_MATRIX 生成具有以下尺寸的表格:

  • 行:类的数量

  • 列:类的数量 + 2

语法

CONFUSION_MATRIX ( targets, predictions [ USING PARAMETERS num_classes = num‑classes ] OVER()

参数

实参 targetspredictions 必须设置为数据类型相同的输入列,即以下之一:INTEGER、BOOLEAN 或 CHAR/VARCHAR。根据数据类型,这些列将按如所示标识类:

  • INTEGER:从零开始的连续整数(介于 0 和 (num-classes-1) 之间),其中 num-classes 为类数。例如,给定以下输入列值 — {0, 1, 2, 3, 4} — Vertica 假定有五个类。

  • BOOLEAN:“是”或“否”

  • CHAR/VARCHAR:类名。如果输入列的类型为 CHAR/VARCHAR 列,则还必须将参数 num_classes 设置为类数。

参数

num_classes

一个整数 > 1,指定要传递给该函数的类数。

如果指定的输入列为 CHAR/VARCHAR 类型,则必须设置此参数。否则,该函数将根据列数据类型处理此参数:

  • INTEGER:默认设置为 2,如果类数为任何其他值,则必须正确设置此参数。

  • BOOLEAN:默认设置为 2,不能设置为任何其他值。

示例

此示例计算逻辑回归模型的混淆矩阵,该模型将 mtcars 数据集中的汽车分为自动档或手动档。观察值在输入列 obs 中,而预测值在输入列 pred 中。因为这是一个二元分类问题,所以所有值都是 0 或 1。

在返回的表中,列 am 中值为 0 的所有 19 辆汽车都被 PREDICT_LOGISTIC_REGRESSION 正确预测其值为 0。在 am 列中值为 1 的 13 辆汽车中,12 辆被正确预测其值为 1,而 1 辆汽车被错误地分类为值 0:

=> SELECT CONFUSION_MATRIX(obs::int, pred::int USING PARAMETERS num_classes=2) OVER()
    FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG(mpg, cyl, disp,drat, wt, qsec, vs, gear, carb
             USING PARAMETERS model_name='myLogisticRegModel')AS PRED
             FROM mtcars) AS prediction_output;

actual_class | predicted_0 | predicted_1 |        comment
-------------+-------------+-------------+------------------------------------------
0            |          19 |           0 |
1            |           0 |          13 | Of 32 rows, 32 were used and 0 were ignored
(2 rows)

2 - CROSS_VALIDATE

使用输入关系对学习算法执行 k-fold 交叉验证,并对超参数执行网格搜索。输出是所选算法的平均性能指标。该函数支持 SVM 分类、朴素贝叶斯和逻辑回归。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CROSS_VALIDATE ( 'algorithm', 'input‑relation', 'response‑column', 'predictor‑columns'
        [ USING PARAMETERS
              [exclude_columns = 'excluded‑columns']
           [, cv_model_name = 'model']
           [, cv_metrics = 'metrics']
           [, cv_fold_count = num‑folds]
           [, cv_hyperparams = 'hyperparams']
           [, cv_prediction_cutoff = prediction‑cutoff] ] )

参数

算法
算法训练函数的名称,为以下之一:
input‑relation
包含用于训练和测试的数据的表或视图。 如果输入关系在 Hive 中定义,请使用 SYNC_WITH_HCATALOG_SCHEMA 以同步 hcatalog 架构,然后运行机器学习功能。
response‑column
包含响应的输入列的名称。
predictor‑columns

输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns 的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
cv_model_name
允许您检索交叉验证过程结果的模型的名称。如果忽略此参数,则显示结果但不保存。如果将此参数设置为模型名称,则可以使用摘要函数 GET_MODEL_ATTRIBUTEGET_MODEL_SUMMARY 检索结果
cv_metrics
用于评估算法的指标,指定为指标名称的逗号分隔列表或 JSON 数组。在这两种情况下,您都需要指定以下一个或多个指标名称:
  • accuracy (默认值)

  • error_rate

  • TP:真阳性,预测为 1 类的 1 类案例数

  • FP:假阳性,预测为 1 类的 0 类案例数

  • TN:真阴性,预测为 0 类的 0 类案例数

  • FN:假阴性,预测 0 类的 1 类案例数

  • TPRrecall:真阳性率,1 类中的正确预测

  • FPR:假阳性率,0 类中的错误预测

  • TNR:真阴性率,0 类中的正确预测

  • FNR:假阴性率,1 类中的错误预测

  • PPVprecision:阳性预测值,预测为 1 类案例中的正确预测

  • NPV:阴性预测值,预测为 0 类案例中的正确预测

  • MSE:均方误差

     ![](/images/machine-learning/mean-squared-error.png)
    
  • MAE:平均绝对误差

     ![](/images/machine-learning/mean-absolute-error.png)
    
  • rsquared:决定系数

     ![](/images/machine-learning/rsquared.png)
    
  • explained_variance

    ![](/images/machine-learning/explained-variance.png)
    
  • fscore

    (1 + beta˄2) * precison * recall / (beta˄2 * precision + recall)
    

    beta 默认等于 1

  • auc_roc:使用指定数量 bin 的 ROC 的 AUC,默认为 100

  • auc_prc:使用指定数量 bin 的 PRC 的 AUC,默认为 100

  • counts:解析为其他四个指标的快捷方式:TPFPTNFN

  • count:仅在 JSON 语法中有效,计算由一个类 (case-class-label) 标记但预测为另一类 (predicted-class-label) 的案例数:

    cv_metrics='[{"count":[case-class-label, predicted-class-label]}]'
    
cv_fold_count
拆分数据的折叠数。

默认值: 5

cv_hyperparams
JSON 字符串,描述用于超参数网格搜索的参数组合。JSON 字符串包含成对的超参数名称。每个超参数的值可以指定为数组或序列。例如:
{"param1":[value1,value2,...], "param2":{"first":first_value, "step":step_size, "count":number_of_values} }

应使用 JSON 标准引用超参数名称和字符串值。这些参数被传递给训练函数。

cv_prediction_cutoff
传递给逻辑回归预测阶段的临界阈值,介于 0 和 1(不含)之间的 FLOAT

默认值: 0.5

模型属性

call_string
在调用 CROSS_VALIDATE 时指定的所有输入实参的值。
run_average
参数 cv_metrics 中指定的所有指标的所有折叠的平均值(如果指定);否则为平均精度。
fold_info
每个折叠的行数:
  • fold_id:折叠的索引。

  • row_count:折叠中为测试而保留的行数。

counters
该函数的所有计数器,包括:
  • accepted_row_countinput_relation 中的总行数减去拒绝的行数。

  • rejected_row_count:因包含无效值而跳过的 input_relation 行数。

  • feature_count:输入到机器学习模型的特征数量。

run_details
有关每次运行的信息,其中运行意味着训练一个模型,然后在一个保留的折叠上测试该模型:
  • fold_id:保留用于测试的折叠的索引。

  • iteration_count:在非保留折叠的模型训练中使用的迭代数。

  • accuracy:参数 cv_metrics 中指定的所有指标,或精度(如果未提供 cv_metrics)。

  • error_rate:参数 cv_metrics 中指定的所有指标,或精度(如果忽略该参数)。

特权

非超级用户:

  • 对输入关系的 SELECT 权限

  • 机器学习算法在其中生成模型的默认架构的 CREATE 和 USAGE 权限。如果提供了 cv_model_name,则交叉验证结果将作为模型保存在同一架构中。

在 JSON 中指定指标

参数 cv_metrics 可以将指标指定为 JSON 对象 的数组,其中每个对象指定一个指标名称。例如,以下表达式将 cv_metrics 设置为指定为 JSON 对象的两个指标,即 accuracyerror_rate

cv_metrics='["accuracy", "error_rate"]'

在下一个示例中,cv_metrics 设置为两个指标,即 accuracyTPR(真阳性率)。此处,TPR 指标被指定为一个 JSON 对象,它接受一个包含两个类标签实参(即 2 和 3)的数组:

cv_metrics='[ "accuracy", {"TPR":[2,3] } ]'

指定为 JSON 对象的指标可以接受参数。在以下示例中,fscore 指标指定参数 beta,该参数设置为 0.5:

cv_metrics='[ {"fscore":{"beta":0.5} } ]'

参数支持对于某些指标特别有用。例如,指标 auc_rocauc_prc 构建一条曲线,然后计算该曲线下的面积。对于 ROC,曲线是通过绘制指标 TPRFPR 而成的;对于 PRC,通过绘制指标 PPV (precision) 与 TPR (recall) 而成。通过将参数 num_bins 设置为大于默认值 100 的值,可以提高此类曲线的精度。例如,以下表达式计算使用 1000 个 bin 构建的 ROC 曲线的 AUC:

cv_metrics='[{"auc_roc":{"num_bins":1000}}]'

将指标用于多类分类器函数

所有支持的指标均为二元分类器函数 LOGISTIC_REGSVM_CLASSIFIER 而定义。对于 NAIVE_BAYES 等多类分类器函数,可以针对每个 one-versus-the-rest 二元分类器计算这些指标。使用实参请求每个分类器的指标。例如,如果训练数据具有整数类标签,您可以使用 precision (PPV) 指标设置 cv_metrics,如下所示:

cv_metrics='[{"precision":[0,4]}]'

此设置指定返回为两个分类器计算精度的两列:

  • 第 1 列:对 0 与非 0 进行分类

  • 第 2 列:对 4 与非 4 进行分类

如果忽略类标签实参,则使用索引为 1 的类。不是为单个 one-versus-the-rest 分类器计算指标,而是以下列方式之一计算平均值:macromicroweighted(默认)。例如,以下 cv_metrics 设置返回按类大小加权的平均值:

cv_metrics='[{"precision":{"avg":"weighted"}}]'

可以采用类似方式为多类分类器定义 AUC 类型的指标。例如,以下 cv_metrics 设置计算每个 one-versus-the-rest 分类器的 ROC 曲线下面积,然后返回按类大小加权的平均值。

cv_metrics='[{"auc_roc":{"avg":"weighted", "num_bins":1000}}]'

示例

=> SELECT CROSS_VALIDATE('svm_classifier', 'mtcars', 'am', 'mpg'
      USING PARAMETERS cv_fold_count= 6,
                       cv_hyperparams='{"C":[1,5]}',
                       cv_model_name='cv_svm',
                       cv_metrics='accuracy, error_rate');
         CROSS_VALIDATE
----------------------------
 Finished

===========
run_average
===========
C  |accuracy      |error_rate
---+--------------+----------
1 | 0.75556       |  0.24444
5 | 0.78333       |  0.21667
(1 row)

3 - ERROR_RATE

使用输入表返回一个计算错误分类率并将其显示为 FLOAT 值的表。 ERROR_RATE 返回具有以下维度的表:

  • 行:类数加上包含跨类总错误率的一行

  • 列:2

语法

ERROR_RATE ( targets, predictions [ USING PARAMETERS num_classes = num‑classes ] ) OVER()

参数

实参 targetspredictions 必须设置为数据类型相同的输入列,即以下之一:INTEGER、BOOLEAN 或 CHAR/VARCHAR。根据数据类型,这些列将按如所示标识类:

  • INTEGER:从零开始的连续整数(介于 0 和 (num-classes-1) 之间),其中 num-classes 为类数。例如,给定以下输入列值 — {0, 1, 2, 3, 4} — Vertica 假定有五个类。

  • BOOLEAN:“是”或“否”

  • CHAR/VARCHAR:类名。如果输入列的类型为 CHAR/VARCHAR 列,则还必须将参数 num_classes 设置为类数。

参数

num_classes

一个整数 > 1,指定要传递给该函数的类数。

如果指定的输入列为 CHAR/VARCHAR 类型,则必须设置此参数。否则,该函数将根据列数据类型处理此参数:

  • INTEGER:默认设置为 2,如果类数为任何其他值,则必须正确设置此参数。

  • BOOLEAN:默认设置为 2,不能设置为任何其他值。

特权

非超级用户:模型所有者或模型的使用权限

示例

此示例说明如何对名为 mtcars 的输入表执行 ERROR_RATE 函数。obs 列中显示响应变量,而 pred 列中显示预测值。由于该示例是一个分类问题,因此所有的响应变量值和预测变量值都是 0 或 1,表示二元分类。

在函数返回的表中,第一列显示类 ID 列。第二列显示该类 ID 的相应错误率。第三列表示该函数成功使用了多少行以及是否忽略了任何行。

=> SELECT ERROR_RATE(obs::int, pred::int USING PARAMETERS num_classes=2) OVER()
    FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
                USING PARAMETERS model_name='myLogisticRegModel', type='response') AS pred
             FROM mtcars) AS prediction_output;
 class |     error_rate     |                   comment
-------+--------------------+---------------------------------------------
     0 |                  0 |
     1 | 0.0769230797886848 |
       |            0.03125 | Of 32 rows, 32 were used and 0 were ignored
(3 rows)

4 - LIFT_TABLE

返回一个对比机器学习模型的可预测质量的表。此函数也被称为提升图

语法

LIFT_TABLE ( targets, probabilities
        [ USING PARAMETERS [num_bins = num‑bins] [, main_class = class‑name ] ] )
OVER()

参数

参数

num_bins

该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。

默认值:100

main_class

仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。

示例

对输入表 mtcars 执行 LIFT_TABLE

=> SELECT LIFT_TABLE(obs::int, prob::float USING PARAMETERS num_bins=2) OVER()
    FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG(mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
                                                    USING PARAMETERS model_name='myLogisticRegModel',
                                                    type='probability') AS prob
             FROM mtcars) AS prediction_output;
 decision_boundary | positive_prediction_ratio |       lift       |                   comment
-------------------+---------------------------+------------------+---------------------------------------------
                 1 |                         0 |              NaN |
               0.5 |                   0.40625 | 2.46153846153846 |
                 0 |                         1 |                1 | Of 32 rows, 32 were used and 0 were ignored
(3 rows)

第一列 decision_boundary 指示将响应值分类为 0 还是 1 的分界点。例如,对于每行,如果 prob 大于或等于 decision_boundary,将响应值分类为 1。如果 prob 小于 decision_boundary,将响应值分类为 0。

第二列中,positive_prediction_ratio 表示分类 1 中使用相应 decision_boundary 值进行争取分类的样本比例。

第三列中,lift 函数用正确或错误分类为类 1 的行百分比来除 positive_prediction_ratio

5 - MSE

返回一个表,其中显示机器学习模型中预测和响应列的均方误差。

语法

MSE ( targets, predictions ) OVER()

参数

targets
FLOAT 类型的模型响应变量。
predictions
包含响应变量预测值的 FLOAT 输入列。

示例

对输入表 faithful_testing 执行 MSE 函数。obs 列中显示响应变量,而 prediction 列中显示预测值。

=> SELECT MSE(obs, prediction) OVER()
   FROM (SELECT eruptions AS obs,
                PREDICT_LINEAR_REG (waiting USING PARAMETERS model_name='myLinearRegModel') AS prediction
         FROM faithful_testing) AS prediction_output;
        mse        |                   Comments
-------------------+-----------------------------------------------
 0.252925741352641 | Of 110 rows, 110 were used and 0 were ignored
(1 row)

6 - PRC

返回一个表,其中显示了接收器 Precision Recall (PR) 曲线上的点。

语法

PRC ( targets, probabilities
       [ USING PARAMETERS
             [num_bins = num‑bins]
             [, f1_score = return‑score ]
             [, main_class = class‑name ] )
OVER()

参数

参数

num_bins

该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。

默认值:100

f1_score
一个布尔值,指定是否返回包含 f1 分数的列 - 精度和召回度量的调和平均值,其中 F1 分数在 1 处达到其最佳值(完美的精度和召回率),在 0 处达到最差值。

默认值:false

main_class

仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。

示例

对名为 mtcars 的输入表执行 PRC 函数。obs 列中显示响应变量,而 pred 列中显示预测变量。

=> SELECT PRC(obs::int, prob::float USING PARAMETERS num_bins=2, f1_score=true) OVER()
    FROM (SELECT am AS obs,
                    PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
                          USING PARAMETERS model_name='myLogisticRegModel',
                                           type='probability') AS prob
             FROM mtcars) AS prediction_output;
decision_boundary | recall | precision |     f1_score      |     comment
------------------+--------+-----------+-------------------+--------------------------------------------
0                 |      1 |   0.40625 | 0.577777777777778 |
0.5               |      1 |         1 |                 1 | Of 32 rows, 32 were used and 0 were ignored
(2 rows)

第一列 decision_boundary 指示将响应值分类为 0 还是 1 的分界点。例如,在每行中,如果概率等于或大于 decision_boundary,则将响应分类为 1。如果概率小于 decision_boundary,则将响应分类为 0。

7 - READ_TREE

读取随机森林或 XGBoost 模型中树的内容。

语法

READ_TREE ( USING PARAMETERS model_name = 'model‑name' [, tree_id = tree‑id] [, format = 'format'] )

参数

model_name
标识作为训练结果存储的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
tree_id
树标识符,0 到 n-1 之间的整数,其中 n 为随机森林或 XGBoost 模型中的树数。如果忽略此参数,则返回所有树。
format
返回树的输出格式,为以下之一:
  • tabular:返回包含 12 个输出列的表。

  • graphviz:返回可以传递给 graphviz 工具并呈现树的图形可视化的 DOT 语言源。

特权

非超级用户:模型上的 USAGE 权限

示例

从 READ_TREE 获取随机森林模型的表格格式输出:

=> SELECT READ_TREE ( USING PARAMETERS model_name='myRFModel', tree_id=1 ,
format= 'tabular') LIMIT 2;
-[ RECORD 1 ]-------------+-------------------
tree_id                   | 1
node_id                   | 1
node_depth                | 0
is_leaf                   | f
is_categorical_split      | f
split_predictor           | petal_length
split_value               | 1.921875
weighted_information_gain | 0.111242236024845
left_child_id             | 2
right_child_id            | 3
prediction                |
probability/variance      |

-[ RECORD 2 ]-------------+-------------------
tree_id                   | 1
node_id                   | 2
node_depth                | 1
is_leaf                   | t
is_categorical_split      |
split_predictor           |
split_value               |
weighted_information_gain |
left_child_id             |
right_child_id            |
prediction                | setosa
probability/variance      | 1

从 READ_TREE 获取 graphviz 格式的输出:

=> SELECT READ_TREE ( USING PARAMETERS model_name='myRFModel', tree_id=1 ,
format= 'graphviz')LIMIT 1;

-[ RECORD 1 ]+-------------------------------------------------------------------
---------------------------------------------------------------------------------
tree_id      | 1
tree_digraph | digraph Tree{
1 [label="petal_length < 1.921875 ?", color="blue"];
1 -> 2 [label="yes", color="black"];
1 -> 3 [label="no", color="black"];
2 [label="prediction: setosa, probability: 1", color="red"];
3 [label="petal_length < 4.871875 ?", color="blue"];
3 -> 6 [label="yes", color="black"];
3 -> 7 [label="no", color="black"];
6 [label="prediction: versicolor, probability: 1", color="red"];
7 [label="prediction: virginica, probability: 1", color="red"];
}

此输入呈现如下:

另请参阅

8 - RF_PREDICTOR_IMPORTANCE

使用平均减少杂质 (MDI) 方法衡量随机森林模型中预测工具的重要性。重要性向量被规范化为总和为 1。

语法

RF_PREDICTOR_IMPORTANCE ( USING PARAMETERS model_name = 'model‑name' [, tree_id = tree‑id] )

参数

model_name
标识作为训练结果存储的模型,其中 model‑name 必须为 rf_classifierrf_regressor 类型。
tree_id
标识要处理的树,0 到 n-1 之间的整数,其中 n 为森林中树的数量。如果忽略此参数,该函数将使用所有树来测量重要性值。

特权

非超级用户:模型上的 USAGE 权限

示例

此示例说明如何使用 RF_PREDICTOR_IMPORTANCE 函数。

=> SELECT RF_PREDICTOR_IMPORTANCE ( USING PARAMETERS model_name = 'myRFModel');
 predictor_index | predictor_name | importance_value
-----------------+----------------+--------------------
               0 | sepal.length   | 0.106763318092655
               1 | sepal.width    | 0.0279536658041994
               2 | petal.length   | 0.499198722346586
               3 | petal.width    | 0.366084293756561
(4 rows)

另请参阅

9 - ROC

返回表,其中显示了操作特征曲线的接收器上的点。在提高模型的鉴别阈值时,ROC 函数会告知分类模型的精度。

语法

ROC ( targets, probabilities
        [ USING PARAMETERS
              [num_bins = num‑bins]
              [, AUC = output]
              [, main_class = class‑name ] ) ] )
OVER()

参数

参数

num_bins

该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。

默认值:100

更大的值会产生更精确的 AUC 近似值。

AUC
一个布尔值,指定是否输出曲线下面积 (AUC) 值。

默认值: True

main_class

仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。

示例

对输入表 mtcars 执行 ROC。观察到的类标签在 obs 列中,预测类标签在 prob 列中:

=> SELECT ROC(obs::int, prob::float USING PARAMETERS num_bins=5, AUC = True) OVER()
    FROM (SELECT am AS obs,
          PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
               USING PARAMETERS
                  model_name='myLogisticRegModel', type='probability') AS prob
   FROM mtcars) AS prediction_output;
 decision_boundary | false_positive_rate | true_positive_rate | AUC |comment
-------------------+---------------------+--------------------+-----+-----------------------------------
0                  |                   1 |                  1 |     |
0.5                |                   0 |                  1 |     |
1                  |                   0 |                  0 |   1 | Of 32 rows,32 were used and 0 were ignoreded
(3 rows)

该函数会返回包含以下结果的表:

  • decision_boundary 指示是否将响应分类为 0 或 1 的分界点。在每行中,如果 prob 等于或大于 decision_boundary,则将响应分类为 1。如果 prob 小于 decision_boundary,将响应值分类为 0。

  • false_positive_rate 显示了相应 decision_boundary 中的误报(当 0 被分类为 1 时)百分比。

  • true_positive_rate 显示了分类为 1 并且还属于类 1 的行的百分比。

10 - RSQUARED

返回一个表,其中包含回归模型中预测的 R 平方值。

语法

RSQUARED ( targets, predictions ) OVER()

参数

targets
模型的 FLOAT 响应变量。
predictions
一个 FLOAT 输入列,其中包含响应变量的预测值。

示例

此示例演示了如何对名为 faithful_testing 的输入表执行 RSQUARED 函数。obs 列中显示响应变量的观测值,而 pred 列中显示响应变量的预测值。

=> SELECT RSQUARED(obs, prediction) OVER()
     FROM (SELECT eruptions AS obs,
                  PREDICT_LINEAR_REG (waiting
                                       USING PARAMETERS model_name='myLinearRegModel') AS prediction
           FROM faithful_testing) AS prediction_output;
        rsq        |                    comment
-------------------+-----------------------------------------------
 0.801392981147911 | Of 110 rows, 110 were used and 0 were ignored
(1 row)