多输出回归

Mat*_*ser 6 python regression machine-learning scikit-learn

最近几周,我一直在研究多输出回归。我正在使用scikit学习包。我的机器学习问题的输入为3,需要预测两个输出变量。sklearn软件包中的某些ML模型可以自然地支持多输出回归。如果模型不支持此功能,则可以使用sklearn多输出回归算法进行转换。多输出类适合每个目标一个回归器。

  1. 多输出回归变量类或受支持的多输出回归算法是否考虑了输入变量的潜在关系?
  2. 我应该使用神经网络代替多输出回归算法吗?

Viv*_*mar 6

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

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

    由于 MultiOutputRegressor 为每个目标拟合一个回归量,因此无法利用目标之间的相关性。

  • 第一个问题的第二部分询问支持这一点的其他算法。为此,您可以查看用户指南中的固有多类部分。固有的多类意味着他们不使用 One-vs-Rest 或 One-vs-One 策略来处理多类(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”)
    ...
    ...
    ...
    
    Run Code Online (Sandbox Code Playgroud)

    尝试将末尾的“分类器”替换为“回归器”并查看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.
    
    Run Code Online (Sandbox Code Playgroud)

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

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