我有一个大的数据集(> 300,000个观测值),代表蛋白质之间的距离(RMSD)。我正在构建一个回归模型(随机森林),用于预测任何两种蛋白质之间的距离。
我的问题是我对近距离匹配(短距离)更感兴趣,但是我的数据分布高度偏向,因此大多数距离都很大。我真的不关心模型能够预测远距离有多好,所以我想确保模型能够准确地预测近距离模型的距离。然而,当我在完整数据上训练模型时,模型的性能并不好,所以我想知道我能做的最佳采样方式是什么,这样我可以保证模型能够准确地预测近距离匹配距离尽可能地同时对数据进行分层,因为不幸的是,这种有偏见的数据分布代表了我将验证并测试模型的真实世界数据分布。
以下是我的数据分布,其中第一列表示距离,第二列表示此距离范围内的观测数量:
Distance Observations
0 330
1 1903
2 12210
3 35486
4 54640
5 62193
6 60728
7 47874
8 33666
9 21640
10 12535
11 6592
12 3159
13 1157
14 349
15 86
16 12
答案 0 :(得分:1)
我在这里尝试的第一件事是构建距离的 log 的回归模型,因为这将集中更大距离的范围。如果您使用广义线性模型,则这是日志链接功能;对于其他方法,您可以通过估算输入的回归函数x来手动执行此操作,并对结果进行取幂:
y = exp(f(x))
请记住使用距离的 log 进行训练。
答案 1 :(得分:0)
处理回归中的不平衡分布的流行技术包括:
PS:您显示的表似乎有一个分类问题,而不是回归问题。
答案 2 :(得分:0)
如前所述,考虑到您的问题,我认为对综合少数族群回归抽样技术(SMOTER)可能会有帮助。
如果您是Python用户,那么我目前正在努力改进SMOGN算法(SMOTER的变体)的实现。 https://github.com/nickkunz/smogn
此外,在Kaggle上有一些应用SMOGN改进其预测结果的示例。 https://www.kaggle.com/aleksandradeis/regression-addressing-extreme-rare-cases