多输出回归



在过去的几周里,我一直在研究多输出回归。我正在使用scikit学习包。我的机器学习问题的输入为 3 个特征,需要预测两个输出变量。sklearn 包中的一些 ML 模型原生支持多输出回归。如果模型不支持此功能,则可以使用 sklearn 多输出回归算法对其进行转换。多输出类适合每个目标一个回归量。

多输出
  1. 回归器类或支持的多输出回归算法是否考虑了输入变量的基础关系?
  2. 我应该使用神经网络而不是多输出回归算法吗?

1)对于你的第一个问题,我把它分为两部分。

  • 第一部分的答案写在您链接的文档以及本用户指南主题中,其中明确指出:

    由于多输出回归器适合每个目标一个回归器,因此它不能采取 目标之间相关性的优势。

  • 第一个问题的第二部分询问支持这一点的其他算法。为此,您可以查看用户指南中的">固有多类"部分。本质上是多类的,这意味着它们不使用一对一或一对一策略来处理多类(OvO 和 OvR 使用多个模型来拟合多个类,因此可能不会使用目标之间的关系)。本质上是多类意味着它们可以将多类设置构建为单个模型。这将列出以下内容:

    sklearn.naive_bayes.BernoulliNB
    sklearn.tree.DecisionTreeClassifier
    sklearn.tree.ExtraTreeClassifier
    sklearn.ensemble.ExtraTreesClassifier
    sklearn.naive_bayes.GaussianNB
    sklearn.neighbors.KNeighborsClassifier
    sklearn.semi_supervised.LabelPropagation
    sklearn.semi_supervised.LabelSpreading
    sklearn.discriminant_analysis.LinearDiscriminantAnalysis
    sklearn.svm.LinearSVC (setting multi_class=”crammer_singer”)
    sklearn.linear_model.LogisticRegression (setting multi_class=”multinomial”)
    ...
    ...
    ...
    

    尝试将末尾的"分类器"替换为"回归器",并在此处查看fit()方法的文档。例如,让我们以 DecisionTreeRegressor.fit():

    y : array-like, shape = [n_samples] or [n_samples, n_outputs]
    The target values (real numbers). 
    Use dtype=np.float64 and order='C' for maximum efficiency.
    

    您会看到它支持目标的二维数组(y)。因此,它可以使用目标的相关性和潜在关系。

2)现在对于你关于是否使用神经网络的第二个问题,这取决于个人喜好,问题的类型,你拥有的数据量和类型,你想做的训练迭代。也许您可以尝试多种算法,并选择为您的数据和问题提供最佳输出的算法。

最新更新