如何提高随机森林多类分类模型的准确性?

时间:2018-12-05 14:43:07

标签: python machine-learning random-forest

我正在研究一个多类别的分类,以便根据客户的购买行为和人口统计将其分为3个不同的类别。我无法完全披露数据集,但通常它包含大约300个要素和50000行。我尝试了以下方法,但我无法达到50%以上的精度:

  1. 调整超参数(我在执行GridSearchCV之后使用调整的超参数)
  2. 规范化数据集,然后运行我的模型
  3. 尝试了不同的分类方法:OneVsRestClassifier,RandomForestClassification,SVM,KNN和LDA
  4. 我还删除了不相关的功能并尝试运行我的模型
  5. 我的班级不平衡,所以我也尝试过使用class_weight = balanced,使用SMOTE进行过采样,下采样和重采样。

还有什么我可以尝试提高准确性的(准确度是指f分数,准确性和召回率)。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您的培训资格如何?我认为您的认证就是您的验证。如果您的培训水平很高,则可能是正常的过度拟合。随机森林通常会很好地解决过度拟合问题。

您可以尝试的是对数据进行PCA,然后尝试对其进行分类。如果您无法对原始数据进行分类(这也会减少您的特征),那么这将为您提供可以解释数据中大多数变化的特征,因此可以尝试尝试。

一个旁注:请记住,SVM的拟合在点数上是二次的,因此将您的数据减少到大约10-20000以调整参数,然后将SVM拟合到具有最佳数据集的完整数据集上,也可能会加快此过程。 还请记住考虑为SVM尝试不同的内核。

答案 1 :(得分:1)

尝试首先使用PCA或随机森林进行特征选择,然后拟合链式分类器,其中首先进行oneversesall,然后进行随机森林或决策树。您应该会获得更好的准确性。

答案 2 :(得分:0)

尝试调整以下参数

n_estimators

这是在进行最大投票或平均预测之前要构建的树数。树的数量越多,性能越好,但是代码却变慢。您应该选择处理器可以处理的尽可能高的价值,因为这会使您的预测更强大,更稳定。由于您的数据量较大,因此每次迭代都将花费更多时间,但是请尝试这样做。

max_features

这些是随机森林允许在单个树中尝试的最大功能数。 Python提供了多个选项来分配最大功能。其中很少有:

  • 自动/无:这将简单地采用所有有意义的功能
    在每棵树上。在这里,我们根本不对树进行任何限制。 一棵树。

    sqrt:此选项将取总数的平方根 独立运行中的功能。例如,如果 变量是100,我们只能将其中的10个 树。“ log2”是max_features的另一种相似类型的选项。

    0.2:此选项允许随机森林在每次运行中获取20%的变量。我们可以以“ 0.x”格式分配和赋值 希望考虑x%的功能。

min_sample_leaf

叶是决策树的末端节点。较小的叶子使模型更易于捕获火车数据中的噪声。您可以从一些最小值开始,例如75,然后逐渐增加它。看看您的精度达到哪个值。