C++,python,热爱算法和机器学习
全部博文(1214)
分类: IT业界
2020-09-29 18:03:31
机器学习中的概念漂移(Concept Drift)的理解与解决方法。
在一些情景下,X
(输入)和y (输出)之间的映射关系y=f(X) 是随着时间变化的,在训练集和测试集上的f 完全不一样,这样就会出现我们在离线测试调好的模型上线就不work的情况。In most challenging data analysis applications, data evolve over time and must be analyzed in near real time. Patterns and relations in such data often evolve over time, thus, models built for analyzing such data quickly become obsolete over time. In machine learning and data mining this phenomenon is referred to as concept drift.
— , 2016.
wiki上对于concept drift的定义:
In and , the concept drift means that the statistical properties of the target variable, which the model is trying to predict, change over time in unforeseen ways. This causes problems because the predictions become less accurate as time passes.
concept drift在机器学习中是比较棘手的问题,最通用的解决思路就是通过历史数据分析,抽象出数据的pattern随时间变化的规律,其中可能包括若干趋势和周期的混杂信号。但多数情况下,f
随时间的变化有很强的随机性,我们很难预测。如下图,数据在2018年11月前后有一个突变,如果没有相应的特征去反映这个突变前后的pattern,就可能会导致我们的模型在前后的预测性能不一致。
举个例子,在一个气象要素的时间序列中往往会包含各种时间尺度的信号,如日~周尺度的天气系统变化,季节尺度的变化,年际~年代际的ENSO信号,以及百年尺度的全球变暖信号等。假设我们要做一个温度预测的模型,通过历史数据训练得到温度的预测模型T=f(X)
,如果我们的历史数据不足一年,我们可能就捕捉不到季节变化的信号,比如用春夏秋的数据训练的模型很可能在冬季就不work;如果我们有1年的历史数据训练了,那可能ENSO这样的周期影响就会让我们的模型confusing;而且全球变暖一直在加剧,也许我们的模型在未来的场景下温度预测就偏低了(真实的温度在变高)。这些就是concept drift导致的我们的模型在未来场景下不work的一些可能性。