李俊達(dá) 吳昊 毛秋宇 張復(fù)生
摘 要:數(shù)據(jù)質(zhì)量問題會給數(shù)據(jù)分析和挖掘帶來致命的影響,因此需要對存在質(zhì)量問題的數(shù)據(jù)進行清洗。數(shù)據(jù)清洗的方法和策略與具體的數(shù)據(jù)質(zhì)量問題有關(guān),本文以工業(yè)物料系統(tǒng)中的數(shù)據(jù)為實驗對象,提出了一套簡易高效的數(shù)據(jù)清洗流程,將通用的數(shù)據(jù)清洗的方法和策略實現(xiàn)具體化并加以改進。實驗結(jié)果表明,該流程具有良好的應(yīng)用價值。
關(guān)鍵詞:數(shù)據(jù)質(zhì)量;數(shù)據(jù)清洗;工業(yè)物料系統(tǒng)
中圖分類號:TP311.13 文獻標(biāo)識碼:A 文章編號:2096-4706(2018)03-0022-03
The Process of the Data Cleaning Based on Industrial Material System
LI Junda1,WU Hao1,MAO Qiuyu1,ZHANG Fusheng2
(1.School of Computer Science and Technology,Jilin University,Changchun 130012,China;
2.Shanxi Youbai Information Technology Co.,Ltd.,Xian 710065,China)
Abstract:Data quality issues will result in lethal effects of the analysis and excavation of data,so it is needed to clean the data with the problem of data quality. Data cleaning techniques are related to specific data quality issues,this study takes the data of industrial material system as the experimental object,put forward a simple and efficient data cleaning process,externalizes and improves the methods and policies of general data cleaning. The experimental results show that the process has good application value.
Keywords:data quality;data cleaning;industrial material system
0 引 言
在早期建設(shè)的企業(yè)信息化系統(tǒng)中,企業(yè)不同部門一般擁有各自的數(shù)據(jù)庫。由于沒有嚴(yán)格的數(shù)據(jù)模式,即使是描述同一實體的數(shù)據(jù)對象在相同屬性上的值也可能存在不同的表示形式。例如,對“電流互感器”這一實體,在其他數(shù)據(jù)庫中可能表示為“電流互感組件”或者“電流互感器組件”。在統(tǒng)計物料數(shù)量時,如果把同一物料的不同描述當(dāng)作是不同物料,會導(dǎo)致統(tǒng)計數(shù)量少于物料的實際數(shù)量。為了有效利用企業(yè)信息系統(tǒng)來支持決策,需要正確識別出數(shù)據(jù)庫中描述同一實體的元組。另外,早期企業(yè)信息化系統(tǒng)中的數(shù)據(jù)錄入多數(shù)采取人工的方式,會出現(xiàn)大量的異常數(shù)據(jù)。這里的異常數(shù)據(jù)即不一致、無效或數(shù)值缺失的數(shù)據(jù),例如拼寫錯誤、不合法值、空值、沖突、簡寫、重復(fù)等,也稱為“臟數(shù)據(jù)”。
本文從某一國有企業(yè)的工業(yè)物料系統(tǒng)數(shù)據(jù)入手,來進行數(shù)據(jù)清洗。通過檢測數(shù)據(jù)集合中存在的不符合規(guī)范的數(shù)據(jù),并進行數(shù)據(jù)修復(fù),將原數(shù)據(jù)庫的數(shù)據(jù)提取、轉(zhuǎn)換并存儲到新的數(shù)據(jù)庫中,以提高數(shù)據(jù)質(zhì)量。
1 數(shù)據(jù)清洗技術(shù)
1.1 清洗技術(shù)介紹
數(shù)據(jù)清洗的目的是檢測數(shù)據(jù)集合中存在的不符合規(guī)范的數(shù)據(jù),并進行數(shù)據(jù)修復(fù),提高數(shù)據(jù)質(zhì)量[1]。數(shù)據(jù)清洗技術(shù)主要應(yīng)用于數(shù)據(jù)倉庫領(lǐng)域。在數(shù)據(jù)倉庫領(lǐng)域中,數(shù)據(jù)清洗的主要任務(wù)是清洗錯誤和不一致的數(shù)據(jù)。另外,有時候還需要整合和分解數(shù)據(jù)。
1.2 數(shù)據(jù)清洗對象及方法
數(shù)據(jù)質(zhì)量問題通常分為兩種類型,一種類型為模式層存在的問題,而另外一種類型為實例層存在的問題[2]。
本文的研究對象是實例層臟數(shù)據(jù)。在實例層中,研究重點主要集中在數(shù)據(jù)本身的表現(xiàn)形式上,主要包括臟數(shù)據(jù)檢測、重復(fù)數(shù)據(jù)檢測和孤立點檢測三個方面。
臟數(shù)據(jù)檢測、重復(fù)數(shù)據(jù)檢測是實例層數(shù)據(jù)清洗的兩個核心問題[3]。屬性值的臟數(shù)據(jù)檢測主要針對屬性錯誤值和空值兩個方面[4]。屬性錯誤值檢測主要包括統(tǒng)計學(xué)算法和數(shù)據(jù)挖掘算法,如關(guān)聯(lián)規(guī)則、聚類算法。重復(fù)數(shù)據(jù)檢測涉及到實體識別技術(shù),主要包括基于字段以及基于記錄的重復(fù)檢測?;谟涗浀闹貜?fù)檢測算法主要包括排序鄰居算法、優(yōu)先隊列算法[5]。排序鄰居算法對關(guān)鍵字的依賴較強,關(guān)鍵字的選取對算法的結(jié)果影響較大;優(yōu)先隊列算法能夠更好地適應(yīng)更多的數(shù)據(jù)類型,但是匹配閾值的設(shè)置往往需要多次測試才能得到平衡點。
2 數(shù)據(jù)清洗流程
本文設(shè)計的數(shù)據(jù)清洗流程如圖1所示,主要由兩個模塊組成,包括數(shù)據(jù)檢測和數(shù)據(jù)清洗[6]兩個部分。其中,本文系統(tǒng)處理的數(shù)據(jù)源所在的數(shù)據(jù)集來源于文件,而非傳統(tǒng)的數(shù)據(jù)庫中的數(shù)據(jù)集,如圖1所示。
圖1 數(shù)據(jù)清洗流程圖
2.1 數(shù)據(jù)檢測
數(shù)據(jù)檢測模塊的主要功能是確定目標(biāo)數(shù)據(jù)存在的問題,此模塊提供了現(xiàn)成的檢測方法,同時用戶也可以自定義方法[7]。下面是幾個常用的檢測方法。
2.1.1 統(tǒng)計學(xué)方法
較為典型的方法有切比雪夫定理、貝葉斯推理、對數(shù)回歸等?,F(xiàn)實中經(jīng)常用到切比雪夫定理,計算某個字段值的平均值、標(biāo)準(zhǔn)差、取值范圍、空值出現(xiàn)的數(shù)量和頻率、最大值、最小值等。根據(jù)這些統(tǒng)計值和相關(guān)的啟發(fā)式規(guī)則可以發(fā)現(xiàn)數(shù)據(jù)中的異常字段。
2.1.2 模式識別法
此類方法基于數(shù)據(jù)挖掘和機器學(xué)習(xí)算法來查找異常數(shù)據(jù),是把劃分、分類和聚類等技術(shù)組合起來的模式,能發(fā)現(xiàn)相當(dāng)數(shù)量的異常數(shù)據(jù),一個模式被定義為數(shù)據(jù)集中的一組記錄具有P%相似的字段,P是根據(jù)實際情況取的值,通常取90以上。如果把該算法應(yīng)用在根據(jù)領(lǐng)域知識生成記錄的子集,而不是整個數(shù)據(jù)集上,發(fā)現(xiàn)一個模式的機率將會增加。
2.2 數(shù)據(jù)清洗
高效準(zhǔn)確地清洗數(shù)據(jù)是數(shù)據(jù)清洗流程的核心。本模塊針對不同類型的異常數(shù)據(jù)提供不同的清洗策略,主要的清洗策略如下所述。
2.2.1 標(biāo)準(zhǔn)化
此策略主要針對語義定義不一致的數(shù)據(jù),如數(shù)據(jù)類型不一致和計量單位不一致等。當(dāng)對多個不同的數(shù)據(jù)源進行整合數(shù)據(jù)時,數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn)的差異會使數(shù)據(jù)不一致的問題更加突出。針對這一問題,首先應(yīng)該把數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn)化,依據(jù)數(shù)據(jù)定義生成一個替換表,然后對異常數(shù)據(jù)按照相應(yīng)規(guī)則加以清洗,并按照統(tǒng)一后的標(biāo)準(zhǔn)對不一致數(shù)據(jù)進行轉(zhuǎn)換。
2.2.2 錯缺項處理
錯缺項害處大而且處理麻煩,但是在實際情況中卻很常見。合理地填補缺值和修正錯值就顯得尤為重要。常見的處理方法有:(1)使用全局常量填充。例如,某人口表中的兵役狀況,使用“unknown”填充;(2)對某一類屬性值進行簡單計算或推斷后填充錯缺項。常見方法有使用形式值(名詞變量)、平均值(連續(xù)變量)、數(shù)據(jù)的分布特征(統(tǒng)計規(guī)律)等;(3)用其他字段屬性值來推測錯缺值項,比如從公民身份證號可以推斷年齡和地域等。
2.2.3 重復(fù)數(shù)據(jù)處理
數(shù)據(jù)庫中有多條記錄反應(yīng)同一現(xiàn)實實體,這些記錄可能是重復(fù)記錄。重復(fù)記錄清洗一直以來都是數(shù)據(jù)清洗領(lǐng)域里最重要的內(nèi)容,其核心內(nèi)容涉及到兩條記錄對應(yīng)字段屬性值的匹配問題。此流程需要經(jīng)過若干個階段進行處理:第一階段,我們對數(shù)據(jù)集進行預(yù)處理操作,主要工作是為數(shù)據(jù)記錄屬性字段分配權(quán)重;第二階段,對賦予了權(quán)重的屬性字段進行排序,然后對整個文件數(shù)據(jù)集按照屬性權(quán)重大小依次進行排序;第三階段,進行字段匹配以及基于改進的層次聚類算法進行數(shù)據(jù)歸類[8]。下面簡單介紹各個階段的工作內(nèi)容:
第一階段,記錄屬性字段分配權(quán)重。數(shù)據(jù)集的每條記錄由多個屬性組成,每個屬性在記錄中的作用不同。越容易區(qū)分記錄的屬性其分配權(quán)值應(yīng)越大。當(dāng)進行記錄之間的相似度比較時,優(yōu)先檢測屬性權(quán)重較大的字段。
第二階段,按屬性權(quán)重值對文件數(shù)據(jù)集排序。對數(shù)據(jù)記錄字段屬性權(quán)重排序之后,生成數(shù)據(jù)集字段屬性權(quán)重排序序列。為了方便后續(xù)計算記錄相似性,我們選擇按照屬性大小來排序。對最大權(quán)重的屬性優(yōu)先排序,然后再排第二大權(quán)重的屬性,依次進行下去。這樣,最后得到相似記錄聚集的文件數(shù)據(jù)集序列。
第三階段,基于層次聚類算法進行數(shù)據(jù)歸并[9]。對數(shù)據(jù)源文件進行分割,設(shè)定數(shù)據(jù)記錄總條數(shù)為m,每個小數(shù)據(jù)源文件記錄條數(shù)為n,那么就可以劃分為([m/n]+1)個小數(shù)據(jù)源文件。讀取第一個文件對n條記錄進行聚類運算,生成若干個聚類代表項以及所在聚類代表簇。在讀取剩余文件時將記錄與上述聚類代表項進行相似記錄檢測,將其歸并到聚類當(dāng)中或者重新寫入原文件。通過增加每層聚類的閾值,重復(fù)上述步驟,直到達(dá)到合理的閾值。
2.2.4 孤立點的處理
在文件處理的最后會出現(xiàn)一些孤立點數(shù)據(jù)。這些數(shù)據(jù)不符合常規(guī),一般情況下,如果確認(rèn)其為噪聲,可以將其消除??刹捎闷交瑪?shù)據(jù)消除噪聲,根據(jù)平滑規(guī)則將同一箱中的數(shù)據(jù)用相應(yīng)數(shù)據(jù)替換。
3 實驗結(jié)果
本系統(tǒng)在Windows平臺上運行,實驗數(shù)據(jù)來源于某國有企業(yè)提供的物料系統(tǒng)存儲的物料數(shù)據(jù)。對實驗數(shù)據(jù)進行清洗,從實驗結(jié)果中取得部分?jǐn)?shù)據(jù)如下表1所示:
上表中數(shù)據(jù)記錄1和2,3和4,5、6和7分別屬于三個類目。從實驗效果可以看出,系統(tǒng)的清洗效果是良好的。
4 結(jié) 論
本文在研究數(shù)據(jù)清洗方法的基礎(chǔ)上,提出了簡單高效的數(shù)據(jù)清洗流程。首先,對數(shù)據(jù)質(zhì)量問題的內(nèi)容作出了闡述,然后簡要介紹了數(shù)據(jù)清洗技術(shù)、方法和對象。并在此基礎(chǔ)上簡化了數(shù)據(jù)清洗的流程,實現(xiàn)流程的具體化并改進了數(shù)據(jù)清洗的方法和策略,使之能夠?qū)I(yè)物料數(shù)據(jù)進行數(shù)據(jù)處理。本文在很多方面還未能考慮周全,僅僅對清洗流程的主脈絡(luò)進行了刻畫,希望能夠為數(shù)據(jù)清洗領(lǐng)域貢獻一些價值。
參考文獻:
[1] 葉歐,張璟,李軍懷.中文數(shù)據(jù)清洗研究綜述 [J].計算機工程與應(yīng)用,2012,48(14):121-129.
[2] 郭志懋,周傲英.數(shù)據(jù)質(zhì)量和數(shù)據(jù)清洗研究綜述 [J].軟件學(xué)報,2012,13(11):2076-2081.
[3] 陳孟婕.數(shù)據(jù)質(zhì)量管理與數(shù)據(jù)清洗技術(shù)的研究與應(yīng)用 [D].北京郵電大學(xué),2013.
[4] 王銘軍,潘巧明,劉真,陳為.可視數(shù)據(jù)清洗綜述 [J].中國圖象圖形學(xué)報,2015,20(4):0468-0482.
[5] 黎玲利.實體識別關(guān)鍵技術(shù)的研究 [D].哈爾濱工業(yè)大學(xué),2015.
[6] 武小平,左春.基于工作流程的數(shù)據(jù)清洗系統(tǒng) [J].計算機工程與設(shè)計,2008,29(8):1878-1880.
[7] 包從劍,李星毅,施化吉.可擴展和可交互的數(shù)據(jù)清洗系統(tǒng) [J].計算機技術(shù)與發(fā)展,2007,17(7):84-90.
[8] 楊東華,李寧寧,王宏志,等.基于任務(wù)合并的并行大數(shù)據(jù)清洗過程優(yōu)化 [J].計算機學(xué)報,2016,39(1):97-108.
[9] 劉芳,何飛.基于聚類分析技術(shù)的數(shù)據(jù)清洗研究 [J].計算機工程與科學(xué),2005,27(6):71-77.
[10] 包從劍.數(shù)據(jù)清洗的若干關(guān)鍵技術(shù)研究 [D].江蘇大學(xué),2007.
[11] 王雪英.離群點預(yù)處理及檢測算法研究 [D].西南交通大學(xué),2009.
[12] 鄧莎莎,陳松喬.基于異構(gòu)數(shù)據(jù)抽取清洗模型的元數(shù)據(jù)的研究 [J].計算機工程與應(yīng)用,2004(30):175-177.
作者簡介:李俊達(dá)(1998.04-),男,漢族,山東臨沂人,本科在讀。研究方向:計算機科學(xué)與技術(shù)。