【问题标题】:Imbalanced training dataset and regression model不平衡的训练数据集和回归模型
【发布时间】:2014-05-07 21:15:11
【问题描述】:

我有一个表示蛋白质之间距离 (RMSD) 的大型数据集(>300,000 次观察)。我正在构建一个回归模型(随机森林),它应该可以预测任何两种蛋白质之间的距离。

我的问题是我对近距离比赛(短距离)更感兴趣,但是我的数据分布存在很大偏差,因此大多数距离都很大。我并不关心模型能够预测远距离的效果有多好,所以我想确保模型能够准确地预测近距离模型的距离。但是,当我在完整数据上训练模型时,模型的性能并不好,所以我想知道我能做的最好的采样方式是什么,这样我可以保证模型能够准确地预测近距离匹配距离尽可能地同时对数据进行如此多的分层,因为不幸的是,这种有偏差的数据分布代表了我将要验证和测试模型的真实世界数据分布。

以下是我的数据分布,第一列代表距离,第二列代表这个距离范围内的观察次数:

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

【问题讨论】:

  • 这听起来更像是一个统计问题,而不是编程问题。我建议在Cross Validated 询问。

标签: r machine-learning regression random-forest


【解决方案1】:

我在这里尝试的第一件事是建立距离的log 回归模型,因为这将集中较大距离的范围。如果您使用的是广义线性模型,这是对数链接函数;对于其他方法,您可以通过估计输入 x 的回归函数并对结果求幂来手动执行此操作:

y = exp(f(x))

记得使用距离的 log 进行一对一训练。

【讨论】:

    【解决方案2】:

    在回归中处理不平衡分布的流行技术包括:

    • 随机过采样/欠采样。
    • 用于回归的合成少数过采样技术 (SMOTER)。其中有一个 R package 来实现。
    • 我们瞄准R基于高度的C组合S策略 (WERCS)。其中有一个GitHub repository 的 R 代码来实现它。

    PS:您显示的表格似乎有分类问题,而不是回归问题。

    【讨论】:

      【解决方案3】:

      如前所述,我认为针对您的问题可能对您有所帮助的是 Synthetic Minority Over-Sampling Technique for Regression (SMOTER)。

      如果您是 Python 用户,我目前正在努力改进 SMOGN 算法(SMOTER 的一种变体)的实现。 https://github.com/nickkunz/smogn

      此外,Kaggle 上有一些应用 SMOGN 来改进预测结果的示例。 https://www.kaggle.com/aleksandradeis/regression-addressing-extreme-rare-cases

      【讨论】:

        猜你喜欢
        • 2018-07-26
        • 1970-01-01
        • 2015-03-16
        • 2017-05-07
        • 2013-06-11
        • 1970-01-01
        • 2020-05-02
        • 2019-12-05
        • 2016-04-21
        相关资源
        最近更新 更多