PAKDD2020 阿里巴巴智能運維算法大賽 總結(初賽33,決賽19)

賽題地址:PAKDD2020 阿里巴巴智能運維算法大賽-大規模硬盤故障預測
Githun代碼地址:初賽+複賽

問題描述

給定一段連續採集(天粒度)的硬盤狀態監控數據(Self-Monitoring, Analysis, and Reporting Technology; often written as SMART)以及故障標籤數據,參賽者需要自己提出方案,按天粒度判斷每塊硬盤是否會在未來30日內發生故障。例如,可以將預測故障問題轉化爲傳統的二分類問題,通過分類模型來判斷哪些硬盤會壞;或者可以轉化爲排序問題,通過Learning to rank的方式判斷硬盤的損壞嚴重程度等。

初賽會提供訓練數據集,供參賽選手訓練模型並驗證模型效果使用。同時,也將提供測試集,選手需要對測試集中的硬盤按天粒度進行預測,判斷該硬盤是否會在未來30天內發生故障,並將模型判斷出的結果上傳至競賽平臺,平臺會根據提交的預測結果,來評估模型預測的效果。

總的來說就是要在未來30天內,把會發生故障的硬盤找出來,只要提交的Log日期,距離真正壞的日期距離在30天內就算預測成功

數據描述

1)表1: disk_sample_smart_log_*.csv爲SMART LOG數據表,共514列。每列的含義如下:

列名 字段類型 描述
serial_number string 硬盤序列號代號
manufacturer string 硬盤的廠商代號
model string 硬盤型號代號
smart_n_normalized integer SMART ID=n的歸一化SMART數據
smart_nraw integer SMART ID=n的SMART原始數據
dt string 採集日期

smart_n_normalizedsmart_nraw是硬盤的smart數據,也就是原始特徵,總共有510列,每個raw都對應有個normalized ,對於不同廠家,normalized的方式不一樣,我們不得而知

2)表2: disk_sample_fault_tag.csv爲故障標籤表,共5列。每列含義如下:

列名 字段類型 描述
serial_number string 硬盤序列號代號
manufacturer string 硬盤的廠商代號
model string 硬盤型號代號
fault_time string 硬盤的故障時間
tag integer 硬盤的故障類型代號

tag標籤數據,給出的是所有壞了的硬盤的損壞日期,以及損壞類別。(一個disk可能有多種類型的損壞)

初賽訓練集數據範圍2017-07-31 至 2018-07-31。初賽A榜的測試集爲disk_sample_smart_log_test_a.csv,數據範圍爲2018-08-01~2018-08-31整月的smart log數據,選手根據測試集數據按時間維度,每天預測硬盤是否會在未來30天內發生故障,例如: 8月1號的預測結果可以根據8月1號當天數據及歷史數據來判斷未來30天內哪些硬盤會出現故障,8月N號的預測結果可以根據8月N號當天數據及歷史數據來判斷未來30天內哪些硬盤會出現故障,以此類推。初賽測試集不提供故障label。

注:代碼必須包含仿線上真實故障預測邏輯,即從9月1日開始按照時間順序每天根據歷史數據(含當天)構造特徵,並將疑似壞盤的預測結果輸出到規定文件當中,不允許出現’取30天預測結果中概率值最大的預測日作爲輸出’的情況;

提交的格式要求如下:

manufacture model serial_number dt
A 1 disk_1 2018-08-15
A 1 disk_123 018-08-16
A 1 disk_1 2018-08-17

比賽的指標是類似f1的評價指標,詳細可以去官網查看下,這裏就不過多介紹。另外爲了防止選手投機,官方對線上的log數據在時間維度上做了截斷處理。

數據處理

1、清洗數據

由於數據量非常大,全量數據大概有16G左右,所以我們對每個月的數據逐步分析,首先去除smart特徵中,大量nan值以及單值特徵,這些特徵對於模型預測是無效的。在對特徵進行精度轉換。最後篩選出34列smart特徵,單月數據內存縮小到400M左右。

2、數據分析

由於數據是以天爲顆粒細度的log數據,每個disk 都有一串幾乎連續的log數據,這是典型的時間序列數據,可以做傳統的窗函數特徵,統計特徵,以及差分特徵。對於每個smart,我們需要了解它的實質性含義,才能根據具體情況去做特徵工程。smart數據說明標如下圖:
在這裏插入圖片描述
表上的特徵在比賽給的數據組並不是全都有,這就需要具體查看和分析了。
但是通過比賽發現,最有效的還是歷史差分特徵,它能體現disk的變異程度。對於窗函數的統計特徵,發現在整個建模中表現都不是很好。(注意:爲了防止leak,我們都只使用歷史數據做特徵工程)

特徵工程

在做特徵之前,對Nan值進行了處理,採用三次樣條差值補全nan。
由於有些數據前後nan值缺失較多,無法插值補齊,故插值之後還有少量nan值。

lgb模型可以自動處理nan值,故插值未對少量nan值做後續處理。
1、時序的差分特徵
用當前log的feature與之前log的feature做差值,時間間隔可以取
例如 1 3 7,但由於設備有限,支撐不了這麼多特徵,
所以選取了部分特徵做差值,同時取1 3 7 間隔差值的mean 來將三個
不同時間間隔的特徵融合成一個。

2、初始狀態變化特徵
同樣用當前log的feature與serial表中,disk的初始狀態做差值,同樣由於設備內存限制,只選了幾個做,如果全做,效果會好很多。

3、disk使用時長
一般來說disk 使用的時間越久,壞的機率越大
serve_time=dt-init_dt

4、數據丟失率特徵
通過觀察數據分佈,發現數據缺失越多,越容易發生故障。
miss_data_rate=(disk當前爲止所有log數量)/(disk使用時長)

5、其他特徵
比如加窗的統計特徵,由於是時間序列,可以構建加窗的聚合函數
由於設備原因,以及這些特徵構建後發現效果不是很明顯,故舍去

6、嘗試的特徵提取
對於時序數據,採用LSTM提取時序特徵,初步嘗試,效果不好,可能是數據
預處理不恰當,後期可以繼續嘗試。對於連續特徵和部分可以當作離散特徵的高階
組合,可以採用DNN,FM 進一步挖掘。

(對於數據的預處理還嘗試用Log平滑化,以及標準化處理,但是從結果上看,由於分佈差異較大,標準化會改變feature一些特性,所以捨去這部分處理)
複賽階段:
相對於初賽增加了一些特徵:
1、curr rate :當天統計分數,即特徵在當天log中的評分
2、model count:發現disk分佈中 擁有兩種model的disk 壞其中一個的概率較大
3、 gather erro: 選取了幾種對於錯誤描述的smart進行累和。
4、 gct_change: 帶窗函數的特徵變化率
5、 ewm_calculate: 指數平滑 取mean 和std
6、 ewm_var_diff : var*diff 增大變異程度
7、 scale_smart : raw/normlized 一種規範化的方式
8、 diff_cumsum : 在原差分的基礎上,做了積分,仿照dpi類似的思想,累計誤差
9、 data_smoother: 一種加權的線下處理
10、 tag_predict :給每個disk 打上tag的標籤,一定程度上預知壞的類別

建模

初賽

初賽的時候採樣用的是二分類lgb模型,對於距離壞日期小於30的disk的log數據標記爲1 正樣本,大於30天的標記爲負樣本,由於正負樣本及其不均,lgb添加了is_unbalance =True,後期也嘗試過用SMOTE做樣本均衡,採用負採樣或者生成正樣本的策略,但是實際測試效果沒有很大的提升,可能是訓練樣本的數據集沒有構造好,或者lgb模型對於不均衡樣本的處理已經很優秀了。
當然我們也嘗試了一些nn模型,比如dppfm,lstm等,但是效果都不佳,這可能是nn模型對數據比較敏感,對大量缺失值的數據不太好處理,同時不同數據間的分佈尺度差異也比較大。lgb或者catbosst,xgb這類的隨機森林模型效果會比較好。

複賽

複賽階段,重新換了個思路,採用迴歸模型,我們只需要得到對於disk的log,判斷其壞的可能性,只要設置合適的閾值,就能把距離壞日期小於30天的log篩選出來。
這裏需要注意的一點是,打標籤的方式,不同的方式,對於模型的預測效果影響非常巨大,我們嘗試了多種方式,最終確定的方式如下:

gap_day label
>30 0
20<=gap_day<30 10
10<=gap_day<20 20
5<=gap_day<10 30
2<=gap_day<5 40
gap_day<2 100

相對於初賽的建模方式,採用迴歸建模,分數能多上十個點左右。
值得注意的是,比賽結束後,發現第一名也是該用迴歸建模的,但是奇怪的是他們label的方式和我們不同,他們的label是0,1,2,3…,31,gap_day 大於30天的label爲1,小於30天的label分別爲1 2 3… 以此類推。
這種方式的label我們最初也嘗試過,但是效果特別差。我們最後分析的原因可能是因爲我們的部分特徵和時間序列強相關,導致模型不能很好的根據特徵來區分,而只能預測出一種變化趨勢。(總之這還是比較玄學的,我們的特徵和思路和第一名幾乎一致,但是分數卻相差挺大的,細節部分也不好探究,感興趣的讀者可以做做實驗,對比下兩種標籤的差異和性能

總結

1、線上策略
在整個比賽過程中,主要的亮點在於建模方式和思考問題的角度。其次,本次比賽的評價指標主要是f1,而f1對於閾值是非常敏感的,所以我們大量工作也是在於如何選取一個較好的閾值,我們提出了一些選取策略,比如閾值搜索,排序,投票,以及根據每天的disk數量的動態閾值方式等等。具體的選取策略可以在代碼中查看。
2、特徵篩選
其次,特徵工程還有一個很重要的方面就是特徵篩選,我們最初是根據隨機森林分類器的特點,得到特徵重要度的排序,去除一些貢獻爲0或者較小的特徵。但是後來發現這種方式不太可取,有些特徵雖然貢獻度小,但是對於模型影響比較大,其次部分特徵可能要和其他特徵組合才能強有效。所以後期我們具體分析了特徵的含義,啓發式地賽選特徵。當然也嘗試了sklearn的一些特徵篩選的算法,但是對於這種大規模的數據不是一個很好的方式。
3、訓練集構建
本次比賽數據還有一個特點就是用全量的數據進行增量的模型訓練效果並不理想,我們採用兩個月的數據隔月驗證的方式是最好的。比如4,5月數據訓練,7月數據進行驗證。這是因爲label的時間維度上跨度爲30天,爲了防止leak,這樣做是必須的。其次,如果將前一個月,比如6月的壞盤數據加入到訓練,反而會讓模型不收斂。原因可能是同一個disk的log好壞區分度不大,如果放在用一個訓練集中,容易讓模型confused而無法收斂。所以比賽的訓練集構建也很構建,具體用哪兩個月的數據集作爲訓練也是個隱藏的上分點。
4、文獻
在比賽過程中查閱了以往大量關於disk預測的文獻,並對裏面的一些方案進行了復現,從這次的比賽中也發現了,很多論文提到的方法,在實際比賽和工業中並不一定適用,由於內存限制或者數據集分佈的差異。而往往簡單粗暴的方法更能達到好的效果。
下面是比賽期間收集的部分論文:

  • [1] Shen, J., Wan, J., Lim, S. J., & Yu, L. (2018). Random-forest-based failure prediction for hard disk drives. International Journal of Distributed Sensor Networks, 14(11). https://doi.org/10.1177/1550147718806480

  • [2] Han, S., Wu, J., Xu, E., He, C., Lee, P. P. C., Qiang, Y., … Li, R. (2019). Robust Data Preprocessing for Machine-Learning-Based Disk Failure Prediction in Cloud Production Environments. Retrieved from http://arxiv.org/abs/1912.09722

  • [3] Zhang, J., Zhou, K., Huang, P., He, X., Xie, M., Cheng, B., … Wang, Y. hu. (2020). Minority Disk Failure Prediction based on Transfer Learning in Large Data Centers of Heterogeneous Disk Systems. IEEE Transactions on Parallel and Distributed Systems. https://doi.org/10.1109/TPDS.2020.2985346

  • [4] Li, J., Stones, R. J., Wang, G., Li, Z., Liu, X., & Xiao, K. (2016). Being Accurate Is Not Enough: New Metrics for Disk Failure Prediction. Proceedings of the IEEE Symposium on Reliable Distributed Systems, 71–80. https://doi.org/10.1109/SRDS.2016.019

  • [5] Kaur, K., & Kaur, K. (2019). Failure prediction, lead time estimation and health degree assessment for hard disk drives using voting based decision trees. Computers, Materials and Continua, 60(3), 913–946. https://doi.org/10.32604/cmc.2019.07675

  • [6] Jiang, T., Zeng, J., Zhou, K., Huang, P., & Yang, T. (2019). Lifelong disk failure prediction via GAN-based anomaly detection. Proceedings - 2019 IEEE International Conference on Computer Design, ICCD 2019, (Iccd), 199–207. https://doi.org/10.1109/ICCD46524.2019.00033

  • [7] Yang, W., Hu, D., Liu, Y., Wang, S., & Jiang, T. (2015). Hard Drive Failure Prediction Using Big Data. Proceedings of the IEEE Symposium on Reliable Distributed Systems, 2016-January, 13–18. https://doi.org/10.1109/SRDSW.2015.15

  • [8] Lu, S., Luo, B., Clara, S., Lu, S., & Luo, B. (2020). Making Disk Failure Predictions SMARTer ! Fast

  • [9] Basak, S., Sengupta, S., & Dubey, A. (2019). Mechanisms for integrated feature normalization and remaining useful life estimation using LSTMs applied to hard-disks. Proceedings - 2019 IEEE International Conference on Smart Computing, SMARTCOMP 2019, 208–216. https://doi.org/10.1109/SMARTCOMP.2019.00055

  • [10] Botezatu, M., Giurgiu, I., Bogojeska, J., & Wiesmann, D. (2016). Predicting disk replacement towards reliable data centers. Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 13-17-August-2016(1), 39–48. https://doi.org/10.1145/2939672.2939699

  • [11] 碩士學位論文 基於在線學習的磁盤故障預測技術. (2018).
    Lewis, B., Smith, I., Fowler, M., & Licato, J. (2017). The robot mafia: A test environment for deceptive robots. 28th Modern Artificial Intelligence and Cognitive Science Conference, MAICS 2017, 189–190. https://doi.org/10.1145/1235

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章