对不平衡的数据进行平衡

当数据中类的分布不均匀时,就会出现不平衡的数据。如果在不平衡的数据集上构建预测模型,则会导致模型看起来可产生高准确度,但不能很好地推广到少数类中的新数据。为了防止创建具有错误准确度的模型,您应该在创建预测模型之前对不平衡的数据进行重新平衡。

开始示例之前,请加载机器学习示例数据

您会在金融交易数据中看到很多不平衡的数据,其中大多数交易不是欺诈性的,少数交易是欺诈性的,如下例所示。

  1. 查看类的分布。

    => SELECT fraud, COUNT(fraud) FROM transaction_data GROUP BY fraud;
     fraud | COUNT
    -------+-------
     TRUE  |    19
     FALSE |   981
    (2 rows)
    
  2. 使用 BALANCE 函数创建更平衡的数据集。

    => SELECT BALANCE('balance_fin_data', 'transaction_data', 'fraud', 'under_sampling'
                      USING PARAMETERS sampling_ratio = 0.2);
             BALANCE
    --------------------------
     Finished in 1 iteration
    
    (1 row)
    
  3. 查看分类器的新分布。

    => SELECT fraud, COUNT(fraud) FROM balance_fin_data GROUP BY fraud;
     fraud | COUNT
    -------+-------
     t     |    19
     f     |   236
    (2 rows)
    

另请参阅