过去几周我一直在研究多输出回归。我正在使用 scikit 学习包。我的机器学习问题有 3 个特征的输入,需要预测两个输出变量。 sklearn 包中的一些 ML 模型原生支持多输出回归。如果模型不支持,可以使用sklearn多输出回归算法进行转换。 multioutput类适合每个目标一个回归器。
- 多输出回归类或支持的多输出回归算法是否考虑了输入变量的潜在关系?
- 我应该使用神经网络而不是多输出回归算法吗?
最佳答案
1) 对于您的第一个问题,我将其分为两部分。
第一部分的答案写在您链接的文档中,也写在这个 user guide topic 中。 ,其中明确指出:
As MultiOutputRegressor fits one regressor per target it can not take advantage of correlations between targets.
第一个问题的第二部分询问支持此的其他算法。为此,您可以查看 "inherently multiclass"用户指南中的一部分。本质上多类意味着他们不使用一对一或一对一策略来处理多类(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”) ... ... ...
尝试用“Regressor”替换末尾的“Classifier”并查看那里的
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) 现在关于你是否使用神经网络的第二个问题,这取决于个人喜好、问题类型、你拥有的数据量和类型、你想要进行的训练迭代。或许您可以尝试多种算法并选择能够为您的数据和问题提供最佳输出的算法。
关于python - 多输出回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391637/