如何为不同的目标范围(或模式)生成多目标回归数据集
Posted
技术标签:
【中文标题】如何为不同的目标范围(或模式)生成多目标回归数据集【英文标题】:How to generate a multi target regression dataset for different target ranges (or patterns) 【发布时间】:2021-12-18 02:46:22 【问题描述】:我们可以使用sklearn
的make_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 可能非常适合 Linear
、Lasso
或 Ridge
并且可以很好地预测,而目标 2 可以很好地拟合和预测 RF
、SVR
或 Knn
。
知道如何制作这种类型的数据集吗?
【问题讨论】:
【参考方案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 模型。我用的是默认的!以上是关于如何为不同的目标范围(或模式)生成多目标回归数据集的主要内容,如果未能解决你的问题,请参考以下文章
如何为不同的目标设置不同的 .entitlements 文件
如何为不同的目标分配特定位置的 BundleDisplayNames