R 基于不平衡数据的随机森林回归

R 基于不平衡数据的随机森林回归,r,regression,sampling,random-forest,cross-validation,R,Regression,Sampling,Random Forest,Cross Validation,我用随机森林的r软件包根据蛋白质的氨基酸序列来预测蛋白质对之间的距离,主要关注的是接近的蛋白质(距离较小)。我的训练数据集由10k对蛋白质和它们之间的实际距离组成。然而,很少有蛋白质对(小于0.2%)之间的距离很小,问题是经过训练的随机林在预测大距离蛋白质之间的距离时变得非常准确,而对于小距离蛋白质来说则非常糟糕。我试图在我的训练数据中对距离较大的蛋白质进行取样,但结果仍然不好。我更感兴趣的是紧密的蛋白质(它们之间的距离很小的一对)。 有一个非常明显的过度拟合信号,因为我的训练精度为78,测试精

我用随机森林的r软件包根据蛋白质的氨基酸序列来预测蛋白质对之间的距离,主要关注的是接近的蛋白质(距离较小)。我的训练数据集由10k对蛋白质和它们之间的实际距离组成。然而,很少有蛋白质对(小于0.2%)之间的距离很小,问题是经过训练的随机林在预测大距离蛋白质之间的距离时变得非常准确,而对于小距离蛋白质来说则非常糟糕。我试图在我的训练数据中对距离较大的蛋白质进行取样,但结果仍然不好。我更感兴趣的是紧密的蛋白质(它们之间的距离很小的一对)。 有一个非常明显的过度拟合信号,因为我的训练精度为78,测试精度为51% 非常感谢您的任何建议

几点建议:

1) 查看
GBM
软件包中的GBM

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

3) 绘制错误与单个变量的对比图,以查找驱动关系的因素。(ggplot2非常适用于此,尤其是使用
颜色
大小
选项。)

4) 您还可以根据距离为y变量指定1或0(即如果距离=x;设置为0)。有了两个类后,您可以使用RF中的“地层”参数创建均匀平衡的样本,并使用RF的重要性()和VarimPlot()函数查看哪些变量驱动距离差异

5) 尝试使用距离相关变量的日志。射频通常很好地补偿了非线性,但试试也无妨


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

考虑到您的问题,我认为可以帮助您的是回归(SMOTER)的合成少数过度采样技术。关于这个问题有一些研究。然而,正如您可能遇到的那样,它仍然没有像它的分类对应物(SMOTE)那样被探索

根据您对从研究角度理解这篇文章的兴趣程度,我可能会推荐下面引用的文章。我真的很欣赏在生成合成观测时引入高斯噪声

如果您对一个实用的解决方案更感兴趣,第一作者在她的Github页面上提供了一个R实现

如果您更喜欢Python,那么我最近发布了一个SMOGN算法的完全Pythonic实现,该算法现在可用,并且正在进行单元测试


布兰科,p.,托戈,L.,里贝罗,R.(2017)。“SMOGN:非平衡回归的预处理方法”。机器学习研究学报,74:36-50.

你有一个数据不平衡的案例。0.2%是不重要的,因此模型(随机林)会忽略它们。如果您的测试集包含更多小距离的数据,您应该将它们移动到训练集,并使用交叉验证来测试准确性。可能这还不够,所以下一步是对小距离样本进行重采样(搜索“不平衡数据重采样”)