劉 海,徐旭平,周 蔚,張振中
(1.國家林業和草原局華東調查規劃設計院,浙江 杭州 340019;2.安慶師范大學 計算機與信息學院,安徽 安慶 246133)
隨著社會高速發展,人們逐步跨入數據爆炸式增長的信息時代。數據準確無誤才能真實地反映現實狀況,而真實世界中臟數據無處不在,數據不正確或者不一致等問題嚴重影響數據分析的結果[1]。數據清洗技術在數據分析與管理的過程中起到越來越大的作用。以林業行業為切入點,研究基于分類、聚類算法的數據清洗方法在林業樣地數據上的應用,對林業信息數據處理與使用過程中遇到的林業臟數據問題做出了一定的探索。
數據質量是指數據在應用中數據來源的可信程度,主要是指在正確的地點和時間,能將正確的數據提供給正確的業務人員,并能以此做出正確的決策[2]。目前學術界尚未有通用的數據質量定義,但可以從文獻中提煉出數據質量的5個重要指標[4]:一是數據準確性,指數據是否被準確地記錄。林業樣地數據的準確性一般受外業調查是否出現差錯和內業處理過程中是否產生錯誤的影響。二是數據完整性,指數據是否覆蓋到所有與主體問題相關的方面。數據的完整性越高,數據價值越容易被挖掘,數椐越容易利用。林業樣地數據一般包含了地類、地形、植被類型、樹種、胸徑、樹高、土壤等諸多因子,完整的多因子數據更有利于體現數據質量。三是數據唯一性,指相同的數據是否只記錄了一次。同一個實體數據的重復記錄會影響數據質量,導致統計分析的結果或者數據挖掘結果與實際產生偏差。四是數據時效性,指數據的時間是否處于有效時間范圍內。相對而言,現有林業行業的調查時效性受多方面因素制約,尺度范圍相對較大,基本是以年為單位,但是如果樣地調查,如森林資源連續清查的時間連續性遭到破壞,那么數據的質量則會大打折扣。五是數據一致性,指數據是否與自身發生沖突。林業數據的一致性較差,會導致在構建模型參數時產生較大偏差,從而使得數據分析結果不夠準確。林業臟數據常見的類型及出現的原因如表1所示。
數據清洗譯自外文Data cleaning,在部分數據清洗的文獻資料中也有用Data cleansing 或者Data scrubbing來表示,主要表示清除錯誤和不一致數據的過程,并需要解決孤立點和元組重復問題[4]。數據清洗并不是僅僅對臟數據進行檢測和修正,還涉及在屬性維度以及數據層面的整合與分解,其主要應用在3個領域,分別是數據倉庫、知識發現(數據挖掘)和數據信息質量管理。

表1 林業臟數據常見的類型、來源及舉例
數據清洗算法主要是面向異常記錄檢測、重復記錄檢測等實例層的問題[5],采用統計學方法、數據挖掘與模式識別及預定義清洗規則[6]等方式,對數據進行清洗。
(1)面向異常記錄檢測的數據清洗算法。面向異常記錄檢測的統計學方法是將數據中的屬性看作是隨機變量,擬合建立數據模型,分析變量間關系,對數據進行評估與預測。其中,最常見的是卡方檢驗和回歸分析。卡方檢驗是一種常見的非參數假設檢驗方法,主要是對兩個分類變量之間的相關程度進行關聯性分析,比較統計理論頻數和實際頻數的擬合程度,其計算公式為:
(1)
式中,Ai為i水平的觀察頻數;Ei為i水平的期望頻數;n為總頻數;pi為i水平的期望頻率。
回歸分析是一種確定兩個及其以上變量間相互依賴關系的定量統計分析方法,按照自變量和因變量之間的關系,可分為線性回歸分析和非線性回歸分析,常用的回歸分析有多元線性回歸、邏輯回歸、逐步回歸等。面向異常記錄檢測的數據挖掘與模式識別方法,主要采用聚類和分類的思想,發現數據集中不符合現存模式的異常數據。
聚類的方法主要是在不確定類別的情況下,利用數據的相似度將數據聚合成不同的類別,剔除異常數據。常用的聚類方法主要是基于距離、密度、連通性、概念4個層面的相似度進行聚類,其中較為常見的是基于距離和密度的分類方法,如K均值(K-means)算法、均值漂移(Meanshift)算法、基于密度聚類(DBSCAN)算法、基于高斯混合模型的最大期望(GMMs)算法等。
K-means算法首先選取一些數據組,隨機初始化得到各自的中心點,然后計算每個數據點到中心點的距離,數據點距離哪個中心點最近就劃分到哪一類,再計算每一類中心點作為新的中心點,重復迭代,得到最終的聚類。值得注意的是在隨機初始化中心點的時候,可以采用多次隨機,選取迭代最優的結果。K-means算法的優勢在于相對較為簡單,因此運算也較快,單局限性在于需要事先確定類別的數量。
Meanshift算法是基于質心的圓形滑動窗口算法,通過將中心點的候選點不斷更新為滑動窗口內點的均值來完成,然后對這些候選窗口保留最多點進行相似窗口進行去除,最終形成中心點集及相應的聚類。Meanshift算法的優勢在于可以不需要事先確定類別的數量,但是需要確定滑動窗口的半徑,如果經驗不足,也會存在一定的盲目性。
DBSCAN算法是首先確定半徑和臨界值,然后從任意一個沒有被訪問過的數據點開始,判斷以這個點為中心的圓內是否包含的點的數量大于或等于臨界值,如果大于或等于臨界值則該點被標記為中心點,反之則會被標記為噪聲點,然后重復,如果一個噪聲點存在于某個中心點的圓內,則這個點被標記為邊緣點,反之仍為噪聲點,直到所有的點都被遍歷。DBSCAN算法與Meanshift算法一樣,也不需要知道類別的數量,但更需要經驗和一定的嘗試去尋找更優的半徑和臨界值。
GMMs算法的前提是假設數據點是呈高斯分布的,采用均值和標準差來作為分布參數,因此多采用EM最大期望算法做優化,其步驟與K-means算法類似,只不過是將距離換成均值和標準差。GMMs算法由于滿足高斯分布,因此聚類形成的就不單單是圓,而是橢圓,而且得到的數據聚類是混合的,也就是一個數據可以對應多個類,以概率的形式進行展示,如“數據i,80%屬于A類,20%屬于B類”。
分類的方法主要是在已知確定類別的情況下,尋找數據內部的關系,分成相應的類別,剔除孤立數據,也就是臟數據。常用的分類方法有樸素貝葉斯分類(NBC)算法、支持向量機(SVM)算法、決策樹(包括ID3、C4.5、C5.0、CART)算法、隨機森林算法、K近鄰(KNN)算法、人工神經網絡(ANN)算法等。NBC算法是基于貝葉斯原理的一種后驗算法,假設每個輸入變量是獨立的,即對于樣本集D,特征集X={x1,x2,…,xd}相互獨立且隨機,則對于分類集Y,由貝葉斯公式:
(2)
進行分類計算。顯然NBC算法邏輯簡單,運行速度快,但是由于對輸入變量要求相對較高,實際應用中特征集屬性之間相關性很難完全避免,因此,往往只適用于一些特定的環境中。
SVM算法是一種有監督的機器學習算法,首先建立一個超平面:
ωTX+b=0,
(3)
以Y=±1為邊界,上間隔邊界上方的樣本屬于正類,在下間隔邊界下方的樣本屬于負類,然后利用邊距可以構建目標函數,并求解:
(4)
式中,m為約束條件數量;n為記錄數。
SVM算法的求解可以使用二次凸優化問題的數值方法,例如內點法和序列最小優化算法,在擁有充足學習樣本時也可使用隨機梯度下降。SVM算法通過映射可以解決高維和非線性問題,因此在小數據集的情況下分類效果一般較好,但是面對大數據集,訓練相對困難,而且主要面向二分類問題,多分類需要另作處理,相對麻煩。
決策樹算法是一種有監督的機器學習算法,其基本思想首先是從根節點開始,對實例的某一特征值進行測試,然后根據測試結果將實例分配到其子節點,此時每個子節點都對應著該特征的一個取值,如此遞歸地對實例進行測試并分配,直到到達葉節點,最后實例就被完全分到葉節點的類中。其中,ID3算法的核心是在決策樹各個結點上采用對應信息增益作為選擇特征的選擇,遞歸地構建決策樹;C4.5算法則將信息增益比作為選擇特征的標準;C5.0 則是在此基礎上,引入Boosting 技術以提高分類的效率和精度;CART算法相對特別,確定樹型為二叉樹,采用最小二乘法,以基尼系數替代熵。決策樹算法總體上相對直觀,可視化效果好,可以解決多分類問題,但是可能受數據影響較大,出現過擬合化,即便通過修剪,結果可能也不夠穩定。
隨機森林算法可以看作是決策樹算法的一個升級,不僅對樣本進行了重采樣,而且對特征也進行了隨機選取,形成多棵樹,再通過投票的方式決定數據分類。顯然隨機森林算法的抗過擬合化和穩定性都比決策樹算法大大提高,但是相應的時間復雜度和計算成本也提高了,對數據依賴性較強的問題沒有得到根本性的改善。
KNN算法與K-means算法類似,是一種主要依靠測量特征值之間的距離來進行分類的方法,首先計算已知類別數據集中的點與當前點之間的距離,然后按照距離遞增次序排序,再選取與當前點距離最小的k個點,接著確定前k個點所在類別的出現頻率,最后返回前k個點所出現頻率最高的類別作為當前點的預測分類。KNN算法的精度相對較高,對數據依賴性相對較弱,但是計算成本相對較高,可解釋性相對較差。
ANN算法是一種仿生物神經元結構的機器學習訓練算法,由多個輸入組成一個輸入層,然后經由多層的隱層神經網絡,最終得到唯一的輸出層,其中最主要的環節就是構建隱層神經網絡,主要通過線性映射及相應權重,加上隱層里傳遞的激活函數如sigmoid函數、tanh函數、relu函數等,如果是bp神經網絡,增加一個反向傳遞,修正誤差。ANN算法又可根據隱層的深淺,劃分為淺層神經網絡SNN和深層神經網絡DNN。DNN里又可以引入卷積的方法,形成了卷積神經網絡CNN,對圖像及語音數據有較好的分類效果,并且大大降低了DNN的計算成本;當需要引入時間序列時,即在隱層里也有輸出,形成循環神經網絡RNN。ANN算法分類精度相對較高,對復雜的線性與非線性問題都可以有較好的魯棒性和容錯性,但所需樣本量要求相對較高,網絡結構、權重參數、閾值等訓練過程對經驗有一定要求,否則,可能耗費大量時間在調參過程上,使得計算時間進一步增加。
(2)面向重復記錄檢測的數據清洗算法。面向重復記錄檢測的數據清洗算法,思路相對簡單,一類是直接字段匹配的算法,也可以加入遞歸的思路,處理子串順序顛倒及縮寫等的匹配,優勢在于直觀精準,但是相對時間復雜度較高;一類是基于文本的關鍵字匹配或者相似度匹配,如基于編輯距離的字段匹配算法、Cosine 相似度函數等[7]。林業樣地數據中大多文本字段不存在數據清洗問題,因此研究不展開討論。
林業樣地數據一般是由外業調查得到,并且有數十上百個因子,其中最常見的臟數據是樹種因子和胸徑、樹高、蓄積等測樹因子兩類因子出現錯誤或者缺漏。當數據出現錯誤時,數據清洗問題轉化為聚類分類問題;當數據出現缺漏時,數據清洗問題轉化為預測擬合問題。
研究選取了安徽省2019年9個區縣785個林業樣地的數據,通過spss modeler軟件進行處理和計算。首先采用分類的思想,以地形和樹種為分類變量,以實地測樹因子及激光雷達遙感測樹因子共100個自變量,活立木蓄積量為目標變量,使用自適應閾值。由于林業樣地數據中對樣木的蓄積量有條件約束,因此不能保證滿足相互獨立且隨機,因此NBC算法并不合適;分類變量為多分類,因此SVM算法也不適用;隨機森林算法作為決策樹算法的一種升級,因此在本次研究過程中,分別運用多元線性回歸、隨機森林算法、ANN算法,對數據進行清洗,清洗結果如圖1所示。
其中三種方法清洗出的異常數據有55個為完全重復,僅有一個方法清洗出去的個數分別為7、2、2,經過人工檢測,其中分別有6、1、2個為異常數據。從分類擬合決定系數角度來看,相較于原始數據均有較高的提升;從算法計算時間角度比較,分別是0.57 s,4.5 s,211 s。提升效果與計算時間呈正相關性,在樣地數據量不大的情況下,計算時間在生產應用中都可以接受。從實驗結果上看,ANN算法剔除異常數據最為準確,但由于算法穩定性較好,對數據敏感度一般,所以可能出現剔除不夠完全的現象,而且在實際應用過程中,調試算法參數也耗費了大量時間;隨機森林算法剔除數據也較為準確,由于是自行重采樣,因此調試算法參數時間相對較少,但剔除不夠完全的現象相對較多;多元線性回歸算法需要調整參數最少,計算時間也最短,所以總用時也最少,計算方便,結果直觀,但從決定系數的提升效果來看,如果樣本量大大提高,可能錯檢現象會增多。因此在具體生產實際中,應根據數據量大小、總耗時及精度要求的不同,酌情選取相應的算法。

圖1 多種分類數據清洗算法數據量和決定系數的變化

圖2 不同類別數聚類數據清洗算法剔除異常數據的變化
同樣的數據,采用聚類的思想,自變量、目標變量不變。對于林業樣地數據來說,聚類的半徑和臨界值相對于類別數目來說更難確定,所以Meanshift算法和DBSCAN算法相對不適宜采用;而GMMs算法除了對類別數需要確定以外,還需要對類別的比例進行確定,并且算法可以提供的混合聚類的優勢,在這一情況下沒有明顯作用,因此研究采用K-means算法,將類別數范圍設定為5~15,以2%為最小異常指數,剔除的異常數據如圖2所示。由圖2可以看出,聚類算法中,類別數對數據清洗的影響還是比較明顯的,從數據清洗的質量上來說,整體上剔除的異常數據90%以上均為合理的,單次計算運行時間差異不大,均在100 s以內。聚類算法的優勢在于可以不確定具體的類別,在樣地數據殘缺或者數據異常情況比較嚴重的時候效果會更加顯著,對樣本數據進行了整體把控之后,設定類別數范圍,就可以進行有效的數據清洗了,但是如果對樣本數據整體情況了解不足,類別數量的設定不合理,數據清洗結果將大打折扣。當類別非常明確時,聚類算法可以作為分類算法的一種有效驗證。
研究主要介紹了數據清洗的相關概念和算法,并以此為基礎,對林業樣地數據進行數據清洗的應用,效果相對較好,可以大大減輕人工成本。在應用過程中可以看出,算法和經驗參數均對清洗結果均有影響,因此在流程化處理林業數據清洗問題時,在不同的場景下應合理選擇相應的算法,并且需要對經驗參數、算法優化上有更為深層的研究以提升應用效率。大數據和多源數據使用場景日益增多,相關領域研究及其應用前景廣泛。