【问题标题】:How to improve accuracy of random forest multiclass classification model?如何提高随机森林多类分类模型的准确率?
【发布时间】:2019-05-07 04:05:29
【问题描述】:

我正在研究多类别分类,以便根据客户的购买行为和人口统计数据将客户分为 3 个不同的类别。我无法完全披露数据集,但总的来说它包含大约 300 个特征和 50000 行。我尝试了以下方法,但无法达到 50% 以上的准确率:

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 不同的机器学习算法需要不同的数据预处理。随机森林非常简单,不需要对特征进行缩放或归一化。你玩过n_estimatorsmax_featuresmin_samples_leaf吗?
  • 是的,我在调整超参数时做过。我还做了一个 GridSearchCV 来确定最佳参数。
  • 我不得不承认我更喜欢用困难的方式进行网格搜索(丑陋的 for 循环)并保存我获得的分数。通过这种方式,我可以轻松检查我是否真正收敛到全局最小值,或者是否需要扩展搜索范围。您应该考虑的另一个想法是对您的数据执行 PCA。随机森林不喜欢特征之间的相关性,因为单个树不独立于另一个
  • 我也尝试过丑陋的 for 循环。手动检查每个超参数。我会尝试做 PCA 并检查是否有变化。
  • 希望解决方案有所帮助

标签: python machine-learning random-forest


【解决方案1】:

您的培训情况如何?我假设您的 acc 是您的验证。如果您的训练速度过高,则可能是正常的过度拟合。随机森林通常可以很好地处理过度拟合。

您可以尝试对数据进行 PCA,然后尝试对其进行分类。这为您提供了解释数据中大部分变化的特征,因此如果您无法对原始数据进行分类(并且它也会减少您的特征),那么尝试一下是个好主意。

附注:请记住,SVM 的拟合在点数上是二次的,因此将您的数据减少到 10-20000 左右以调整参数,然后在完整数据集上拟合 SVM,并为子集提供最佳参数,也可能加快进程。 还记得考虑为 SVM 尝试不同的内核。

【讨论】:

  • 我的模型没有过拟合。在所有情况下,我的训练准确率约为 60-70%
  • 但您应该明确使用 PCA。如果特征相互关联,300 个特征对于 RF 来说可能太多了。
  • 我同意尝试 PCA 看看是否有帮助
【解决方案2】:

尝试先使用 PCA 或随机森林进行特征选择,然后拟合链式分类器,其中首先进行 oneversesall,然后是随机森林或决策树。你应该得到一个稍微好一点的准确度。

【讨论】:

    【解决方案3】:

    尝试调整以下参数

    n_estimators

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

    最大特征

    这些是随机森林允许在单个树中尝试的最大特征数。 Python 中有多个选项可用于分配最大功能。其中很少有:

    • 自动/无:这将简单地采用所有有意义的功能
      在每一棵树中。这里我们根本不对 一棵树。

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

      0.2 :此选项允许随机森林在单个运行中采用 20% 的变量。我们可以用“0.x”格式赋值和赋值 想要考虑 x% 的特征。

    min_sample_leaf

    叶子是决策树的结束节点。较小的叶子使模型更容易捕获训练数据中的噪声。您可以从一些最小值(例如 75)开始,然后逐渐增加它。看看你的准确率是什么值。

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 2015-10-26
      • 2019-08-21
      • 2014-05-28
      • 2021-07-25
      • 2022-07-29
      • 2018-07-10
      • 2019-11-09
      • 2017-03-15
      相关资源
      最近更新 更多