# 浅谈机器学习中的概念漂移

> 原文： [https://machinelearningmastery.com/gentle-introduction-concept-drift-machine-learning/](https://machinelearningmastery.com/gentle-introduction-concept-drift-machine-learning/)

数据可能会随时间而变化。这可能导致预测模型中的预测表现较差且降级，假设输入和输出变量之间存在静态关系。

这种改变数据中潜在关系的问题在机器学习领域被称为概念漂移。

在这篇文章中，您将发现概念漂移的问题，以及您可以在自己的预测性建模问题中解决它的方法。

完成这篇文章后，你会知道：

*   数据随时间变化的问题。
*   什么是概念漂移及其定义方式。
*   如何在您自己的预测性建模问题中处理概念偏差。

让我们开始吧。

![A Gentle Introduction to Concept Drift in Machine Learning](img/023b7237d9a989e8f97e769acfbb6c52.jpg)

机器学习中概念漂移的温和介绍
[Joe Cleere](https://www.flickr.com/photos/jcleere/12567478525/) 的照片，保留一些权利。

## 概观

这篇文章分为3部分;他们是：

1.  随时间变化的数据
2.  什么是概念漂移？
3.  如何解决概念漂移问题

## 随时间变化的数据

预测性建模是从历史数据中学习模型并使用模型对我们不知道答案的新数据做出预测的问题。

从技术上讲，预测性建模是在给定输入数据（X）以预测输出值（y）的情况下近似映射函数（f）的问题。

```py
y = f(X)
```

通常，这种映射被认为是静态的，这意味着从历史数据中学习的映射在将来对新数据同样有效，并且输入和输出数据之间的关系不会改变。

这对许多问题都是如此，但并非所有问题都是如此。

在某些情况下，输入和输出数据之间的关系可能会随着时间的推移而发生变化，这意味着未知的底层映射函数会发生变化。

这些变化可能是重要的，例如，对较旧的历史数据进行训练的模型所做的预测不再正确或者如果模型是根据最近的历史数据进行训练那么正确。

反过来，可以检测这些变化，并且如果检测到，则可以更新学习的模型以反映这些变化。

> ...许多数据挖掘方法都假设发现的模式是静态的。但是，实际上，数据库中的模式会随着时间的推移而发展。这带来了两个重要挑战。第一个挑战是检测概念漂移何时发生。第二个挑战是使模式保持最新，而不是从零开始引入模式。

- 第10页，[数据挖掘和知识发现手册](http://amzn.to/2wzpw3o)，2010年。

## 什么是概念漂移？

机器学习和数据挖掘中的概念漂移是指随着时间的推移，潜在问题中输入和输出数据之间关系的变化。

在其他领域，这种变化可能被称为“_协变量移位_”，“_数据集移位_”或“_非平稳性_”。

> 在最具挑战性的数据分析应用程序中，数据随着时间的推移而发展，必须近乎实时地进行分析。这些数据中的模式和关系经常随着时间的推移而发展，因此，为分析此类数据而构建的模型会随着时间的推移而迅速变得过时。在机器学习和数据挖掘中，这种现象被称为概念漂移。

- [概念漂移应用概述](http://www.win.tue.nl/~mpechen/publications/pubs/CD_applications15.pdf)，2016。

“_概念漂移_”中的概念是指输入和输出变量之间的未知和隐藏关系。

例如，天气数据中的一个概念可能是未在温度数据中明确指定的季节，但可能影响温度数据。另一个例子可能是随着时间的推移客户购买行为可能受到经济实力的影响，其中经济实力没有在数据中明确规定。这些元素也称为“隐藏上下文”。

> 在许多现实领域中学习的一个难题是感兴趣的概念可能依赖于某些隐藏的上下文，而不是以预测特征的形式明确给出。一个典型的例子是天气预报规则可能随季节而有根本变化。 [...]通常隐藏变化的原因，而不是先验的，使学习任务更加复杂。

- [概念漂移的问题：定义和相关工作](http://www-ai.cs.uni-dortmund.de/LEHRE/FACHPROJEKT/SS12/paper/concept-drift/tsymbal2004.pdf)，2004。

对数据的更改可以采取任何形式。从概念上讲，更容易考虑这样一种情况，即变化存在一定的时间一致性，使得在特定时间段内收集的数据显示出相同的关系，并且这种关系随时间平滑变化。

请注意，情况并非总是如此，这一假设应该受到挑战。其他一些类型的更改可能包括：

*   随着时间的推移逐梯度化。
*   经常性或周期性变化。
*   突然或突然的变化。

每种情况可能需要不同的概念漂移检测和处理方案。通常，经常性变化和长期趋势被认为是系统性的，可以明确地识别和处理。

概念漂移可能出现在监督学习问题上，其中做出预测并且随时间收集数据。这些传统上称为在线学习问题，考虑到数据随时间的变化。

存在按时间排序预测的域，例如时间序列预测和流数据的预测，其中概念漂移的问题更可能并且应该明确地测试和解决。

> 挖掘数据流时的一个共同挑战是数据流并不总是严格固定的，即数据的概念（输入数据的基础分布）随着时间的推移不可预测地漂移。这促使需要及时检测数据流中的这些概念漂移

- 用于流数据的[概念漂移检测](https://arxiv.org/abs/1504.01044)，2015。

Indre Zliobaite在2010年的论文题为“[在概念漂移下的学习：概述](https://arxiv.org/abs/1010.4784)”提供了一个框架，用于思考概念漂移和机器学习从业者所需的决策，如下：

*   **未来假设**：设计师需要对未来的数据源做出假设。
*   **更改类型**：设计人员需要识别可能的更改模式。
*   **学习器适应性**：基于变化类型和未来假设，设计者选择使学习器适应的机制。
*   **模型选择**：设计者需要一个标准来在每个时间步骤选择所选学习器的特定参数化（例如，整体成员的权重，可变窗口方法的窗口大小）。

在解决您自己的预测性建模问题的概念偏差时，此框架可能有助于思考可用的决策点。

## 如何解决概念漂移？

解决概念漂移的方法有很多种;我们来看看几个。

### 1.什么都不做（静态模型）

最常见的方法是根本不处理它并假设数据不会改变。

这使您可以开发一次“最佳”模型，并将其用于所有未来数据。

这应该是您与其他方法进行比较的起点和基线。如果您认为数据集可能会出现概念漂移，则可以通过两种方式使用静态模型：

1.  **概念漂移检测**。监测静态模型随时间的技能，如果技能下降，可能会发生概念漂移并需要一些干预。
2.  **基线表现**。使用静态模型的技能作为基线，与您所做的任何干预进行比较。

### 2.定期重新适应

良好的第一级干预是使用更新的历史数据定期更新静态模型。

例如，您可以使用从前一时期收集的数据每月或每年更新模型。

这还可以涉及对模型进行反向测试，以便在重新拟合静态模型时选择合适数量的历史数据。

在某些情况下，仅包括最近历史数据的一小部分以最佳地捕获输入和输出之间的新关系（例如，使用滑动窗口）可能是适当的。

### 3.定期更新

一些机器学习模型可以更新。

这是比先前方法（周期性重新拟合）的效率，其中不是完全丢弃静态模型，而是将现有状态用作适合过程的起点，该过程使用最新历史数据的样本来更新模型拟合。 。

例如，该方法适用于使用权重或系数的大多数机器学习算法，例如回归算法和神经网络。

### 4.重量数据

某些算法允许您权衡输入数据的重要性。

在这种情况下，您可以使用与数据年龄成反比的加权，以便更多地关注最新数据（较高权重），并且较少关注最近数据（较小权重）。

### 5.了解变化

可以在静态模型保持不变的情况下使用集合方法，但是新模型学习基于更新近的数据中的关系来校正来自静态模型的预测。

这可以被认为是增强型集合（仅在精神上），其中后续模型校正来自先前模型的预测。这里的关键区别在于后续模型适用于不同的和更新的数据，而不是相同数据集的加权形式，如AdaBoost和梯度增强的情况。

### 6.检测并选择模型

对于某些问题域，可以设计系统来检测变化并选择特定的和不同的模型来做出预测。

这可能适用于预期过去可能发生突然变化并且可以在将来检查的域。它还假设可以开发熟练的模型来处理每个可检测的数据更改。

例如，突然变化可以是范围内的特定观察或观察，或者一个或多个输入变量的分布的变化。

### 7.数据准备

在某些领域，例如时间序列问题，数据可能会随着时间的推移而发生变化。

在这些类型的问题中，通常以这样的方式准备数据，即通过差分去除随时间的数据的系统变化，例如趋势和季节性。

这很常见，它被内置到ARIMA模型等经典线性方法中。

通常，我们不会将数据的系统变化视为概念漂移的问题，因为它可以直接处理。相反，这些示例可能是一种思考问题的有用方法，可以帮助您使用标准化，缩放，预测等方式以特定方式预测变更和准备数据，从而减轻或至少减少变更对输入变量的影响。未来。

## 进一步阅读

如果您希望深入了解，本节将提供有关该主题的更多资源。

### 文件

*   [在概念漂移和隐藏上下文的存在下学习](https://pdfs.semanticscholar.org/4ccc/553d7774748be878002381877d70932b2717.pdf)，1996。
*   [概念漂移的问题：定义和相关工作](http://www-ai.cs.uni-dortmund.de/LEHRE/FACHPROJEKT/SS12/paper/concept-drift/tsymbal2004.pdf)，2004。
*   [流媒体数据的概念漂移检测](https://arxiv.org/abs/1504.01044)，2015。
*   [在概念漂移下学习：概述](https://arxiv.org/abs/1010.4784)，2010。
*   [概念漂移应用概述](http://www.win.tue.nl/~mpechen/publications/pubs/CD_applications15.pdf)，2016。
*   [什么是概念漂移和如何测量](https://link.springer.com/chapter/10.1007/978-3-642-16438-5_17)它？，2010。
*   [了解概念漂移](https://arxiv.org/abs/1704.00362)，2017年。

### 用品

*   [维基百科上的概念漂移](https://en.wikipedia.org/wiki/Concept_drift)
*   [处理概念漂移：重要性，挑战和解决方案](http://www.cs.waikato.ac.nz/~abifet/PAKDD2011/)，2011（[幻灯片](http://www.cs.waikato.ac.nz/~abifet/PAKDD2011/PAKDD11Tutorial_Handling_Concept_Drift.pdf)）。

## 摘要

在这篇文章中，您发现了应用机器学习中数据变化的概念漂移问题。

具体来说，你学到了：

*   数据随时间变化的问题。
*   什么是概念漂移及其定义方式。
*   如何在您自己的预测性建模问题中处理概念偏差。

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。