天天看點

大資料與機器學習:實踐方法與行業案例1.1 資料的基本形态

遲序之數,非出神怪,有形可檢,有數可推。

—祖沖之

數學是知識的工具,亦是其他知識工具的泉源。所有研究順序和度量的科學均和數學有關。

—笛卡兒

對于大部分非計算機專業出身的分析人員和業務人員來說,資料庫領域的專業術語簡直讓人抓狂,非要搞得那麼高深嗎?大可不必。

資料科學家是資料的應用者,以最大限度來提煉資料價值為目的,不必像資料倉庫開發者那樣對資料的存儲、結構以及資料倉庫的内生技術一清二楚,但應該站在找到資料、拼接資料、使用資料的角度,大體了解資料的分布、處理邏輯,以便為分析快速地準備素材。

<b></b>

<b> 摘要</b>

資料與資料平台

合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。

—《老子》

世界的本質是數。

—畢達哥拉斯

資料時時刻刻在伴随着我們的工作和生活,就像空氣圍繞着我們一樣,以緻于我們常常忽略了它的存在。但如果你立志做一個崇尚資料的人,靜下心來像科學家研究空氣一樣研究資料,就會發現資料為我們認知事物打開了一條全新的途徑。

可以通過資料認識自身:人類全身的肌肉大約有639塊,由60億條肌纖維構成,而起着重要作用的大腦則由140億個細胞構成。

可以通過資料描述我們的工作:周一上午10:00~11:30召開會議,讨論公司第三季度的銷售目标。

可以通過資料描述我們的行為:花費6088元購買一台iphone 6手機,中速遊泳60分鐘消耗約1000千卡的熱量。

還可以通過資料認識我們所處的環境:現在時間是14:00,目前溫度為28℃,上個月的cpi同比上漲1.4%,蔬菜和水果價格上漲了6.7%。

甚至可以通過資料認識遙不可及的物體:太陽直徑為1 392 000公裡,表面溫度達57 809開爾文……資料讓我們認識了世間萬物,那麼我們該如何認識資料本身呢?

資料的本質是一個十分深奧且寬泛的話題,甚至帶有哲學的意味。作為技術類書籍,本書不嘗試從哲學的角度研究資料,而是基于實踐,從思維和技術手段出發來認識、了解、處理并分析周圍的資料。為了更加具體,本書研究的資料定位于企業經營資料。

本章首先将從資料的基本形态入手,介紹企業中資料的來源和表現形态;然後介紹與之相關的資料平台,并簡單介紹兩類應用系統。在着手處理資料之前,讓我們先對資料有一個清晰的認識。

<b>1.1 資料的基本形态</b>

我們不是自然科學家,但是可以借鑒自然科學的思路來看待資料問題。問題是資料具有形态嗎?雖然資料并不具有固态、液态或氣态等形态,但是可以根據需要為資料定義屬于自己的專屬形态。

一旦為資料賦予了恰當的形态,并在一定範圍内(比如在一個公司内部)達成共識,形成對資料的系統化認識,就可以基于這些資料形态提出相應的管理和使用方案,提升資料的效率和價值。

一般情況下,對于企業經營中産生的資料,可以定義為三種形态:生産資料、原始資料和分析資料。這些資料形态的産生,是基于企業應用系統所在的生産環境和分析環境而存在的,在深入讨論資料形态之前,我們先來熟悉一下資料所在的環境。

1.1.1 資料環境與資料形态

資料環境是指資料存儲、處理、轉換所處的實體環境,常見的資料環境有生産環境、分析環境和測試環境。

生産環境是生産應用系統實時運作所在的環境,而生産應用系統則是一系列業務邏輯的組合。我們可以把生産環境想象成人的身體,生産應用系統就是人體中的各個系統(消化系統、呼吸系統等),業務邏輯則是這些系統中的“經絡”,而資料便是運作于經絡之中的“氣血”。資料從“經絡”中的一個“穴位”流轉到另一個“穴位”,并在“流淌”中發生變化,是以,生産環境中的資料是“動态變換”的資料,我們稱為生産資料。

分析環境是與生産環境實體解耦的一個資料環境。在生産環境中,由于資料總是處于不停變化中,這些資料的變化将直接反映為業務邏輯結果的變化,是以不應該嘗試在生産環境中對資料進行分析處理。為了不影響生産環境的正常運作,需要将生産環境中的“動态”資料的快照儲存下來(例如每日淩晨将時間戳為昨日的資料導出),這些資料快照是“靜态”的,我們稱為分析資料,儲存分析資料的實體環境即我們所說的分析環境。

在實際中,還有另外一個環境,即測試環境。測試環境中的資料也是獨立于生産環境和分析環境的,由于測試環境的資料通常不是有效的資料,是以本書不關注測試環境的資料。

至此,根據資料所處的環境,我們将資料定義為三種基本形态:生産資料、原始資料和分析資料。

生産資料存在于生産環境之中,分析資料存在于分析環境之中。此外,在生産資料和分析資料之間,還存在一種過渡形态的資料,即原始資料。圖1-1展示了資料環境及其對應的資料形态。

圖1-1 資料環境及其對應的資料形态

注意,圖1-1中所示的原始資料,既不屬于生産環境也不屬于分析環境,這意味着它不直接用于生産,也不直接用于分析。原始資料作為生産資料到分析資料的中間形态存在,本書随後的章節将進一步讨論原始資料的相關問題。

1.1.2 生産資料

生産資料是應用系統中線上使用的資料,它可能是一個生産系統的生産環境資料庫中的資料,比如在一個p2p借貸平台的系統中,使用者進行注冊、充值、投資等行為産生的資料将被記錄到生産環境資料庫中,這些資料即為生産資料。

生産資料是動态的,會随着業務應用的變化而變化,比如使用者賬戶餘額資料,會随着使用者投資的變化而變化。任何存在于生産環境中的資料,都在時刻準備發生改變,隻不過有些生産資料的變化頻率特别低而已,比如使用者的年齡資訊。

正常情況下,資料分析師并不直接接觸生産資料,但需要注意的是,有些生産資料是從分析資料而來的。比如使用者标簽資料,它本身是從分析資料建構的,屬于分析資料。但這些标簽資料一旦用于應用系統,例如作為推薦系統的底層資料,即轉化為生産資料,這種情況下,應用系統輸出結果的品質将受到分析資料的直接影響。

1.1.3 原始資料

由于生産資料是動态的資料,而過去大量的分析工具和分析方法很難處理動态改變的資料(流處理已經改變了這種情況)。為了在不影響生産應用系統的情況下分析和處理這些資料,我們需要将這些資料從生産系統解耦。

從生産系統解耦的資料即是原始資料。資料解耦的過程一般包括資料脫敏(如屏蔽電話号碼、去除住宅詳細資訊等)、資訊篩選(抛棄不需要的字段)、批量導出(如在t日淩晨批量導出t-1日的交易明細資料)等。

原始資料可以以多種形式存在,例如存儲在生産資料庫備庫中,或者以文本檔案的格式存放在檔案伺服器中。無論以何種形式存在,原始資料都應該獨立于生産環境和分析環境,這可以避免分析環境對生産環境的幹擾。

存放這些原始資料的地方,我們稱為資料緩沖區。在很多企業中,資料緩沖區和原始資料并未得到足夠重視,它們大多為了前期的友善,省略了資料緩沖區和原始資料形态,就像圖1-2所示的那樣。

顯然,資料直連的方式讓生産環境直接暴露在分析環境之上,兩者之間的etl(extract-transform-load)過程将對雙方的性能造成影響。随着資料量的增加,這可能會帶來資料管理和應用上的災難。

圖1-2 省略資料緩沖區的資料直連

本書極力推薦圖1-1所示的方式,雖然它比圖1-2要複雜,但在資料管理和可擴充性方面有非常大的優勢。後面的第2.1節中會深入讨論該問題。

1.1.4 分析資料

分析資料是對原始資料進行屬性篩選、标準統一之後,使用優化存儲的方式存放于分析環境中的資料。從原始資料到分析資料的關鍵步驟在于etl過程。

比如,原始資料中的一張表a可能包含100個字段,經過etl之後,得到了一個包含45個字段的表b,其中的日期格式進行了統一,且濾除了一些特殊字元,并将表b存放于分析環境資料平台的關系資料庫oracle中。這樣,原始資料中的表a完成了屬性篩選和标準統一(日期格式),轉換成了分析資料表b。

另一種需要标準統一的情景根源于原始資料本身的多樣性。由于原始資料來源于不同的生産應用系統,其資料格式及字段含義均存在差異。例如,原始資料存放的格式可能有windows文本、linux文本、主機格式文本、資料庫檔案等多種形式;字段含義上的差異則更加多樣,比如,由原始資料檔案a中性别字段使用1表示男性、2表示女性,而原始資料檔案b中性别字段使用m表示男性、f表示女性。通過标準統一,可以約定所有的分析資料統一使用1表示男性、2表示女性。資料統一可為資料分析和資料應用鋪平道路。

經過etl之後的分析資料,為了進一步提高存儲效率和讀取效率,需要使用技術手段進行存儲優化,比如建立索引、進行分區、分表存儲、使用大資料平台等。

通過對原始資料的提煉和優化,分析資料具有了資訊集中、标準統一、分析效率高等特點,便于資料進一步的分析和應用。

分析資料需要依托資料平台而存在,資料平台的性能對其上的資料分析和應用有決定性影響。資料平台是分析環境的基礎,在随後的“資料平台”章節中,我們将詳細介紹。