在不平衡数据集上设置pyspark(ml)中的多类随机森林和gbt模型的最佳阈值

在不平衡数据集上设置pyspark(ml)中的多类随机森林和gbt模型的最佳阈值,pyspark,random-forest,decision-tree,apache-spark-ml,adaptive-threshold,Pyspark,Random Forest,Decision Tree,Apache Spark Ml,Adaptive Threshold,目前,已在具有以下分布的不平衡数据集上构建了随机森林分类器(来自Spark ML): +-------+----------------+ | score | n_observations | +-------+----------------+ | 0 | 256741 | | 1 | 13913 | | 2 | 7632 | | 3 | 15877 | | 4 |

目前,已在具有以下分布的不平衡数据集上构建了随机森林分类器(来自Spark ML):

+-------+----------------+
| score | n_observations |
+-------+----------------+
|     0 |         256741 |
|     1 |          13913 |
|     2 |           7632 |
|     3 |          15877 |
|     4 |           3289 |
|     5 |          11515 |
|     6 |           8555 |
|     7 |           2087 |
|     8 |          14226 |
|     9 |           6379 |
+-------+----------------+
作为一个多类问题的结果,我得到以下概率矩阵。概率列给出了一个观测被归类为一类的概率。(这些是来自随机森林模型的标准化原始预测)

实际预测类与大多数类(0和8)高度倾斜。这是由于如下所示,多数概率用于将一个类分配给观测值。应用欠采样和过采样方法不会提高混淆矩阵输出的精度

然而,使用这些预测,AUC曲线似乎很有希望。(平均AUC为0.74)。请参见以下每类一对多AUC曲线图:

我不确定如何从这些概率中检索最佳类。从AUC来看,有多种方法可以获得最佳阈值。一个解决方案是乘以先验概率的倒数,而另一个解决方案是拟合线性回归。另一个解决方案可能是本文中解释的成对分析,但是我不确定如何精确地应用该算法

对于随机森林(或其他树分类器)的预测概率,最容易获得某种类权重的Spark实现是什么

+--------------------+-------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| observation_number | label_score | prob_0  | prob_1  | prob_2  | prob_3  | prob_4  | prob_5  | prob_6  | prob_7  | prob_8  | prob_9  |
+--------------------+-------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|                  0 |           0 |  0,812  |  0,039  |  0,024  |  0,049  |  0,007  |  0,024  |  0,019  |  0,002  |  0,016  |  0,008  |
|                  1 |           7 |  0,419  |  0,050  |  0,032  |  0,092  |  0,018  |  0,083  |  0,080  |  0,013  |  0,132  |  0,082  |
|                  2 |           0 |  0,862  |  0,027  |  0,017  |  0,043  |  0,004  |  0,016  |  0,015  |  0,001  |  0,009  |  0,006  |
|                  3 |           0 |  0,845  |  0,028  |  0,018  |  0,049  |  0,004  |  0,018  |  0,018  |  0,001  |  0,011  |  0,008  |
|                  4 |           6 |  0,445  |  0,051  |  0,034  |  0,095  |  0,017  |  0,080  |  0,079  |  0,012  |  0,115  |  0,073  |
+--------------------+-------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+