iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 8
0
Google Developers Machine Learning

透視Google Machine Learning的奧秘系列 第 8

[Day08] 你了解你在做機器學習時的資料嗎?深入探討維度模型(3/6)

前一天介紹了資料庫與資料倉儲的差別,今天我們來討論構建資料倉儲的維度模型。

Dimensional Modeling維度建模

  • 以維度建模弄出來的東西就是Dimension Model(n)維度模型
  • 維度模型與3NF Model第三正規化(關聯模型)是不同的,因為資料本質的不同(一個是歷史資料一個是即時資料)
  • 維度建模呈現的維度模型,借用關聯模型的符號和詞彙來呈現星星(*)周圍的維度
  • 星星、OLAP Cubes所表達的意思一樣,只是採用的符號、表達方式不同而已

OLAP Cubes
OLAP Cubes

維度設計過程Dimensional Design Process四步驟:

  • 選一個企業流程,這個是四個步驟中最重要的步驟
  • 宣告資料顆粒
  • Identify the dimensions界定維度
  • Identify the Facts界定事實

維度表

維度表Dimension Table裡面的欄位都是放文字型態的Descriptive Context(非數字)
維度屬性表三個主要用途:

  • 當作查詢限制條件query constraints
  • 群組條件groupings
  • 報表標籤report labels

DW做得好不好就看你的維度屬性設計得好不好,而維度表通常有很多欄位columns,每一個欄位都代表問題指標
有些維度屬性有階層hierarchies的狀況,使用向下鑽探Drill Down上捲Roll Up來查看不同層次的問題,而越完整的維度屬性即可以轉換成越完整的分析能力

事實表

事實表Fact Table放的是Measurements(測度、測量)可以被度量的數值型態(非文字),事實表裡面都是一堆外來鍵FK(Foreign Key),這些FK構成事實表的主鍵PK(Primary Key),剩下的都是Fact
Fact是具有可加性additive的,Fact屬於數值型numeric:

  • 可加性Full-Additive Facts
  • 半可加性Semi-Additive Facts 時間軸上不能相加
  • 不可加性non-Additive Facts 可屬個數
  • 事實可以做聚合aggregation,可以求最大、最小、求個數、求平均
  • 事實表通常有很多的rows

一張事實表裡面只能存在一種顆粒,不同資料顆粒不能放一起比較,不同的顆粒要放在不同的事實表當中

耗時的事實表

花費最多時間的不是建置維度屬性表而是事實表的整理,事實表也就是做機器學習之前所取得的原始資料,從蒐集原始資料、進行資料清理、針對龐大的資料庫做維護等等,如果一開始沒有在選用資料或做資料清理時設想好處理手法,導致後來需要花大量時間修改補救很多地方,只要錯誤發現的越晚,就越難補救,先前所有儲存在資料庫的資料也要一併修改,是非常曠日廢時的。/images/emoticon/emoticon13.gif

資料顆粒

平常我們說一筆交易記錄是用record記錄來稱呼,而在資料倉儲當中的事實表,要使用granular顆粒來表示,描述一個事實表的顆粒度大小
宣告資料顆粒就是去明確指定事實表裡面的每一列代表的東西,例:每掃描一次條碼就有一個資料顆粒,只要把明確的事情描述清楚了就是把資料顆粒宣告清楚

拿到資料時,該把它放在維度表還是事實表?

  • 維度表一定是文字型資料,事實表一定是數值型資料
  • 事實表是 - 被分析的對象
  • 維度屬性 - 分析的根據

為甚麼星狀綱要不用做正規化?

因為DW面對的環境都是歷史資料(增刪改查都不會發生在DW/BI當中),所以不需要做正規化,所以模型才用星狀綱要模型

今天先介紹到這,明天我們對維度模型做延伸討論。

參考資料與圖片來源


上一篇
[Day07] 你了解你在做機器學習時的資料嗎?談資料庫與資料倉儲的差別(2/6)
下一篇
[Day09] 你了解你在做機器學習時的資料嗎?建立維度模型好比經營餐館一樣?(4/6)
系列文
透視Google Machine Learning的奧秘30

尚未有邦友留言

立即登入留言