对不平衡数据进行随机森林回归

标签 r regression sampling random-forest cross-validation

我正在使用随机森林的 r 包根据氨基酸序列预测蛋白质对之间的距离,主要兴趣是接近的蛋白质(距离较小)。我的训练数据集由 10k 对蛋白质和它们之间的实际距离组成。然而,很少有一对蛋白质(小于 0.2%)之间的距离很小,问题是经过训练的随机森林在预测距离较大的蛋白质之间的距离时变得非常准确,而对于距离较小的蛋白质来说则非常糟糕。他们。我尝试对训练数据中距离较远的蛋白质进行下采样,但结果仍然不好。我对接近的蛋白质更感兴趣(那些彼此之间距离很小的蛋白质对)。 由于我的训练准确度为 78,测试准确度为 51%,因此存在非常明显的过度拟合信号 任何建议都将受到高度赞赏

最佳答案

一些建议:

1) 查看 gbm 包中的 GBM。

2) 创建更多功能来帮助 RF 了解驱动距离的因素。

3) 绘制误差与单个变量的关系图,以找出驱动关系的因素。 (ggplot2 对此非常有用,尤其是使用 colorsize 选项。)

4) 您还可以根据距离将 1 或 0 分配给 y 变量(即,如果距离 < x;设置为 1/如果距离 >= x;设置为 0)。一旦有了两个类,您就可以使用 RF 中的 strata 参数来创建均匀平衡的样本,并使用 RF 的 important() 和 varImpPlot() 函数查看哪些变量导致距离差异。

5) 尝试使用与距离相关的变量的对数。 RF 通常可以很好地补偿非线性,但尝试一下也没什么坏处。

我的猜测是,#2 是你想要花时间的地方,尽管它也是最难、需要最多思考的地方。

关于对不平衡数据进行随机森林回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548731/

相关文章:

python - 将 2 列的值连接成 1(相当于 R 的粘贴)

machine-learning - 过度拟合总是一件坏事吗?

c++ - 如何从 vector 中提取n个样本?

android - 需要有关声音处理的帮助

r - Kolmogorov-Smirnov 测试 : exact p-values for a two-sample test applied to a discrete variable when ties exist

r - 在 CentOS 的 fftwtools 上安装 R 包需要 fftw3

python - 回归精度

r - 如何确定一个点是高于还是低于 R 中连接点的线?

algorithm - 从给定区域采样

r - 如何在 r 中的字符向量上对步骤 2 的滑动窗口进行排序