張蕓 宋雙



【摘要】? ? 在實際數據中,由于人為、設備等原因,不可避免的會出現數據缺失問題。針對缺失值的處理方法一是刪除,二是填充。若數據缺失較少,刪除存在缺失值的樣本不失為一個快速簡單的方法,但若缺失值較多,大量刪除樣本就會損失掉重要信息,不利于模型的建立,預測效果也會不理想。本文從非完備數據出發,采用SimpleImputer、KNNImputer、IterativeImputer三種方法來填充缺失的數據,建立寬帶客戶流失隨機森林分類模型,經過對比分析得出IterativeImputer方法補充缺失值分類效果更好的結論。
【關鍵詞】? ? 缺失值填充? ? 隨機森林
引言:
在大數據的時代,雖然有海量的數據,但是數據也存在嚴重的缺失情況。缺失值(missing data)是指單元格中應有而未能記錄的數據。數據缺失通常分為三種:完全隨機缺失、隨機缺失、非隨機缺失。當我們所用數據的重要信息存在缺失情況時,就要對其進行填充。由于填充的數據非真實數據,因此會對分析結果產生一定的影響。若能找到一種合適的數據填充方法,使得填充的數據與真實值更接近,就能大大提高數據分析的效果。
本文首先介紹三種缺失值填充的方法,分別是SimpleImputer、KNNImputer、IterativeImputer。然后在電信寬帶客戶數據集上分別用三種缺失值填充的方法對缺失值進行填充,最后建立寬帶客戶流失的隨機森林分類模型。通過對比直接刪掉缺失值以及三種缺失值填充方法,分析得到填充缺失值是否對模型分類效果有提高,以及哪種缺失值補充方法最好。
一、缺失值填充方法
數據缺失已經成為一種不可避免的現象。針對分類問題,如果某一特征對分類結果影響很小或無影響,那么該特征可以直接刪除;若某一特征對分類結果存在很大的影響,且缺失值占總樣本的比例適中,就可以進行數據填充。基于此,許多學者研究該如何進行數據填充,才能使填充的數據更加接近真實值。
國外學者對缺失值填補的研究要早于國內,最早關于缺失值的相關研究可以追溯到1976年Rubin[1]對數據缺失三大機制的定義。近期,Gerhard等[2]提出了基于KNN的插補方法,將KNN算法中的鄰居改為按照距離進行加權。Lei等人[3]利用多視圖矩陣完備的方法對缺失值進行插補,Zhang 等人[4]基于鏈式法則對缺失值進行填充,Verma 等人[5]利用 LSTM 對缺失值進行處理等。
1.1 SimpleImputer
SimpleImputer缺失值填充方法是除了刪掉缺失值以外最簡單的一種方法,包含了四種最常用的填充方式,分別是均值填充、中位數填充、眾數填充和常數填充。該方法可以在sklearn中直接調用。
1.2 KNNImputer
KNNImputer方法的思想是找到數據空間中距離最近的K個樣本,然后通過這K個樣本來估計缺失數據點的值。缺失值可以用K個相鄰樣本點的均值、中位數、眾數或者常數進行填充。KNNImputer預測的步驟是選擇其他不存在缺失值的列,同時去除需要預測缺失值的列、存在缺失值的行,然后計算歐氏距離找到K個近鄰點。如果是離散的缺失值,則使用KNN分類器,投票選出K個鄰居中最多的類別進行填補;如果是連續的變量,則用KNN回歸器,使用K個鄰居的平均值進行填補。
1.3 IterativeImputer
IterativeImputer采用的是回歸的思想通過無缺失的數據建立回歸模型,來預測缺失的數據。具體步驟為:將每個缺失值設為y,不含缺失值的特征設為x,構建x和y的函數。通過循環迭代方式,使用一個回歸模型在已知y(未缺失)的樣本上對(X,y)進行擬合。然后使用這個回歸模型來預測缺失的y值。以迭代的方式遍歷每個有缺失值的特征,然后重復n輪,最后一輪的計算結果被返回。
二、實驗過程及結果
基于以上介紹的三種缺失值填充方法,本文將這三種方法應用在電信寬帶客戶數據上,首先對客戶流失數據進行預處理,選出有重要影響的特征,然后對存在缺失值的特征用三種方法分別進行缺失值填充,建立隨機森林分類模型,最后通過評價指標得出結論。
2.1 數據預處理
本文選取云南省某公司某月的寬帶客戶數據作為研究數。因為并不是所有特征都對客戶是否流失都有顯著的影響,所以需要進行特征選擇。特征分為兩類,一類是分類特征,一類是數值型特征。
針對分類特征,分別畫出特征在正負樣本上的餅圖,觀察其是否有顯著的差異,若某特征在正負樣本上的差異超過10%,則認為該特征對客戶是否流失有顯著的影響,否則認為無影響。針對數值型特征,分別畫出特征在正負樣本上的箱線圖,若箱線圖有明顯的差異,則認為該數值型特征對客戶是否流失有顯著的影響,否則認為無影響。
2.2 建立缺失值補充模型
數據預處理后,發現電信寬帶客戶數據中AVG_IPTV_ACTIVE_CNT(近3月月均IPTV活躍天數)、FLUX_MAX_TIME_PROP(流量使用峰值時段占全天流量占比)這兩個特征對客戶流失有重要影響,且這兩個特征存在缺失值,通過SimpleImputer、KNNImputer、IterativeImputer這三種方法分別對缺失值進行填充,最后得到了完備的電信寬帶客戶數據。
2.3 隨機森林
本文選用隨機森林作為分類模型。隨機森林就是集成學習思想下的產物,將許多棵決策樹整合成森林,并合起來用來預測最終結果。首先,用bootstrap方法生成m個訓練集,然后,對于每個訓練集,構造一顆決策樹,在節點找特征進行分裂的時候,并不是對所有特征都能找到使得指標(如信息增益)最大的,而是在特征中隨機抽取一部分特征,在抽到的特征中間找到最優解,應用于節點,進行分裂。隨機森林實際上對樣本和特征都進行了采樣(如果把訓練數據看成矩陣,那么就是一個行和列都進行采樣的過程),這樣可以避免過擬合。
2.4 評價指標
本文選用的指標為精確率(precision)、召回率(recall)、F1-score。
2.5 實驗結果及分析
此樣本為極度不平衡數據,而基于現實問題,我們更關注模型對少數類樣本的預測能力,由于負樣本(多數類樣本)的效果都挺好,此處就不進行展示,表中數據為正樣本(少數類樣本)的結果。
2.5.1 SimpleImputer
從表1的實驗數據可以看出負樣本的各項指標均高于正樣本的各項指標。SimpleImputer的三種數據填充方法均比直接刪掉缺失值的效果好,召回率提高了0.8-0.9,雖然精度下降了0.13-0.14,但是綜合指標提高了0.5-0.6。總的來說SimpleImputer數據填充方法是有效果的。
從上表的數據可以看出KNNImputer數據填充方法和SimpleImputer的效果差不多,都比直接刪掉缺失值的效果好。
2.5.3 IterativeImputer
從上表的實驗數據可以看出IterativeImputer數據填充方法是三種方法中效果最好的,精確率值比直接刪掉缺失值只降低了0.01,比SimpleImputer和KNNImputer方法提高了0.03-0.05,召回率提高到了0.54,比直接刪掉缺失值提高了0.11,比其他兩種數據填充方法提高了0.02-0.03,綜合指標F1-score比直接刪掉缺失值提高了0.09,比其他兩種方法提高了0.03-0.04。
三、結束語
數據的質量影響著模型的效果,既然數據缺失不可避免,我們可以力所能及的補充缺失的數據。上述實驗結果證明了補充缺失數據建立的模型要優于直接刪掉缺失值的模型,其中IterativeImputer數據補充方法最好,綜合指標F1-score值達到了0.68,提高了隨機森林模型的預測效果。還有諸多從不同個角度研究補充缺失值的方法,后續可以繼續閱讀相關論文,嘗試其他補充缺失值的方法,看能否進一步的提高模型的效果。
參? 考? 文? 獻
[1] RUBIN D B. Inference and? Missing Data[J].Biometrika,1976,63(3):581-592.DOI:10.1093/biomet/63.3.581.
[2] Tutz G,Ramzan S.Improved methods for the imputation of missing data by nearest neighbor method [J] . Computationl Statistics & Data Analysis, 2015,90(C):84-99.
[3] ZHANG L, ZHAO Y, ZHU Z, et? al. Multi-View Missing Data Completion[J]. IEEE Transactions on Knowledge and? Data Engineering, 2018, 30(7):? 1296–1309.? DOI:10.1109/TKDE.2018.2791607.
[4] ZHANG Z.Multiple? Imputation with Multivariate Imputation by Chained Equation (MICE) Package [J]. Annals of Translational Medicine,2016,4(2):1-5. Doi:10.3978/j.issn.2305-5839.2015.12.63
[5] VERMA H, KUMAR S. An? Accurate Missing Data Prediction Method Using LSTM Based Deep Learning for? Health Care[C]//Proceedings of the 20th International Conference on Distributed? Computing and Networking. . DOI:10.1145/3288599.3295580.