99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何避免無效的數(shù)據(jù)分析結(jié)果,這六種錯(cuò)誤不可忽視
如何避免無效的數(shù)據(jù)分析結(jié)果,這六種錯(cuò)誤不可忽視
2021-12-08
收藏

導(dǎo)讀:在數(shù)據(jù)清洗過程中,主要處理的是缺失值、異常值重復(fù)值。所謂清洗,是對(duì)數(shù)據(jù)集通過丟棄、填充、替換、去重等操作,達(dá)到去除異常、糾正錯(cuò)誤、補(bǔ)足缺失的目的。

作者:宋天龍

本文轉(zhuǎn)自:大數(shù)據(jù)DT(ID:hzdashuju)

01、數(shù)據(jù)列缺失的4種處理方法

數(shù)據(jù)缺失分為兩種:一種是行記錄的缺失,這種情況又稱數(shù)據(jù)記錄丟失;另一種是數(shù)據(jù)列值的缺失,即由于各種原因?qū)е碌臄?shù)據(jù)記錄中某些列的值空缺。

不同的數(shù)據(jù)存儲(chǔ)和環(huán)境中對(duì)于缺失值的表示結(jié)果也不同,例如,數(shù)據(jù)庫中是Null,Python返回對(duì)象是None,Pandas或Numpy中是NaN。

在極少數(shù)情況下,部分缺失值也會(huì)使用空字符串來代替,但空字符串絕對(duì)不同于缺失值。從對(duì)象的實(shí)體來看,空字符串是有實(shí)體的,實(shí)體為字符串類型;而缺失值其實(shí)是沒有實(shí)體的,即沒有數(shù)據(jù)類型

丟失的數(shù)據(jù)記錄通常無法找回,這里重點(diǎn)討論數(shù)據(jù)列類型缺失值的處理思路。通常有4種思路。

1. 丟棄

這種方法簡單明了,直接刪除帶有缺失值的行記錄(整行刪除)或者列字段(整列刪除),減少缺失數(shù)據(jù)記錄對(duì)總體數(shù)據(jù)的影響。但丟棄意味著會(huì)消減數(shù)據(jù)特征,以下任何一種場(chǎng)景都不宜采用該方法。

  • 數(shù)據(jù)集總體中存在大量的數(shù)據(jù)記錄不完整情況且比例較大,例如超過10%,刪除這些帶有缺失值的記錄意味著會(huì)損失過多有用信息。
  • 帶有缺失值的數(shù)據(jù)記錄大量存在著明顯的數(shù)據(jù)分布規(guī)律或特征,例如帶有缺失值的數(shù)據(jù)記錄的目標(biāo)標(biāo)簽(即分類中的Label變量)主要集中于某一類或幾類,如果刪除這些數(shù)據(jù)記錄將使對(duì)應(yīng)分類的數(shù)據(jù)樣本丟失大量特征信息,導(dǎo)致模型過擬合或分類不準(zhǔn)確。

2. 補(bǔ)全

相對(duì)丟棄而言,補(bǔ)全是更加常用的缺失值處理方式。通過一定的方法將缺失的數(shù)據(jù)補(bǔ)上,從而形成完整的數(shù)據(jù)記錄,對(duì)于后續(xù)的數(shù)據(jù)處理、分析和建模至關(guān)重要。常用的補(bǔ)全方法如下。

  • 統(tǒng)計(jì)法:對(duì)于數(shù)值型的數(shù)據(jù),使用均值、加權(quán)均值、中位數(shù)等方法補(bǔ)足;對(duì)于分類型數(shù)據(jù),使用類別眾數(shù)最多的值補(bǔ)足。
  • 模型法:更多時(shí)候我們會(huì)基于已有的其他字段,將缺失字段作為目標(biāo)變量進(jìn)行預(yù)測(cè),從而得到最為可能的補(bǔ)全值。如果帶有缺失值的列是數(shù)值變量,采用回歸模型補(bǔ)全;如果是分類變量,則采用分類模型補(bǔ)全。
  • 專家補(bǔ)全:對(duì)于少量且具有重要意義的數(shù)據(jù)記錄,專家補(bǔ)足也是非常重要的一種途徑。
  • 其他方法:例如隨機(jī)法、特殊值法、多重填補(bǔ)等。

3. 真值轉(zhuǎn)換法

在某些情況下,我們可能無法得知缺失值的分布規(guī)律,并且無法對(duì)于缺失值采用上述任何一種補(bǔ)全方法做處理;或者我們認(rèn)為數(shù)據(jù)缺失也是一種規(guī)律,不應(yīng)該輕易對(duì)缺失值隨意處理,那么還有一種缺失值處理思路—真值轉(zhuǎn)換。

該思路的根本觀點(diǎn)是,我們承認(rèn)缺失值的存在,并且把數(shù)據(jù)缺失也作為數(shù)據(jù)分布規(guī)律的一部分,將變量的實(shí)際值和缺失值都作為輸入維度參與后續(xù)數(shù)據(jù)處理和模型計(jì)算中。但是變量的實(shí)際值可以作為變量值參與模型計(jì)算,而缺失值通常無法參與運(yùn)算,因此需要對(duì)缺失值進(jìn)行真值轉(zhuǎn)換。

以用戶性別字段為例,很多數(shù)據(jù)庫集都無法對(duì)會(huì)員的性別進(jìn)行補(bǔ)足,但又舍不得將其丟棄掉,那么我們將選擇將其中的值,包括男、女、未知從一個(gè)變量的多個(gè)值分布狀態(tài)轉(zhuǎn)換為多個(gè)變量的真值分布狀態(tài)。

  • 轉(zhuǎn)換前:性別(值域:男、女、未知)。
  • 轉(zhuǎn)換后:性別_男(值域1或0)、性別_女(值域1或0)、性別_未知(值域1或0)。

然后將這3列新的字段作為輸入維度替換原來的1個(gè)字段參與后續(xù)模型計(jì)算。

4. 不處理

數(shù)據(jù)預(yù)處理階段,對(duì)于具有缺失值的數(shù)據(jù)記錄不做任何處理,也是一種思路。這種思路主要看后期的數(shù)據(jù)分析和建模應(yīng)用,很多模型對(duì)于缺失值有容忍度或靈活的處理方法,因此在預(yù)處理階段可以不做處理。

常見的能夠自動(dòng)處理缺失值的模型包括:KNN決策樹隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)樸素貝葉斯、DBSCAN(基于密度的帶有噪聲的空間聚類)等。這些模型對(duì)于缺失值的處理思路是:

  • 忽略,缺失值不參與距離計(jì)算,例如KNN。
  • 缺失值作為分布的一種狀態(tài),并參與到建模過程,例如各種決策樹及其變體。
  • 不基于距離做計(jì)算,因此基于值的距離做計(jì)算本身的影響就消除了,例如DBSCAN。

數(shù)據(jù)建模前的數(shù)據(jù)歸約階段,有一種歸約的思路是降維,降維中有一種直接選擇特征的方法。假如我們通過一定方法確定帶有缺失值(無論缺少字段的值缺失數(shù)量有多少)的字段對(duì)于模型的影響非常小,那么我們根本就不需要對(duì)缺失值進(jìn)行處理。

因此,后期建模時(shí)的字段特征的重要性判斷也是決定是否處理字段缺失值的重要參考因素之一。

對(duì)于缺失值的處理思路是先通過一定方法找到缺失值,接著分析缺失值在整體樣本中的分布占比,以及缺失值是否具有顯著的無規(guī)律分布特征,然后考慮后續(xù)要使用的模型中是否能滿足缺失值的自動(dòng)處理,最后決定采用哪種缺失值處理方法。

在選擇處理方法時(shí),注意投入的時(shí)間、精力和產(chǎn)出價(jià)值,畢竟,處理缺失值只是整個(gè)數(shù)據(jù)工作的冰山一角而已。

在數(shù)據(jù)采集時(shí),可在采集端針對(duì)各個(gè)字段設(shè)置一個(gè)默認(rèn)值。以MySQL為例,在設(shè)計(jì)數(shù)據(jù)庫表時(shí),可通過default指定每個(gè)字段的默認(rèn)值,該值必須是常數(shù)。

在這種情況下,假如原本數(shù)據(jù)采集時(shí)沒有采集到數(shù)據(jù),字段的值應(yīng)該為Null,雖然由于在建立庫表時(shí)設(shè)置了默認(rèn)值會(huì)導(dǎo)致“缺失值”看起來非常正常,但本質(zhì)上還是缺失的。對(duì)于這類數(shù)據(jù)需要尤其注意。

02、不要輕易拋棄異常數(shù)據(jù)

異常數(shù)據(jù)是數(shù)據(jù)分布的常態(tài),處于特定分布區(qū)域或范圍之外的數(shù)據(jù)通常會(huì)被定義為異常或“噪音”。產(chǎn)生數(shù)據(jù)“噪音”的原因很多,例如業(yè)務(wù)運(yùn)營操作、數(shù)據(jù)采集問題、數(shù)據(jù)同步問題等。

對(duì)異常數(shù)據(jù)進(jìn)行處理前,需要先辨別出到底哪些是真正的數(shù)據(jù)異常。從數(shù)據(jù)異常的狀態(tài)看分為兩種:

  • 一種是“偽異常”,這些異常是由于業(yè)務(wù)特定運(yùn)營動(dòng)作產(chǎn)生的,其實(shí)是正常反映業(yè)務(wù)狀態(tài),而不是數(shù)據(jù)本身的異常規(guī)律。
  • 一種是“真異常”,這些異常并不是由于特定的業(yè)務(wù)動(dòng)作引起的,而是客觀地反映了數(shù)據(jù)本身分布異常的分布個(gè)案。

大多數(shù)數(shù)據(jù)挖掘或數(shù)據(jù)工作中,異常值都會(huì)在數(shù)據(jù)的預(yù)處理過程中被認(rèn)為是噪音而剔除,以避免其對(duì)總體數(shù)據(jù)評(píng)估和分析挖掘的影響。但在以下幾種情況下,我們無須對(duì)異常值做拋棄處理。

1. 異常值正常反映了業(yè)務(wù)運(yùn)營結(jié)果

該場(chǎng)景是由業(yè)務(wù)部門的特定動(dòng)作導(dǎo)致的數(shù)據(jù)分布異常,如果拋棄異常值將導(dǎo)致無法正確反饋業(yè)務(wù)結(jié)果。

例如:公司的A商品正常情況下日銷量為1000臺(tái)左右。由于昨日舉行優(yōu)惠促銷活動(dòng)導(dǎo)致總銷量達(dá)到10000臺(tái),由于后端庫存?zhèn)湄洸蛔銓?dǎo)致今日銷量又下降到100臺(tái)。在這種情況下,10000臺(tái)和100臺(tái)都正確地反映了業(yè)務(wù)運(yùn)營的結(jié)果,而非數(shù)據(jù)異常案例。

2. 異常檢測(cè)模型

異常檢測(cè)模型是針對(duì)整體樣本中的異常數(shù)據(jù)進(jìn)行分析和挖掘,以便找到其中的異常個(gè)案和規(guī)律,這種數(shù)據(jù)應(yīng)用圍繞異常值展開,因此異常值不能做拋棄處理。

異常檢測(cè)模型常用于客戶異常識(shí)別、信用卡欺詐、貸款審批識(shí)別、藥物變異識(shí)別、惡劣氣象預(yù)測(cè)、網(wǎng)絡(luò)入侵檢測(cè)、流量作弊檢測(cè)等。在這種情況下,異常數(shù)據(jù)本身是目標(biāo)數(shù)據(jù),如果被處理掉將損失關(guān)鍵信息。

3. 包容異常值數(shù)據(jù)建模

如果數(shù)據(jù)算法和模型對(duì)異常值不敏感,那么即使不處理異常值也不會(huì)對(duì)模型本身造成負(fù)面影響。例如在決策樹中,異常值本身就可以作為一種分裂節(jié)點(diǎn)。

提示:除了拋棄和保留,還有一種思路可對(duì)異常值進(jìn)行處理,例如使用其他統(tǒng)計(jì)量、預(yù)測(cè)量進(jìn)行替換。但這種方法不推薦使用,原因是這會(huì)將其中的關(guān)鍵分布特征消除,從而改變?cè)紨?shù)據(jù)集的分布規(guī)律。

03、數(shù)據(jù)重復(fù)就需要去重嗎

數(shù)據(jù)集中的重復(fù)值包括以下兩種情況:

  • 數(shù)據(jù)值完全相同的多條數(shù)據(jù)記錄。這是最常見的數(shù)據(jù)重復(fù)情況。
  • 數(shù)據(jù)主體相同但匹配到的唯一屬性值不同。這種情況多見于數(shù)據(jù)倉庫中的變化維度表,同一個(gè)事實(shí)表的主體會(huì)匹配同一個(gè)屬性的多個(gè)值。

去重是重復(fù)值處理的主要方法,主要目的是保留能顯示特征的唯一數(shù)據(jù)記錄。但當(dāng)遇到以下幾種情況時(shí),請(qǐng)慎重(不建議)執(zhí)行數(shù)據(jù)去重。

1. 重復(fù)的記錄用于分析演變規(guī)律

以變化維度表為例。例如在商品類別的維度表中,每個(gè)商品對(duì)應(yīng)的同1個(gè)類別的值應(yīng)該是唯一的,例如蘋果iPhone7屬于個(gè)人電子消費(fèi)品,這樣才能將所有商品分配到唯一類別屬性值中。但當(dāng)所有商品類別的值重構(gòu)或升級(jí)時(shí)(大多數(shù)情況下隨著公司的發(fā)展都會(huì)這么做),原有的商品可能被分配了類別中的不同值。如下表所示展示了這種變化。

此時(shí),我們?cè)跀?shù)據(jù)中使用Full join做跨重構(gòu)時(shí)間點(diǎn)的類別匹配時(shí),會(huì)發(fā)現(xiàn)蘋果iPhone7會(huì)同時(shí)匹配到個(gè)人電子消費(fèi)品和手機(jī)數(shù)碼2條記錄。對(duì)于這種情況,需要根據(jù)具體業(yè)務(wù)需求處理。

  • 如果跟業(yè)務(wù)溝通,兩條數(shù)據(jù)需要做整合,那么需要確定一個(gè)整合字段用來涵蓋2條記錄。其實(shí)就是將2條數(shù)據(jù)再次映射到一個(gè)類別主體中。
  • 如果跟業(yè)務(wù)溝通,需要同時(shí)保存兩條數(shù)據(jù),那么此時(shí)不能做任何處理。后續(xù)的具體處理根據(jù)建模需求而定。
  • 相關(guān)知識(shí)點(diǎn):變化維度表

變化維度表數(shù)據(jù)倉庫中的概念。維度表類似于匹配表,用來存儲(chǔ)靜態(tài)的維度、屬性等數(shù)據(jù),而這些數(shù)據(jù)一般都不會(huì)改變。但是變與不變是一個(gè)相對(duì)的概念,隨著企業(yè)的不斷發(fā)展,很多時(shí)候維度也會(huì)隨著發(fā)生變化。因此在某個(gè)時(shí)間內(nèi)的維度是不變的,而從整體來看維度也是變化的。

對(duì)于維度的變化,有3種方式進(jìn)行處理:

  • 直接覆蓋原有值。這種情況下每個(gè)唯一ID就只對(duì)應(yīng)一個(gè)屬性值,這樣做雖然簡單粗暴也容易實(shí)現(xiàn),但是無法保留歷史信息。
  • 添加新的維度行。此時(shí)同一個(gè)ID會(huì)得到兩條匹配記錄。
  • 增加新的屬性列。此時(shí)不會(huì)新增數(shù)據(jù)行記錄,只是在原有的記錄中新增一列用于標(biāo)記不同時(shí)期的值。

具體到企業(yè)內(nèi)使用哪種方式,通常由數(shù)據(jù)庫管理員根據(jù)實(shí)際情況來決定。

注意:真正的變化維度表維度表不會(huì)以中文做主鍵,通常都會(huì)使用數(shù)字或字符串類作為唯一關(guān)聯(lián)ID,本節(jié)的示例僅做說明之用。

2. 重復(fù)的記錄用于樣本不均衡處理

在開展分類數(shù)據(jù)建模工作時(shí),樣本不均衡是影響分類模型效果的關(guān)鍵因素之一。解決分類方法的一種方法是對(duì)少數(shù)樣本類別做簡單過采樣,通過隨機(jī)過采樣,采取簡單復(fù)制樣本的策略來增加少數(shù)類樣本。

經(jīng)過這種處理方式后,也會(huì)在數(shù)據(jù)記錄中產(chǎn)生相同記錄的多條數(shù)據(jù)。此時(shí),我們不能對(duì)其中的重復(fù)值執(zhí)行去重操作。

3. 重復(fù)的記錄用于檢測(cè)業(yè)務(wù)規(guī)則問題

對(duì)于以分析應(yīng)用為主的數(shù)據(jù)集而言,存在重復(fù)記錄不會(huì)直接影響實(shí)際運(yùn)營,畢竟數(shù)據(jù)集主要是用來做分析的。

但對(duì)于事務(wù)型的數(shù)據(jù)而言,重復(fù)數(shù)據(jù)可能意味著重大運(yùn)營規(guī)則問題,尤其當(dāng)這些重復(fù)值出現(xiàn)在與企業(yè)經(jīng)營中與金錢相關(guān)的業(yè)務(wù)場(chǎng)景時(shí),例如:重復(fù)的訂單、重復(fù)的充值、重復(fù)的預(yù)約項(xiàng)、重復(fù)的出庫申請(qǐng)等。

這些重復(fù)的數(shù)據(jù)記錄通常是由于數(shù)據(jù)采集、存儲(chǔ)、驗(yàn)證和審核機(jī)制的不完善等問題導(dǎo)致的,會(huì)直接反映到前臺(tái)生產(chǎn)和運(yùn)營系統(tǒng)。以重復(fù)訂單為例:

  • 假如前臺(tái)的提交訂單功能不做唯一性約束,那么在一次訂單中重復(fù)點(diǎn)擊提交訂單按鈕,就會(huì)觸發(fā)多次重復(fù)提交訂單的申請(qǐng)記錄,如果該操作審批通過后,會(huì)聯(lián)動(dòng)帶動(dòng)運(yùn)營后端的商品分揀、出庫、送貨,如果用戶接收重復(fù)商品則會(huì)導(dǎo)致重大損失;
  • 如果用戶退貨則會(huì)增加反向訂單,并影響物流、配送和倉儲(chǔ)相關(guān)的各個(gè)運(yùn)營環(huán)節(jié),導(dǎo)致運(yùn)營資源無端消耗、商品損耗增加、倉儲(chǔ)物流成本增加等問題。

因此,這些問題必須在前期數(shù)據(jù)采集和存儲(chǔ)時(shí)就通過一定機(jī)制解決和避免。如果確實(shí)產(chǎn)生了此類問題,那么數(shù)據(jù)工作者或運(yùn)營工作者可以基于這些重復(fù)值來發(fā)現(xiàn)規(guī)則漏洞,并配合相關(guān)部門,最大限度地降低由此而帶來的運(yùn)營風(fēng)險(xiǎn)。

關(guān)于作者:宋天龍,大數(shù)據(jù)技術(shù)專家,觸脈咨詢合伙人兼副總裁,前Webtrekk中國區(qū)技術(shù)和咨詢負(fù)責(zé)人(Webtrekk,德國的在線數(shù)據(jù)分析服務(wù)提供商)。擅長數(shù)據(jù)挖掘、建模、分析與運(yùn)營,精通端到端數(shù)據(jù)價(jià)值場(chǎng)景設(shè)計(jì)、業(yè)務(wù)需求轉(zhuǎn)換、數(shù)據(jù)結(jié)構(gòu)梳理、數(shù)據(jù)建模與學(xué)習(xí)以及數(shù)據(jù)工程交付。

直播預(yù)告

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }