如何为不同的目标范围(或模式)生成多目标回归数据集

Posted

技术标签:

【中文标题】如何为不同的目标范围(或模式)生成多目标回归数据集【英文标题】:How to generate a multi target regression dataset for different target ranges (or patterns) 【发布时间】:2021-12-18 02:46:22 【问题描述】:

我们可以使用sklearnmake_regression() 函数生成多目标回归数据集。这里,目标的数量是`2

X, y = make_regression(n_samples=5000, n_features=10, n_informative=7, n_targets=2, random_state=1, noise=5)

现在,我想创建一个多目标数据集,其中target 变量的范围(或模式)将不同。这样不同的机器学习模型就可以很好地拟合和预测不同的目标。

比如说,我在一个数据集中有 2 个目标。目标 1 可能非常适合 LinearLassoRidge 并且可以很好地预测,而目标 2 可以很好地拟合和预测 RFSVRKnn

知道如何制作这种类型的数据集吗?

【问题讨论】:

【参考方案1】:

根据文档(https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_regression.html),该函数通过线性回归模型生成数据。这意味着此函数生成的数据应该很好地拟合线性方法。如果信息特征的数量远小于所有特征的数量,也许 lasso 会更好地工作,因为 lasso 倾向于创建稀疏模型。

要生成不太适合线性模型但适合非线性模型(如 RF、SVR、KNN)的数据,您需要为数据添加非线性。作为示例方法,将y 转换为诸如sin(y) 之类的非线性函数可能会起作用(但我没有尝试)。

【讨论】:

谢谢,我在 target-2 上应用了sin()。对于目标 1,每个模型都变得很好 r2,例如 linreg 0.99 而 RF 0.98。但是对于 target-2,每个模型的 r2 都是负的。有什么想法吗? 负 r2 表示模型比具有平均值的常数预测差。当功能无用时,通常会发生这种情况。但是,在这种情况下,您至少有一些有用的功能。因此,如果过程中没有错误,我能做出的最好猜测是模型调整没有顺利进行。 我没有调整任何 ML 模型。我用的是默认的!

以上是关于如何为不同的目标范围(或模式)生成多目标回归数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何为不同的 SDK 目标管理同一类文件的多个版本?

如何为不同的目标设置不同的 .entitlements 文件

如何使用 numpy 生成多类测试数据集?

如何为不同的目标分配特定位置的 BundleDisplayNames

Xcode:如何为指向两个不同团队帐户(企业和公司)的两个不同目标选择两个不同的应用程序组

如何为每个部署目标指定 Jenkins 部署配置