本論文其餘章節說明如下:
第二章將對資料方體維護這個領域的背景知識進行說明。2.1 節包括對資料 倉儲、資料方體、OLAP 這三個的簡介;2.2 節對資料方體維護的方法進行說明並 舉例加以說明;2.3 節介紹偵測不良反應的常見指標並且解說指標代表的意 義;2.4 節介紹的列聯方體概念與其結構並舉例加以說明;2.5 節介紹資料方體維 護相關的研究。
第三章說明本論文的列聯方體維護方法。首先在3.1 節講解維護方法的架構 並且解說完全重新計算與本論文的漸進式維護的作法與差異;3.2 節說明未出現
16
項目在列聯方體維護造成的問題與如何解決此問題的方法;最後舉例說明如何進 行運算。
第四章則是實驗比較先前的完全重新計算方法與本論文的漸進式維護列聯 方體方法消耗的時間。4.1 節介紹實驗使用的周邊設備、使用的資料集與資料集 維度的結構;4.2 節說明實驗的結果,分為各季(年)的維護時間與累計季(年)的維
護時間。
第五章是本論文的總結與未來的研究方向。
17
第 2 章 背景知識與相關研究
資料方體的維護過去已有許多專家學者進行研究,研究主要重點在於如何增 進維護的效率作探討,本章節將介紹與資料方體維護相關的代表性研究。為有利 後續章節的解說,將一併說明相關背景知識,包括資料方體、藥物不良反應偵測 及列聯方體。
2.1 資料倉儲、資料方體與 OLAP
資料倉儲於 1990 年由 Inmon 提出[14],主要的目的是建立一個集中的資料 庫,彙整眾多資料來源,包括傳統的線上交易系統(Online transaction processing,
簡稱OLTP),以利使用者存取與分析使用。根據 Inmon 的定義,資料倉儲應具有 以下四項特性:
1 主題導向(Subject-Oriented):資料倉儲內的資料是依據各種特定主題而蒐集 的資訊。
2 整合性(Integrated):資料倉儲會將多個資料來源的資料進行合併與整理。
3 時間變動(Time-Variant):隨著時間的演進,資料倉儲會記錄資料的變化,有助 於觀察資料對於時間的變化。
4 不更動性(Nonvolatile):資料倉儲內的資料將只會持續增加不會進行刪減,有 助於對其中的資料持續的進行觀察。
18
資料倉儲通常支援的分析為線上分析處理(Online Analytical Processing,簡
稱為OLAP)。所謂的 OLAP 是 1993 年由 Codd 提出[5],提供以下幾種基本操 作供使用者進行使用:向上彙總(Roll up)、向下鑽取(Drill Down)、切片與切塊 (Slice & Dice)、旋轉(Pivot)……等,以利使用者作為決策時的參考依據,而所謂 的維度指的是觀測事物的角度,資料方體(Data cube)[4][11]即是由維度組成的晶 格(cell)集合。底下以例子對資料方體作說明:資料方體的結構如圖 2-1 有三個維
度分別是藥物,症狀與性別,如圖中20 代表的即為在{藥物=d3,症狀=s3,性 別=男}這種情況的數量有 20 個,而構成維度的屬性通常具有階層關係,例如:
年齡這個屬性可以分為10 個階層如圖 2-2。此外,構成資料方體的維度屬性還 可細分成各種可能的維度組合,進而使對應的資料方體彼此間形成一個晶體 (lattice)結構。例如:前述由藥物、性別、症狀三個維度屬性的組合有八種,其對
應的資料方體所構成的晶體結構如圖2-3 所示。關於 OLAP 資料方體的結構還 可分為ROLAP 與 MOLAP 兩種,以下將對其進行簡單的介紹:
1. 關聯式 OLAP(Relational OLAP,簡稱為 ROLAP):是一種以關聯式資料庫為 核心的架構,以關聯式結構進行多維度的分析與儲存,其會將資料劃分為事 實資料表(fact table)與維度資料表(dimension table),兩種表格間以鍵值做連 結,維度資料表儲存與該鍵值相關的欄位或該維度的階層關係,事實資料表 則儲存所有維度資料表的鍵值與觀測的這些維度的測量值,ROLAP 還會將 部分經常查詢或需要大量計算的查詢做為實體化視域(Materialized views)儲
19
存,這視域圖使用者也可對其進行查詢,ROLAP 也會動態的為其進行調整,
因此在使用者進行查詢時即可使用此視域圖生成查詢結果以提升效率。
2. 多維度式 OLAP(Multidimensional OLAP,簡稱為 MOLAP):是一種以多維度 資料庫為核心的架構,其會將原本關聯式資料庫內的資料的欄位轉換為維度,
並將這些欄位統整出的數值做為維度的值進行儲存,由於使用者對於維度可 能有很多種組合的詢問方式,因此會將所有使用者可能會詢問的維度組合方 式皆進行儲存以提升回答時的效率。
。
圖2-1 資料方體 20
d1 d2 d3 s1
s3 s2
女 男
藥物 症狀
性別
20
21
2.2 藥物不良反應信號偵測方法
藥物不良反應信號可以視為是一種特殊的關聯規則,由藥物、症狀與特徵組 成,可以表示如下:
特徵1,特徵 2,……,特徵 n,藥物 1,藥物 2,……,藥物 n→症狀
所謂的特徵是指病患的生理資訊例如:年齡、性別……等,隨著通報系統資料量
日與遽增,對於這種藥物的關聯規則研究也有十足的發展,由於探討藥物不良反 應信號偵測並非本論文的重點,因此我們只探討比較常見的兩大類偵測法[1][10]:
比值法與貝氏法
2.2.1 比值法
此種類型方法是利用統計上的2*2 列聯表的資訊(如表 2-1)進行計算,以判斷 信號的強度,代表性的方法有比例報告比值法[29](Proportional Reporting Ratio,
簡稱為PRR)與報告差異比值法[8](Reporting Odds Ratio,簡稱為 ROR)。PRR 可 定義為:(使用藥物 r 產生症狀 s 所佔的比例)除以(並非使用藥物 r 產生症狀 s 所佔 的比例),ROR 則可定義為:(出現症狀 s 的案例中,服用 r 藥物與未服用 r 藥物的 比例)除以(並未出現症狀 s 的案例中,服用藥物 r 與未服用藥物 r 的比例),其計 算方式定義如下:
22
PRR=𝑎/(𝑎+𝑏)
𝑐/(𝑐+𝑑)
ROR=𝑎/𝑐
𝑏/𝑑
表2-1 列聯表
2.2.2 貝氏法
貝氏法主要依據貝氏定理作為信號偵測方式,其中最著名的為世界衛生組織 採用的貝氏信心類神經網路 傳 遞 法[2](Bayesian Confidence Propagation Neural
Network,簡稱為BCPNN),此種方法主要是在神經網路的結構中作貝氏統計,計
算稱為信息分量(Information Component,簡稱為 IC)的值,即計算兩個變數之間
的關聯強度,以x 代表藥物與 y 代表症狀,則可以定義 IC 為:
IC=log2 𝑃(𝑥,𝑦)
𝑃(𝑥)𝑃(𝑦)=log2𝑎(𝑎+𝑏+𝑐+𝑑) (𝑎+𝑏)(𝑎+𝑐)
其中p(x)代表所有報告中出現藥物 x 的比例,p(y)代表所有報告中出現症狀 y 的
比例,p(x,y)代表所有報告中同時出現藥物 x 與症狀 y 的比例。表 2-2 呈現我們前 述兩種方法的公式與門檻值,當超過門檻值代表該藥物與該不良反應高度相關。
出現症狀s 未出現症狀s 總計
使用r 藥物 a b a+b
未使用r 藥物 c d c+d
總計 a+c b+d a+b+c+d
23
表2-2 藥物不良反應偵測指標公式(SE:標準誤差,SD:標準差)
而除了世界衛生組織採用的BCPNN 外,其他通報系統也有他們各自的檢測 方式,如FDA 採用經驗性貝氏伽瑪泊松分布縮檢法[25](Empirical Bayes Gamma-Poisson Shrinker,簡稱EBGPS),此種方法使用貝氏定理計算藥物與症狀的組合,
比較觀察與期望的值有無達到設定的信賴區間內。也有一些學者提出的方法,由
24
25
26
3. 其餘維護的考量:考慮其他特殊議題或需求的維護,如維度更動時的維護 [9][21]、資料更新快速的維護[22]等。
2.4.1 傳統的資料方體維護
這 方 面 的 研 究 最 早 提 出 的 是 Mumick[20] , 其 提 出 兩 階 段 維 護 的 概 念 propagate 與 refresh:第一階段為 propagate,先計算出變動方體(delta cube),即將
更動的部分製成資料方體;再進行第二階段refresh,將既存的資料方體以變動方 體進行更新。後續的研究大多遵循此研究的作法,例如由Xu 提出[9]對於前者生 成變動方體部分的方法進行改進,在 propagate 部分只生成出維度最多的變動方 體,底下的差異方體的變動方體由最頂層的向上彙總(roll up)生成,refresh 的部
分則與前面相同。爾後又有Lee 提出[18]在建構變動方體減少需要生成的差異方 體的量的方式,其做法為在生成差異方體時只生成最多維度的父項目,其餘的維 度較少的子項目由父項目進行向下鑽取(drill down)進行維護。除了上述對於資料
方體的維護還有由 Jin 提出[15]對於 MOLAP 維護的研究,其是使用可擴展的多 維度陣列(extendible multidimensional array)這種架構,將變動方體與資料方體皆
以這種架構進行處理,接著在更新時只要將兩者進行比對即可。
2.4.2 特殊的資料方體維護
這方面的研究有由 Chen 提出對於 pivot(一種將垂直表格轉換為水平的方式)
27
與unpivot 兩種運算方式維護的作法[24],並提出了 Gpivot 的方式轉置多個維度,
並且提出對於資料使用 pivot 的時機,如果能將需要對資料進行的操作如:join、
group by 等先行處理完最後再進行 pivot,可以減少對於資料的計算。Li 則提出 對於商數方體的維護方式[27],其提出一種結構名為家庭樹(family tree)作為維護 時儲存的架構,其做法會定義一數值小於該數值的節點設定為虛擬(pseudo),只 有在等於該數值的節點才會將其設定為實體化(materialized),這樣可以大幅度減 少存取空間而計算時也不會耗費很長的搜尋時間,並且使用了(Sliding Window)
幫助取商數方體的中位數。
2.4.3 其餘維護的考量
這方面的研究有由 Kiviniemi 提出對於探討維護的時機[22],其提出要探討的 架構是在於工業方面上,因為其中的資料變動非常迅速,如果要因應這種快速的 變動將會消耗大量資源。其做法為定義一個門檻值,在原始資料與更動過的資料 差距達到一定程度時才對資料進行維護,以此來減少維護的頻率,降低系統資源 的消耗。除了對於維護時機的探討,還有些研究是探討維度更新方面的研究,由 Hurtado 提出對於 ROLAP 架構下在維護時資料方體的調整方式[21],期考慮的資 料變動包含新增、刪除、修改,以及維度的綱要變動,包含新增或刪除屬性、新 增或刪除某個維度階層的調整方式,還有由 Vaismana 提出基於前者維度更新的 作法[28],將其擴展於 TSOLAP 這種結構上。
28
Kiviniemi[22] 維護的 考量
減少維護次數以節 省消耗資源
Data cube Lazy aggregate Li[27] 特殊的
Data cube extendible
multidimensional array
Vaismana[28] 維護的 考量
Hurtado[21] 其餘維 護的考 量
提出維度更新時的 維護方式
Data cube
29
第 3 章 列聯方體漸進式維護
由於列聯方體所包含的資料與原始資料的架構不同,每當原始資料有所變動,
將無法透過單純合併變動資料(Δ)與列聯方體完成更新,因此本章節將探討如何
對列聯方體進行維護。
3.1 漸進式維護基本構想
列聯方體可視為一種特殊的資料方體,故其維護方式延續傳統的資料方體維 護作法可分為兩種:第一種方式是完全重新計算(fully recomputing from scratch),
是將原始資料與資料變動部分進行合併,在由此合併後資料產生列聯方體,其概 念如圖3-1 所示,其中 DB 代表原始資料,Δ 代表變動資料,ADCold代表原始列
是將原始資料與資料變動部分進行合併,在由此合併後資料產生列聯方體,其概 念如圖3-1 所示,其中 DB 代表原始資料,Δ 代表變動資料,ADCold代表原始列