1、概念漂移概念
1.1 定義
廣義定義:
環境上下文變化引起的觀測對象的根本性變化,成爲概念漂移。
機器學習中的定義:
在機器學習、時間序列以及模式識別領域的一種普遍現象。概念漂移是指一個模型要去預測的一個目標變量,這個目標變量隨着時間的推移發生改變。對於基本相同的數據,隨着時間的推移,模型的預測精度將降低。
1.2 數學表達
X(輸入)和y(輸出)之間的映射關係y=f(X)是隨着時間變化的,在訓練集和測試集上的f完全不一樣,這樣就會出現我們在離線測試調好的模型上線就不work的情況。
1.3 研究對象
時間上具有關聯的數據流,目前有很多廣泛存在的數據,像金融數據、交通數據等,這類數據不同於傳統的static data(靜態數據),而是作爲一種數據量大、實時性強的data stream(流式數據)而存在。流式數據分爲穩定的數據流和動態的數據流,穩定的數據流具有穩定獨立同分布的特點,而動態數據流則是不獨立同分布的,所以會產生概念漂移的現象。
1.4 分類
根據數據的變化形態可以劃分爲:突變(sudden)、漸變(incremental)、緩變(gradual)、復現(recurring)、波動(blip)和噪聲(noise)。如下圖所示,根據不同的類型,針對概念漂移設計算法也有不同的思路。
- sudden指的是迅速同時又不可逆的改變,強調的是發生的迅速。
- incremental和gradual都是強調改變發生的緩慢,incremental強調值的隨時間改變,gradual則是數據分佈的改變。也有些研究者將這兩種變化劃分爲同一類,用incremental gradual這個術語來代替。
- recurring則是一種temporary(臨時性)的改變,在一段短時間內會恢復之前的狀態。所以也有些研究者將其稱爲local drift,它不具有周期性,是在不規則的時間間隔內反覆轉換。
- blip是代表一種很稀少的事件,它可以被視爲一種anomaly或者outlier(異常)。
- noise是一種隨機的改變,通常這種數據會從樣本數據中filter out。
根據模型的影響程度劃分爲實漂移和虛漂移,分佈變化影響分類決策,則爲實漂移;分佈變化不影響分類決策,則爲虛漂移。
1.5 概念漂移的影響
概念漂移可能會導致模型性能降低或者失效,例如,在網絡智能運維、自動駕駛、金融、醫療等領域,存在大量的KPI數據,這些數據可能會發生概念漂移,影響模型的應用效果。這些領域的場景中,判斷概念漂移的發生並及時更新模型堆AI應用的可靠性和可用性至關重要。
2、概念漂移的檢測方法
簡單來說,對於緩慢的分佈演變,被動方法 (passive methods) 能夠順滑改變模型參數以適應當前分佈。主動方法 (active methods) 一般用來針對急促的分佈演變,需要精確檢測漂移節點,並且迅速做出相應判斷。
檢測漂移節點通常採用兩種方法:
- 基於數據,根據觀測數據的統計信息來發現數據分佈的改變,例如發現類別樣本的高度不平衡;
- 基於模型,根據模型輸出特徵的改變來量化漂移,比如根據分類準確率的下降來量化概念漂移的程度。
2.1 基於數據的概念漂移
原理:漂移檢測(分析數據分佈特點)+模型更新
優點:思路清晰,可解釋。
缺點:當數據隨時間連續變化時,不能爲力。
方法:基於窗口的樣本選擇、基於數據的概率密度分佈。
2.1.1 基於窗口的樣本選擇
1、ADWIN算法
Learning from Time-Changing Data with Adaptive Windowing, A Bifetet al., 2005
算法初始化時會確定一個大窗口W,通過比較2個子窗口W0,W1中的統計值(均值,方差等)的差異是否大於某一閾值來判斷是否發生概念漂移;當未發生概念漂移,即數據流的分佈特徵值沒有改變,窗口大小不變;當發生概念漂移時,即口內數據流的分佈特徵值確實發生改變,窗口縮小(至W0,W1中最小的)。
如下圖:
- 目標:動態調整滑動窗口大小,這是一個具體的操作;
- 什麼時候調整滑動窗口?當檢測到change時;
- 怎麼衡量change?使用標識data_stream的特徵值,如果特徵值變化超過某一門限值,則認爲,change已經發生,需要進行調整滑動窗口大小;
- 特徵值都有哪些?方差、均值等;
- 特徵值的門限值怎麼確定?即,判斷標準是什麼?確定特徵值的標準是:沒有change發生時,判斷change已經發生的概率要儘可能小;change已經發生,判斷change已經發生的概率要儘可能大,並且速度要儘可能快。
2、Sample Weight算法
Handling Concept Drift: Importance, Challenges & Solutions,A Bifet,2011
機器學習中的應用:
- class weight:對訓練集裏的每個類別加一個權重。如果該類別的樣本數多,那麼它的權重就低,反之則權重就高.
- sample weight:對每個樣本加權重,思路和類別權重類似,即樣本數多的類別樣本權重低,反之樣本權重高
應用到此處:根據樣本存留時間給樣本賦予不同的權重,時間越靠前的窗口樣本權重較大,在模型訓練中的佔比重越多。
2.1.2 基於數據概率密度分佈
1、基於信息熵:對比當前窗口與前一窗口的概率分佈的山變化。
Entropy based concept drift detection, Peter Vorburgeret al., 2006
2、基於KL散度:KL散度又稱爲相對熵,信息散度,信息增益。是衡量兩個概率分佈之間差異性的度量方法。
Change Detection in Streaming Multivariate Data Using Likelihood Detectors, LI Kunchevaet al., 2011
3、基於核函數:將離散概率分佈通過核函數(如高斯核)進行平滑估計,在計算概率分佈的距離。
4、基於譜變換:奇異譜分析提取序列趨勢信號、週期信號、噪聲信號等,從而進行頻域的分佈變化檢測。(機械故障檢測常用)
FUNNEL: Assessing Software Changes in Web-based Services, S Zhang et al., 2016
2.2 基於模型的概念漂移
原理:直接更新模型,不直接研究數據,在線的自適應學習。
優點:直接實現模型的自適應。
缺點:可解釋性差,模型更新頻繁,易陷入局部最優。
方法:基於模型性能指標、基於增量式學習、基於遷移學習、基於集成學習。
2.2.1 基於模型檢測錯誤率
統計規律表明,如果樣本數據是穩定分佈的,那麼隨着數據的輸入,模型的錯誤率(error rate)就會逐漸下降;當概率分佈發生變化時,模型的錯誤率就會突變上升,因此通過評估錯誤率的變化可確定漂移。
1、DDM算法
Learning with Drift Detection, J Gama et al., 2004
DDM會爲錯誤率設置兩個閥值,一個是warning,另一個是drift。當樣本數據中的第w個數據輸入時,錯誤率達到了warning值,說明有樣本概率分佈改變的前兆,如果接連輸入的數據沒有讓錯誤率降低,並且當第d個數據輸入時錯誤率達到了drift值,則確定樣本概率分佈發生了變化,爲了適應新的樣本數據,模型就將以w之後的數據進行學習;而如果接連輸入的數據讓錯誤率降低了,則說明是一個false alarm。
𝑝𝑖爲歷史錯誤率,𝑠𝑖爲歷史錯誤率標準差
關於warning和drift這兩個閥值的大小,是通過錯誤率的概率分佈來確定的。
DDM方法主要是用於incremental或者是online算法,通過這個方法可以更好地選擇合適的、穩定分佈的數據集用於對模型的訓練。
2、EDDM算法
Early Drift Detection Method, M Baena-Garcıa, et al., .2005
EDDM(Early Drift detection method)依據DDM算法進行改進,基本思想是考慮兩個錯誤分類的變化率,而不是僅考慮錯誤率。
定義相鄰兩次error rate之間的差值𝑝𝑖′,以及𝑝𝑖′的標準差𝑠𝑖′。
例如,α和β的設定爲0.90與0.85,可理解爲錯誤率的變化相似性,當分類錯誤率與歷史時刻相似性小於0.90時,達到warning level。當相似性小於0.85時,數據確定開始產生漂移。
2.2.2 基於增量式學習算法
1、基於樹模型
Mining Time-Changing Data Streams, G Hultenet al., . 2001
CVFDT(Concept-adapting very fast decision tree):基於決策樹算法,針對流式數據添加滑動窗口,不斷刪除old data,保留new data。並且,週期性的檢測每個決策節點的分類準確率,當準確率低於閾值時,用備選子樹替換當前的決策節點(每節點有一棵備選子樹),用來維持概念漂移場景下數據的分類準確率。
2、基於聚類
Incremental Clustering for the Classification of Concept-Drifting Data Streams,I Katakis,2008
CCP(ConceptualClustering&Prediction)通過計算相鄰窗口樣本的特徵向量CV距離,判斷概念漂移是否發生,當漂移發生後更新聚類質心。
3、基於神經網絡
Adaptive online neural network forface identificationwithconcept drift, 2014
Incremental adaptive neural network:樣本如果輸出正確的識別結果,模型不更新;當樣本輸出錯誤的分類label時,模型錯誤率的上升觸發模型更新:通過增加網絡模型輸出層神經元,爲新概念創建新的神經網絡輸出節點,在參數矩陣Θ(L-1)中增加一行引入新的類,同時保留系統的先前知識,並利用在線少量樣本,進行權重更新。
l表示神經網絡第l層,n(l)表示第l層的神經元個數,Θ爲權重參數矩陣
2.2.3 基於集成、遷移學習算法
針對不同數據塊或不同的概念數據,系統保留一定數量的決策模型,通過集成方式解決概念漂移帶來的模型失效問題。包括SEA,Learn++,DDD,DWM,DTEL算法等。
1、SEA算法
A Streaming Ensemble Algorithm (SEA) for Large Scale Classification WN Street et al., 2001
SEA(StreamingEnsembleAlgorithm)是一種集成算法,通過將流式數據訓練N個分類模型,通過淘汰低準確率模型,實現模型在線更新。
2、Learn++算法
An Incremental Learning Algorithm for Supervised Neural Networks, R Polikaret al., 2001
Learn++是一種利用神經網絡分類器進行集成訓練的算法。在進行訓練時,將數據集分成若干子集,分別訓練弱分類器(準確率由於隨機分類器即可),並通過權重投票機制集成若干分類器。
3、DDD算法
A new ensemble approach for dealing with concept drift, LL Minkuet al., 2011
DDD(DiversityforDealingwithDrifts)算法改進:依據多樣性規則保存m個模型,並用模型準確率對集成模型進行加權處理。
Q函數爲評估兩個分類器差異性的函數,其中N01表示分類器𝑓𝑖判斷樣本分類爲0,分類器𝑓𝑗判斷判斷樣本數爲1的比例,以此類推。
4、算法
Dynamic Weighted Majority for Incremental Learning of Imbalanced Data Streams with Concept Drift, Y Lu et al.,2017
DWM(DynamicWeightedMajority)算法:集成m個模型,模型準確率對集成模型進行加權處理。
𝜖𝑗(𝑡)爲訓練分類器𝐻𝑗(𝑡)在當前數據塊𝐷(𝑡)的分類錯誤率
TEL算法(DiversityandTransferbasedEnsembleLearning):依據多樣性規則保存m個模型,當新的數據塊到來時,m個模型進行遷移學習(遷移決策樹),並與當前模型進行加權集成。
DTEL: Diversity and Transfer based Ensemble Learning approach, Y Sun et al.,2017
其中div(s)函數爲多樣性函數,𝑄爲評估兩個分類器差異性的函數
參考文獻:
- http://blog.itpub.net/31509949/viewspace-2643047/
- https://blog.csdn.net/FrankieHello/article/details/81949725
- https://www.zhangqibot.com/post/ml-concept-drift/
- https://posts.careerengine.us/p/5e1b563637ce770a4c6b7b42
- http://ningg.top/algorithm-adwin/
- Sample Weight & Class Weight
- https://www.cnblogs.com/jiangxinyang/p/10563113.html
- https://blog.csdn.net/qq_41103204/article/details/104755527
- https://blog.csdn.net/FrankieHello/article/details/81988751
- Block-based and Online Ensembles for Concept-drifting Data Streams, 2015. Ph.D. Thesis from Dariusz Brzeziński
- Learning from Time-Changing Data with Adaptive Windowing, A Bifetet al., 2005
- Handling Concept Drift: Importance, Challenges & Solutions,A Bifet,2011
- Entropy based concept drift detection, Peter Vorburgeret al., 2006
- Change Detection in Streaming Multivariate Data Using Likelihood Detectors, LI Kunchevaet al., 2011
- FUNNEL: Assessing Software Changes in Web-based Services, S Zhang et al., 2016
- Learning with Drift Detection, J Gama et al., 2004
- Early Drift Detection Method, M Baena-Garcıa, et al., .2005
- Mining Time-Changing Data Streams, G Hultenet al., . 2001
- Incremental Clustering for the Classification of Concept-Drifting Data Streams,I Katakis,2008
- Adaptive online neural network forface identificationwithconcept drift, 2014
- A Streaming Ensemble Algorithm (SEA) for Large Scale Classification WN Street et al., 2001
- An Incremental Learning Algorithm for Supervised Neural Networks, R Polikaret al., 2001
- A new ensemble approach for dealing with concept drift, LL Minkuet al., 2011
- Dynamic Weighted Majority for Incremental Learning of Imbalanced Data Streams with Concept Drift, Y Lu et al.,2017
- Diversity and Transfer based Ensemble Learning approach, Y Sun et al.,2017