1.數據質量分析函數
數據質量分析是數據挖掘中數據準備過程的重要一環,是數據預處理的前提,也是數據挖掘分析結論有效性和準確性的基礎,沒有可信的數據,數據挖掘構建的模型將是空中樓閣。spa
數據質量分析的主要任務是檢查原始數據中是否存在髒數據,髒數據通常是指不符合要求,以及不能直接進行相應分析的數據。在常見的數據挖掘工做中,髒數據包括:3d
(1)缺失值;
(2)異常值;
(3)不一致的值;
(4)重複數據及含有特殊符號(如#、¥、*)的數據。code
1.1缺失值分析對象
數據的缺失主要包括記錄的缺失和記錄中某個字段信息的缺失,二者都會形成分析結果的不許確,如下從缺失值產生的緣由及影響等方面展開分析。blog
(1)缺失值產生的緣由
1)有些信息暫時沒法獲取,或者獲取信息的代價太大。
2)有些信息是被遺漏的。多是由於輸入時認爲不重要、忘記填寫或對數據理解錯誤等一些人爲因素而遺漏,也多是因爲數據採集設備的故障、存儲介質的故障、傳輸媒體的故障等非人爲緣由而丟失。
3)屬性值不存在。在某些狀況下,缺失值並不意味着數據有錯誤。對一些對象來講某些屬性值是不存在的,如一個未婚者的配偶姓名、一個兒童的固定收入等。
(2)缺失值的影響
1)數據挖掘建模將丟失大量的有用信息。
2)數據挖掘模型所表現出的不肯定性更加顯著,模型中蘊含的規律更難把握。排序
3)包含空值的數據會使建模過程陷入混亂,致使不可靠的輸出。事件
(3)缺失值的分析
使用簡單的統計分析,能夠獲得含有缺失值的屬性的個數,以及每一個屬性的未缺失數、缺失數與缺失率等。數據分析
1.2異常值分析產品
異常值分析是檢驗數據是否有錄入錯誤以及含有不合常理的數據。忽視異常值的存在是十分危險的,不加剔除地把異常值包括進數據的計算分析過程當中,會給結果帶來不良影響;重視異常值的出現,分析其產生的緣由,經常成爲發現問題進而改進決策的契機。異常值是指樣本中的個別值,其數值明顯偏離其他的觀測值。異常值也稱爲離羣點,異常值的分析也稱爲離羣點分析。
(1)簡單統計量分析
能夠先對變量作一個描述性統計,進而查看哪些數據是不合理的。最經常使用的統計量是最大值和最小值,用來判斷這個變量的取值是否超出了合理的範圍。例如,客戶年齡的最大值爲199歲,則該變量的取值存在異常。
(2)3σ原則
若是數據服從正態分佈,在3σ原則下,異常值被定義爲一組測定值中與平均值的誤差超過三倍標準差的值。在正態分佈的假設下,距離平均值3σ以外的值出現的機率爲P(|x-μ|>3σ)≤0.003,屬於極個別的小几率事件。若是數據不服從正態分佈,也能夠用遠離平均值的多少倍標準差來描述。
(3)箱形圖分析
箱形圖提供了識別異常值的一個標準:異常值一般被定義爲小於QL-1.5IQR或大於QU+1.5IQR的值。QL稱爲下四分位數,表示所有觀察值中有四分之一的數據取值比它小;QU稱爲上四分位數,表示所有觀察值中有四分之一的數據取值比它大;IQR稱爲四分位數間距,是上四分位數QU與下四分位數QL之差,其間包含了所有觀察值的一半。箱形圖判斷異常值的標準以四分位數和四分位距爲基礎,四分位數具備必定的魯棒性:多達25%的數據能夠變得任意遠而不會很大地擾動四分位數,因此異常值不能對這個標準施加影響。因而可知,箱形圖識別異常值的結果比較客觀,在識別異常值方面有必定的優越性,如圖所示。
在日常的數據分析過程當中能夠發現,可能其中有部分數據是缺失的,可是若是數據記錄和屬性較多,使用人工分辨的方法就很不切合實際,因此這裏須要編寫程序來檢測出含有缺失值的記錄和屬性以及缺失率個數和缺失率等。同時,也可以使用箱形圖來檢測異常值。R語言檢測代碼以下所示。
# 設置工做空間 # 把「數據及程序」文件夾拷貝到F盤下,再用setwd設置工做空間 setwd("F:/數據及程序/chapter3/示例程序") # 讀入數據 saledata <- read.csv(file = "./data/catering_sale.csv", header = TRUE) # 缺失值檢測 並打印結果,因爲R把TRUE和FALSE分別看成一、0,能夠用sum()和mean()函數來分別獲取缺失樣本數、缺失比例 sum(complete.cases(saledata)) sum(!complete.cases(saledata)) mean(!complete.cases(saledata)) saledata[!complete.cases(saledata), ] # 異常值檢測箱線圖 sp <- boxplot(saledata$"銷量", boxwex = 0.7) title("銷量異常值檢測箱線圖") xi <- 1.1 sd.s <- sd(saledata[complete.cases(saledata), ]$"銷量") mn.s <- mean(saledata[complete.cases(saledata), ]$"銷量") points(xi, mn.s, col = "red", pch = 18) arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1) text(rep(c(1.05, 1.05, 0.95, 0.95), length = length(sp$out)), labels = sp$out[order(sp$out)], sp$out[order(sp$out)] + rep(c(150, -150, 150, -150), length = length(sp$out)), col = "red")
該代碼以某餐廳的日銷量額數據做爲樣本數據,數據示例以下:
運行上面的程序,獲得如下結果:
能夠看到缺失值個數輸出結果爲「1」,佔樣本總量的0.497%,缺失值位於第15行,2015年2月14日銷量缺失。分析箱形圖能夠看出,箭頭所示的是一個標準差的區間。能夠看出箱形圖中超過上下界的8個銷售額數據可能爲異常值。結合具體業務能夠把86五、4060.三、4065.2歸爲正常值,將60、2二、5一、6607.四、9106.44歸爲異常值。
1.3一致性分析
數據不一致性是指數據的矛盾性、不相容性。直接對不一致的數據進行挖掘,可能會產生與實際相違背的挖掘結果。在數據挖掘過程當中,不一致數據的產生主要發生在數據集成的過程當中,多是由被挖掘數據來自於不一樣的數據源、對於重複存放的數據未能進行一致性更新形成的。例如,兩張表中都存儲了用戶的電話號碼,但在用戶的電話號碼發生改變時只更新了一張表中的數據,那麼這兩張表中就有了不一致的數據。
2.數據特徵分析
對數據進行質量分析之後,接下來可經過繪製圖表、計算某些特徵量等手段進行數據的特徵分析。
2.1分佈分析
分佈分析能揭示數據的分佈特徵和分佈類型。對於定量數據,欲瞭解其分佈形式是對稱的仍是非對稱的、發現某些特大或特小的可疑值,可作出頻率分佈表、繪製頻率分佈直方圖、繪製莖葉圖進行直觀地分析;對於定性數據,可用餅形圖和條形圖直觀地顯示分佈狀況。
2.1.1.定量數據的分佈分析
對於定量變量,選擇「組數」和「組寬」是作頻率分佈分析時最主要的問題,通常按照如下步驟:
1)求極差;
2)決定組距與組數;
3)決定分點;
4)列出頻率分佈表;
5)繪製頻率分佈直方圖。
遵循的主要原則有:
1)各組之間必須是相互排斥的;
2)各組必須將全部的數據包含在內;
3)各組的組寬最好相等。
下面結合具體實例運用分佈分析對定量數據進行特徵分析:
下表是描述菜品撈起生魚片在2014年第二個季度的銷售數據,繪製銷售量的頻率分佈表、頻率分佈圖,對該定量數據作出相應的分析。
(1)求極差
極差=最大值-最小值=3960-45=3915(元)
(2)決定組距與組數
這裏根據業務數據的含義,可取組距爲500。
組數=極差/組距=3915/500=7.83=>8
(3)決定分點
分佈區間以下表所示。
(4)列出頻率分佈表
根據分組區間獲得以下表所示的頻率分佈表。其中,第1列將數據所在的範圍分紅若干組段,其中第1個組段要包括最小值,最後一個組段要包括最大值。習慣上將各組段設爲左閉右開的半開區間,如第1個分組爲[0,500)。第2列組中值是各組段的表明值,由本組段的上、下限相加除以2獲得。第3列和第4列分別爲頻數和頻率。第5列是累計頻率,是否須要計算該列視狀況而定。
(5)繪製頻率分佈直方圖
若以2014年第二季度撈起生魚片天天的銷售額爲橫軸,以各組段的頻率密度(頻率與組距之比)爲縱軸,上表的數據可繪製成頻率分佈直方圖,如圖所示。
2.1.2.定性數據的分佈分析
對於定性變量,經常根據變量的分類類型來分組,能夠採用餅形圖和條形圖來描述定性變量的分佈。餅形圖的每個扇形部分表明每一類型的百分比或頻數,根據定性變量的類型數目將餅形圖分紅幾個部分,每一部分的大小與每一類型的頻數成正比;條形圖的高度表明每一類型的百分比或頻數,條形圖的寬度沒有意義。
圖1和圖2是菜品A、B、C在某段時間的銷售量分佈圖。
圖1 菜品銷售量分佈(餅形圖)
圖2 菜品銷售量分佈(條形圖)
2.2對比分析
對比分析是指把兩個相互聯繫的指標進行比較,從數量上展現和說明研究對象規模的大小,水平的高低,速度的快慢,以及各類關係是否協調。特別適用於指標間的橫縱向比較、時間序列的比較分析。在對比分析中,選擇合適的對比標準是十分關鍵的步驟,選擇合適,才能作出客觀的評價,選擇不合適,評價可能得出錯誤的結論。
對比分析主要有如下兩種形式:
(1)絕對數比較
它是利用絕對數進行對比,從而尋找差別的一種方法。
(2)相對數比較
它是由兩個有聯繫的指標對比計算的,用以反映客觀現象之間數量聯繫程度的綜合指標,其數值表現爲相對數。因爲研究目的和對比基礎不一樣,相對數能夠分爲如下幾種:
1)結構相對數:將同一整體內的部分數值與所有數值對比求得比重,用以說明事物的性質、結構或質量。例如,居民食品支出額佔消費支出總額比重、產品合格率等。
2)比例相對數:將同一整體內不一樣部分的數值對比,代表整體內各部分的比例關係,如人口性別比例、投資與消費比例等。
3)比較相對數:將同一時期兩個性質相同的指標數值對比,說明同類現象在不一樣空間條件下的數量對比關係。例如,不一樣地區商品價格對比,不一樣行業、不一樣企業間某項指標對比等。
4)強度相對數:將兩個性質不一樣但有必定聯繫的總量指標對比,用以說明現象的強度、密度和廣泛程度。例如,人均國內生產總值用「元/人」表示,人口密度用「人/平方千米」表示,也有用百分數或千分數表示的,如人口出生率用‰表示。
5)計劃完成程度相對數:是某一時期實際完成數與計劃數對比,用以說明計劃完成程度。
6)動態相對數:將同一現象在不一樣時期的指標數值對比,用以說明發展方向和變化的速度,如發展速度、增加速度等。
2.3統計量分析
用統計指標對定量數據進行統計描述,常從集中趨勢和離中趨勢兩個方面進行分析。平均水平的指標是對個體集中趨勢的度量,使用最普遍的是均值和中位數;反映變異程度的指標則是對個體離開平均水平的度量,使用較普遍的是標準差(方差)、四分位數間距。
1.集中趨勢度量
(1)均值
均值是全部數據的平均值。若是求n個原始觀察數據的平均數,計算公式爲:
有時,爲了反映在均值中不一樣成分所佔的不一樣重要程度,爲數據集中的每個xi賦予wi,這就獲得了加權均值的計算公式:
相似地,頻率分佈表(如表3-4)的平均數可使用下式計算:
式中,x1,x2,…,xk分別爲k個組段的組中值;f1,f2,…,fk分別爲k個組段的頻率。這裏的fi起了權重的做用。
做爲一個統計量,均值的主要問題是對極端值很敏感。若是數據中存在極端值或者數據是偏態分佈的,那麼均值就不能很好地度量數據的集中趨勢。爲了消除少數極端值的影響,可使用截斷均值或者中位數來度量數據的集中趨勢。截斷均值是去掉高、低極端值以後的平均數。
(2)中位數
中位數是將一組觀察值從小到大按順序排列,位於中間的那個數據。即在所有數據中,小於和大於中位數的數據個數相等。
將某一數據集x:{x1,x2,…,xn}從小到大排序:{x(1),x(2),…,x(n)}。
當n爲奇數時
當n爲偶數時
(3)衆數
衆數是指數據集中出現最頻繁的值。衆數並不常常用來度量定性變量的中心位置,更適用於定性變量。衆數不具備惟一性。
2.離中趨勢度量
(1)極差
極差=最大值-最小值
極差對數據集的極端值很是敏感,而且忽略了位於最大值與最小值之間的數據是如何分佈的。
(2)標準差
標準差度量數據偏離均值的程度,計算公式爲:
(3)變異係數
變異係數度量標準差相對於均值的離中趨勢,計算公式爲:
變異係數主要用來比較兩個或多個具備不一樣單位或不一樣波動幅度的數據集的離中趨勢。
(4)四分位數間距
四分位數包括上四分位數和下四分位數。將全部數值由小到大排列並分紅四等份,處於第一個分割點位置的數值是下四分位數,處於第二個分割點位置(中間位置)的數值是中位數,處於第三個分割點位置的數值是上四分位數。四分位數間距是上四分位數QU與下四分位數QL之差,其間包含了所有觀察值的一半。其值越大,說明數據的變異程度越大;反之,說明變異程度越小。
針對餐飲銷量數據進行統計量分析,其R語言代碼以下:
# 設置工做空間 # 把「數據及程序」文件夾拷貝到F盤下,再用setwd設置工做空間 setwd("F:/數據及程序/chapter3/示例程序") # 讀入數據 saledata <- read.table(file = "./data/catering_sale.csv", sep=",", header = TRUE) sales <- saledata[, 2] # 統計量分析 # 均值 mean_ <- mean(sales, na.rm = T) # 中位數 median_ <- median(sales, na.rm = T) # 極差 range_ <- max(sales, na.rm = T) - min(sales, na.rm = T) # 標準差 std_ <- sqrt(var(sales, na.rm = T)) # 變異係數 variation_ <- std_ / mean_ # 四分位數間距 q1 <- quantile(sales, 0.25, na.rm = T) q3 <- quantile(sales, 0.75, na.rm = T) distance <- q3 - q1 a <- matrix(c(mean_, median_, range_, std_, variation_, q1, q3, distance), 1, byrow = T) colnames(a) <- c("均值", "中位數", "極差", "標準差", "變異係數", "1/4分位數", "3/4分位數", "四分位間距") print(a)
程序運行結果以下:
咱們經過上面的程序已經獲得餐飲銷量數的統計量狀況:銷量數據均值:2755.215,中位數:2655.85,極差: 9084.44,標準差:751.0298,變異係數:0.2725848,四分位數間距:574.15。
後續還有周期性分析和相關性分析以及一些其餘統計函數,後面再介紹。