0x07 數據民工,一致性洗車

摘要:數據科學家是二十一世紀最性感的的職業。面臨充斥着髒亂差的數據,處理數據一致性問題是其中一項重要任務。人的強項在於智能,卻不善於處理重複且枯燥無味的事情。機器不具備智能,卻善於處理重複且簡單的事情。算法

01 性感仍是悶騷
《哈佛商業評論》說:數據科學家是二十一世紀最性感的的職業。 數據庫

理想很豐騷,現實很悶騷。之因此悶騷,是由於首先得把本身悶起來,悶過了最枯燥的階段,你就變明騷了,才性感;悶不過,你就只有離騷了。機器學習

想作數據科學家,推薦一篇文章:《爲何「高大上」的算法工程師變成了數據民工?》,從中瞭解數據民工的的枯燥。看完再以45度角仰望星空10分鐘,而後,再大聲說出你的理想。學習

數據科學中,並不是都會得出啤酒與尿布的有趣結論,也並不是都有漂亮的2D或者3D的圖形展現。反而會包含不少枯燥無趣的數據處理,但這倒是必經這路。並且,數據處理與清洗會一直伴隨你的職業生涯。 網站

現今不少數據都會經過爬蟲來獲取,最大的數據王國Google也是抓取各家的網站內容。各家網站自己的數據就良莠不齊,何況在處理過程當中,還會由於解析、存儲、業務理解等帶來偏差。數據分析

不一樣於一般的數據分析,要求產出業務相關的報表。面臨充斥着髒亂差的數據,處理數據一致性問題即是其中的首要任務。數學

02 屬性抽取與校驗
以二手車抓取的數據爲例,咱們的目標是清洗爬蟲獲取的二手車數據,也就是標題中的「洗車」的含義。各家網站的款型描述是單獨的,同時還會單獨列出:排量、年款、行駛里程、手自動變速器等字段。好比款型描述爲:2012款 3.0 自動 旗艦版,單獨的字段還分別列出:排量:3.0,年款:2002款,手自動:自動,這裏面沒有包括行駛的里程。產品

若是咱們分開抓取款型描述、排量、年款、手自動字段下來,便可進行一致性檢查。從款型描述中抽取出相應的字段,再與單獨的字段進行對比。若是發現不一致,剛確定有個地方出錯了。多是原始網站上數據出錯,也多是爬蟲的解析、存儲過程當中出現的問題。基礎

這個事情,提及來很是簡單,但在實際的環境中,出現問題的數據還真很多,還也經常被忽略。一般採起的抽取規則也很簡單,一個簡單的正則即可以將須要的屬性從詳細描述中抽取出來。程序

通常來講,只要一個屬性出如今兩個地方,就應該要校驗他們的一致性。

除了對多個地方的屬性進行一致性校驗外,還須要對屬性自己的取值範圍進行校驗。好比:汽車排量大於9一般不合理,若是你看到一個排量屬性爲0.3或者11.8,那麼請校驗數據。若是排量爲0.0, 只有電動車或者數據出錯。還有,上牌時間大於2015年或者爲1915年;開了三年的車,行駛里程1千5百千米(超級豪車除外);或者開了三年的車,最後只賣新車指導價的5%,這些數據,一般都須要捨棄或者修正。

從上面一些簡單的知識能夠看出,數據分析是須要相關的領域知識,甚至有些是常識。千萬不要覺得數據分析或者機器學習只是單純的統計和數學模型,不懂業務的機器學習工程師不是一個好的產品經理。

03 機器與人工相結合
假設從各類第三方網站抓取的二手車款型描述差別比較大,咱們的目標是將其創建對應的映射關係,映射到咱們已經創建的標準款型中去。傳統的方式是找幾個對二手車熟悉的人,手工創建映射關係。但當數據量愈來愈多的時候,並且各類描述也愈來愈不規範的時候,須要的人力是比較大的,何況,人還會犯錯,一個眼花就會弄錯匹配關係。

能夠經過一些簡單的算法,來完成二八理論中的那八成,甚至咱們能夠經過程序來校驗人工的結果是否有錯誤。以《0x03 近朱者赤,相親knn》中提到的KNN算法,即可以經過人工已經匹配的結果,來進行基於案例的學習,學習人工的經驗。

好比,在某一個匹配關係中,人工將「1.0L A/MT 基礎型」匹配到標準款型庫裏面的「1.0 手自一體 基本型」上去了,咱們即可以用程序來學習他這種匹配關係,基於已經成功匹配的案例,用簡單的算法,來學習人工的經驗智慧,這即是機器學習算法帶給咱們成果。

人的強項在於智能,卻不善於處理重複且枯燥無味的事情,而且容易犯錯。機器不具備智能,卻善於處理重複且簡單的事情。用人的智能去處理最困難的20%的問題,而把那相對簡單的80%的問題交給程序。

咱們還能夠經過機器學習來識別人工匹配的錯誤狀況,甚至能分析出數據庫裏面出現的一些問題,好比數據重複問題。

04 數據驗證環節
經過簡單的算法進行案例學習,假定人工完成了兩條款型的匹配,第一條爲:「2.0 標準型 自動」 匹配到標準庫爲"2.0L 自動 標準型「,另一條:「2.0L 自動標準型「匹配到了」2.0L 自動 導航型」。那麼其中問題就來了,咱們程序經過處理後,發現第一條與第二條數據其實是同樣的,但是匹配到標準庫的時候,倒是兩個不同的結果,那麼確定其中一條映射關係是有問題的。

上面是一個比較複雜的「一對多「問題,由於在判斷兩條數據不同的時候,還使用了對數據進行處理。常常還會遇到,就是兩條徹底同樣的款型描述,仍是會有匹配到兩個不一樣的標準款型的狀況發生,這即是咱們前面說的,機器學習用來輔助校驗人工匹配的成果了。

還有一種狀況,假設上面兩條數據,第一條匹配到」2.0L 自動 標準版「,第二條匹配到」2.0L 自動 標準導航版「,經過咱們參考其它網上的標準庫發現,兩個款型描述實際上是同樣的。那麼問題便出在咱們自身的標準庫上了,咱們標準庫裏面有重複的數據。人工在不一樣的狀況下都是匹配對的,只是他們沒有對比分析,因此沒有發現是自身的數據重複致使的。

上面狀況是:相同(或處理後相同)的數據,映射到不一樣的結果,是典型的」一對多「問題,固然還有」多對一「的狀況,即多個不一樣的數據,映射到相同的結果上面了。

好比兩條數據分別爲:"1.8L 標準型 自動"和「1.8T 自動 標準型,都匹配到了「1.8L 自動 標準型「。不仔細的話,估計很難發現,兩條描述中,一條是L(天然吸氣),另一條是T(渦輪增壓),但他們都匹配到「1.8L 自動 標準型「,所以確定其中有一條映射錯了。

這即是多對一的狀況。多對一的想法依然可能檢查數據關係的一致性。

05 數據應用
從上面能夠看出,數據自己的邏輯一致性,和數據映射關係的一致性,會影響到咱們最終數據的質量。尤爲是當你用這些數據來作一些和二手車估值相關的數據運算的時候,任何一條邏輯出錯或者映射出錯的數據,都有可能會影響最終的估估值模型。

假定從第三方網站抓取的數據中,含有新車指導價或者4S店最低報價,也能夠經過上面的方面,對這些價格進行一次校驗,取出最合理的數據。具體的思想上面都已經有了,只是如何應用的問題,有興趣的能夠本身嘗試。

機器沒有智能,沒法理解數據,尤爲是邏輯或者領域相關的知識。但人不同,這纔是數據工程師和機器學習工程師最核心的價值。有了算法思想,不少地方即便只使用簡單SQL也能發揮出比較大的威力。

不要放過你遇到的任何小問題,任何的一處小問題,背後均可能隱藏着一系列的錯誤,或者甚至蘊含着一些你還不知道的知識。

用易經中坤卦的初六爻的爻詞來理解:履霜,堅冰至。腳上踩到霜了,便要想到,後面頗有可能會有堅冰在等你。

相關文章
相關標籤/搜索