多输出回归是指在给出输入示例的情况下涉及预测两个或多个数值的回归问题。
一个示例可能是在给定输入的情况下预测坐标,例如预测x和y值。另一个示例是多步时间序列预测,其中涉及预测给定变量的多个未来时间序列。
许多机器学习算法都是为预测单个数值而设计的,简称为回归。一些算法确实支持内在的多输出回归,例如线性回归和决策树。还有一些特殊的解决方法模型,可用于包装和使用那些本来不支持预测多个输出的算法。
在本教程中,你将发现如何开发用于多输出回归的机器学习模型。
完成本教程后,你将知道:
- 机器学习中的多输出回归问题。
- 如何开发本质上支持多输出回归的机器学习模型。
- 如何开发包装器模型,以允许固有的不支持多输出的算法用于多输出回归。
教程概述
本教程分为三个部分:
1.多输出回归问题
(1)检查 Scikit-learn 版本
(2)多输出回归测试问题
2.固有的多输出回归算法
(1)用于多输出回归的线性回归
(2)多输出回归的k最近邻
(3)多输出回归的随机森林
(4)使用交叉验证评估多输出回归
3.包装器多输出回归算法
(1)每个输出的单独模型(MultiOutputRegressor)
(2)每个输出的链接模型(RegressorChain)
多输出回归问题
回归是指涉及预测数值的预测建模问题。
例如,预测大小,重量,数量,销售数量和点击次数是回归问题。通常,在给定输入变量的情况下预测单个数值。
一些回归问题需要预测两个或多个数值。例如,预测x和y坐标。
这些问题称为多输出回归或多输出回归。
- 回归:预测给定输入的单个数字输出。
- 多输出回归:根据输入预测两个或多个数字输出。
在多输出回归中,通常,输出依赖于输入并且彼此依赖。这意味着输出经常不是彼此独立的,可能需要一个模型来预测两个输出在一起或每个输出取决于其他输出。
多步时间序列预测可以被认为是一种多输出回归的类型,其中预测了一系列未来值,并且每个预测值都取决于该序列中的先前值。
有多种处理多输出回归的策略,我们将在本教程中探讨其中的一些策略。
1.检查 Scikit-learn 版本
首先,确认你已安装了 scikit-learn 库的最新版本。
在本教程中探索的某些模型需要该库的最新版本。
你可以使用以下代码示例检查库的版本:
# check scikit-learn version
import sklearn
print(sklearn.__version__)
运行该示例代码将可以看到该库的版本。
0.22.1
2.多输出回归测试问题
我们可以定义一个测试问题,以用来演示不同的建模策略。
我们将使用make_regression()函数为多输出回归创建测试数据集。我们将生成具有10个输入功能的1,000个示例,其中五个将是多余的,另外五个将提供信息。该问题