關注小聚,數據分析不迷路
在數據化運營過程中,海量的原始數據中存在着大量不完整、不一緻、有異常的數據,嚴重影響到數據挖掘建模的執行效率,甚至可能導緻挖掘結果的偏差,所以進行數據清洗就顯得尤為重要,數據清洗完成後接着進行或者同時進行數據集成、變換、規約等一系列的處理,該過程就是數據預處理。
數據預處理是其中的重要環節,它直接決定了後續數據工作的質量和價值輸出。
人們通常認為,數據預處理是一個非常枯燥的部分。但它就是「做好準備」和「完全沒有準備」之間的差别,也是表現專業和業餘之間的差别。就像為度假做好事先準備一樣,如果你提前将行程細節确定好,就能夠預防旅途變成一場噩夢。
數據預處理流程
首先我們知道,數據預處理的主要内容包括數據清洗、數據集成、數據變換和數據規約。
可以用這些逐步檢測并優化提升數據質量,不是每次預處理都需要做這些所有步驟,視數據情況挑選若幹即可。
由于在數據分析過程中主要涉及的是數據清洗,所以本文詳細講解這一部分,那麼數據清洗有哪些鐵則或者經驗呢?小聚這裡整理如下:
數據清洗
數據清洗主要是删除原始數據集中的無關數據、重複數據,平滑噪聲數據,篩選掉與挖掘主題無關的數據,補足缺失值、去除異常值,糾正錯誤。
一.去重
不管是外部回溯數據還是在自己數據庫中拉取的數據,可能由于存儲邏輯等問題,會出現很多重複數據,重複數據屬于冗餘數據,拿到數據所要做的第一步就是檢查是否有重複數據,若有,則需要進行去重處理,在python中可以使用duplicates()函數。
二.處理異常值
異常值的定義是與均值的偏差超過兩倍标準,但是在髒數據中,異常值的情況不止這一種:
1)比如一列數據你打開看全部是數字,當你把它當數值型處理,它會報錯;那就得仔細查找原因,遇到比較多的情況是一列數字中夾雜了幾個奇怪的字符串或者符号等元素,如果幾萬條數據中隻有一兩個這種字符,即使認真從前到後仔細查看也很難發現還浪費大量時間,效率極低。
還有一種情況比較常見,就是看起來是數字,實際上都是字符串的形式,但是以表格查看的時候是看不到字符串的引号;這兩種情況可以通過查看特征類型來提前發現,在python中用type()或者dtypes()函數,兩者使用對象有差别,可自行了解;
2)幾種常用異常值檢測方法:
3σ探測方法的思想其實就是來源于切比雪夫不等式。
對于任意ε>0,有:
當時,如果總體為一般總體的時候,統計數據與平均值的離散程度可以由其标準差反映,因此有:
所以如果我們一般是把超過三個離散值的數據稱之為異常值。這個方法在實際應用中很方便的使用,但是他隻有在單個屬性的情況下才适用。
Z-score是一維或低維特征空中的參數異常檢測方法。該技術假定數據是高斯分,異常值是分布尾部的數據點,因此遠離數據的平均值。距離的遠近取決于使用公式計算的歸一化數點z i的設定阈值Zthr:
其中xi是一個數據點,μ是所有點xi的平均值,δ是所有點xi的标準偏。然後經過标準化處理後,異常值也進行标準化處理,其絕對值大于Zthr:
Zthr值一般設置為2.5、3.0和3.5。該技術是使用KNIME工作流中的行過濾器節點實現的。
這種異常值處理需要結合最終需求來決定怎麼處理,常見的是不處理或者按缺失值的方法處理,但是在實際場景中,異常值有時候會有非常突出的表現,比如在現金貸業務中,異常值中的壞賬率遠高于整體壞賬水平或其他區間壞賬水平,這時候異常值就得保留并作為決策阈值的參考值。
觀察箱型圖,或者通過IQR(InterQuartile Range)計算可以得到數據分布的第一和第四分位數,異常值是位于四分位數範圍之外的數據點。
這個方法真的很簡單,因為隻需要給數據排個序就行了,顯然過于籠統,但在實際場景中,觀察箱型圖仍然是一個很好的探索數據分布的方法。
畢竟,所有複雜的探索,都是從最開始簡單的探索一步步得來的嘛!
三.缺失值處理
數據缺失通常有兩種情況:
這裡主要讨論數據列植的缺失情況,通常有如下4種處理思路:
這種方法最簡單明了,直接删除整行或者整列帶有缺失值的記錄。但是這種丢棄意味着會減少數據特征,弊端也十分明顯。
如下情況,不宜直接使用丢棄的方法:
數據集總體存在大量數據記錄不完整情況而且比例較大,比如超過10%,此時删除這些缺失值,就意味着會損失過多的有用信息。
帶有缺失值的數據記錄大量存在着明顯的數據分布規律或特征,比如帶有缺失值的數據記錄是我們的目标标簽主要集中在一類或者幾類中,如果此時删除這些數據記錄,将會使得對應類别的數據樣本丢失大量數據,導緻模型過拟合或者分類不準确。
相對于丢棄而言,補全則是一種更加合理的處理方法。通過一定的方法将缺失的數據補上,從而形成完整的數據記錄。
常用的補全方法有:
統計法:對于數值型數據,可以使用均值、加權平均值、中位數等方法補全;而對于分類型數據,一般會是用類别衆數最多的數值補足。
模型法:更多的時候,我們會基于其他字段,将缺失字段作為目标變量進行預測,從而達到最為可能的補全值。
專家補全:對于一些專業性非常強的數據,可以通過自學業界專家,來補全缺失數據,這種方法在很多情況下也是一種非常重要的補全途徑。
其他方法:例如随機法、特殊值法,多重填補法等。
在某些情況下,我們可能無法得知缺失值的分布規律,而且也無法應用上面的方法進行補全;或者我們認為當前的缺失記錄也是數據的一種規律,不應該輕易的對缺失數據進行處理,那麼此時就可以使用真值轉換法來處理。
這種方法的觀點是,我們承認缺失值的存在,并且把數據缺失也作為數據分布規律的一部分看待,将變量的實際值和缺失值都作為輸入維度參與後續的數據處理和模型計算中。但是真實值是可以直接參與計算的,缺失值通常無法參與運算,因此需要對缺失值進行真值轉換。
對于缺失值,不做任何處理,也是一種處理缺失值的思路。這種方式主要取決于後續的模型運算,很多模型對于缺失值有容忍度或靈活的處理方法,因此在數據預處理階段可以不作處理。
預處理小tips
非需求數據清洗
這一點說起來非常簡單:把不要的字段删了。但實際操作起來,有很多問題,例如:
把看上去不需要但實際上對業務很重要的字段删了;某個字段覺得有用,但又沒想好怎麼用,不知道是否該删;一時看走眼,删錯字段了。
前兩種情況我給的建議是:如果數據量沒有大到不删字段就沒辦法處理的程度,那麼能不删的字段盡量不删。第三種情況,請勤備份數據……
關聯性驗證
如果你的數據有多個來源,那麼有必要進行關聯性驗證。例如,你有汽車的線下購買信息,也有電話客服問卷信息,兩者通過姓名和手機号關聯,那麼要看一下,同一個人線下登記的車輛信息和線上問卷問出來的車輛信息是不是同一輛,如果不是,那麼需要調整或去除數據。
嚴格意義上來說,這已經脫離數據清洗的範疇了,而且關聯數據變動在數據庫模型中就應該涉及。但我還是希望提醒大家,多個來源的數據整合是非常複雜的工作,一定要注意數據之間的關聯性,盡量在分析過程中不要出現數據之間互相矛盾,而你卻毫無察覺的情況。
END
聚數學院年末大福利來啦,
小聚整理彙總了官方B站所有視頻相關配套資料
現在 免費送!!
關注同名公衆号,免費送
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!