# 回归问题

回归问题是具有数值目标列的机器学习问题。下面的示例将向您展示如何以精确的方式构建业务问题，然后聚合一个训练数据集，其中所有特征都是平等的。这为生成预测回归模型提供了良好的基础。

## 回归示例：客户生命周期值

我们首先假设一个基于历史客户的机器学习模型将学习使用影响预测的几个特征来预测客户的终身价值。我们收集包含所有过去和现在客户的历史信息的数据集。每个客户有一行，这些列表示描述客户的特征：客户 ID、性别、年龄、成为客户的日期、邮政编码、购买次数和总货币支出。

收集的数据样本

收集的数据样本

收集的数据样本 ![带有训练数据样本的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/regression-problem-table-1.png)

我们可以将客户终身价值定义为总货币支出，将数据集输入机器学习算法，并让其学习预测总货币支出。随着未来获得新客户，我们可以使用经过训练的算法来预测他们在客户生命周期内将提供多少货币价值。然而，这种方法存在若干问题：

* 数据集可能包括已经成为客户一天、一个月或一年的人。总货币支出的价值并不反映客户将花费多少，而是反映到目前为止他们花费的总额。

* 年龄为一天的客户账户，可能具有高回报客户的特征。但由于他们昨天刚成为客户，他们只购买了一次，没有花很多钱。通过将他们包括在训练数据集中，我们错误地教导机器学习算法，他们是那种不会带来很多收入的客户。

* 我们可能有一个新客户，他在第一个月里每周订购三次产品，总共购买了 12 次。如果其他人已经是一年的客户，并且每个月购买一次，那么他们可能会花同样的钱。机器学习算法将使这两个客户在客户终身价值方面处于同等地位，而实际上，一个月年龄的客户从长远来看可能更有价值。

为了避免这些陷阱，我们需要准确地定义客户生命周期价值，以及如何为问题准备数据集。实现这一点的一个好方法是将时间作为问题定义的一个因素。

## 包括时间因素

为了包括时间因素，我们首先将第一年的价值定义为客户作为客户第一年花费的总金额。然后，我们可以使用客户前三个月的行为作为特征来预测他们第一年的总花费。第一年值是包含时间框架的感兴趣度量的精确定义。创建这样一个精确定义的度量的优点是，它将我们训练数据集中的所有示例放在同等的基础上。

请注意，由于我们现在正在查看人们作为客户的第一年花费的总金额，因此我们必须将训练数据集限制为至少一年的客户。我们可以准备这样的数据集：

包含时间因子的数据集

包含时间因子的数据集

包含时间因子的数据集 ![带有训练数据样本的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/regression-problem-table-2.png)

在这里，每一行代表一个至少一年的客户。这些列包括描述客户成为客户时的特征，以及表示客户在所选时间段内的活动的特征。

该活动通过前三个月的购买数量和前三个月中的货币支出总额来衡量。目标列表示第一年花费的总金额。这是我们将示教机器学习算法进行预测的第一年值。

请注意，我们现在是如何提出一个在时间框架内定义的非常精确的问题的：“根据客户前三个月的行为，预测他们在第一年会带来多少利润。”

## 比较回归问题和时间序列问题

回归问题与时间序列问题在目标变量和它们所涉及的实际用例方面相似。这两种问题类型之间也存在一些差异。

有关时间序列问题的详细信息，请参阅[时间序列问题](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-series-problems.htm)。

### 相似之处

* 两者都涉及一个数值目标列。

* 两者都常用于涉及销售和货币预测的金融用例中。

### 差异

* 时间序列问题支持分组目标，而回归问题不支持（请参阅 [时间序列问题的组成部分](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Components)）。分组场景仍然可以通过训练多个不同的模型来解决回归问题，但代价是牺牲了跨组的全局学习。

* 时间序列问题支持您提前知道某些功能, 特性变量的场景——例如，与天气相关的预测、计划的促销折扣以及日期是否落在工作日、周末和节假日。这些功能, 特性变量被称为[未来特性](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#FutureFeatures)。

* 对于时间序列问题，数据必须按固定时间间隔的日期或日期时间进行索引。此外，在训练和预测期间，预期并生成不同的数据内容（请参阅[准备训练数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#TrainPrepare)和[准备应用数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#ApplyPrepare)）。

* 在时间序列问题中，预测值明确对应于特定的日期和时间。在回归问题中，预测值可能对应也可能不对应于特定的日期和时间，但如果它们对应，这种关联是隐含的，而不是在输出中明确表示的。

* 使用了不同的算法（请参阅 [理解模型算法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/algorithms.htm)）。

## 了解详情

* [时间序列问题](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-series-problems.htm)
* [介绍Qlik Predict](https://help.qlik.com/lnk/Introduction_Qlik_AutoML)
* [什么是 Qlik Predict](https://help.qlik.com/lnk/What_is_AutoML)

相关学习内容：

* [介绍Qlik Predict](https://help.qlik.com/lnk/Introduction_Qlik_AutoML)
* [什么是 Qlik Predict](https://help.qlik.com/lnk/What_is_AutoML)