• 沒有找到結果。

跨群候選配對相似度計算步驟

第四章 結合 MapReduce 之相似資料配對

4.5 跨群候選配對相似度計算步驟

此步驟會實際計算前一步驟所產生候選配對之實際相似度值,由於經過 前面步驟的篩除,留下來的候選配對較全部配對數量減少很多,因此這步驟 就直接精確計算出候選配對的相似度,輸出相似度大於門檻值的配對即為跨 群相似配對。

以表 1 資料為例,使用此架構總共需要計算(1)群內相似配對:(d1, d4)(d2, d3)(d5, d6),(2)群候選配對:(g1, g2)(g1, g3)(g2, g3),及(3)跨群候選配對(d4, d5)(d4, d6),共 8 組資料配對的相似度,且計算時利用反向索引串列在計算中預先 篩除不相似之配對進行加速。若單使用反向索引串列則必須考慮 6 筆資料彼 此組合的 15 種配對,當資料配對數量篩減到一定數量以下時,直接計算資 料配對的相似度就很快速

第四章 結合 MapReduce 之相似資料配對

本章節中,將介紹 MapReduce 平行架構,並探討如何將前一章節中相似 配對問題之作法實作於平行處理架構。

4.1 MapReduce 架構

MapReduce 是一種平行處理架構,一個完整的 MapReduce 中包含兩個 步驟,Mapper 將輸入資料轉換成<key1, value1>的形式,一組配對包含一個 鍵(key)及一個值(value)在 Reducer 步驟中,會將擁有相同 key 的所有配對交

由同一處理器執行,每一處理器都擁有相同的執行步驟,將同樣 key 的資料 作合併整理,接著輸出<key2, value2>的一組配對,最後再由工作管理將所 有不同的配對統整並寫出輸出文件。藉由 Mapper 的映射及 Reducer 的歸納 整理,讓工作分成一些小部分的獨立計算,且每份獨立的工作計算都較為簡 單。以下我們將介紹在本研究中如何將相似資料配對問題以平行架構實作,

以減少回覆時間

4.2 相似資料配對問題結合 MapReduce 架構之探討

在前一章節中,本研究結合預先分群與反向串列索引提出一有效計算相 似配對之方法,在其架構中分成分群步驟(Grouping)、群內相似配對計算步 驟 (Find intra-group similar pairs) 、 群 候 選 配 對 選 取 步 驟 (Find similar

group-pairs) 、 候選配對選取步驟(Generate inter-group candidate pairs) 、及 跨群候選配對相似度計算步驟(Verify inter-group similar pairs)五個步驟,在五 個步驟中,群內相似配對計算步驟、群候選配對選取步驟、及跨群候選配對 相似度計算步驟等三個步驟需要計算向量配對的相似度,通常是花費最多時 間進行計算的三個步驟。由於此三步驟都可將處理資料分成多個子資料集,

且不同子資料集的處理彼此間不需要有資料的交換,因此將此三步驟以

MapReduce 平行架構進行計算,將可減少相似資料配對搜尋所需處理時間。

以下將介紹如何將此三個處理步驟以 MapReduce 平行架構實作。

4.3 群內相似配對計算步驟

此步驟的目的是對分配在同一群的資料,用反串索引串列及最大值所出 現維度之特性,快速計算出同群中相似配對的方法。本研究運用 MapReduce 架構時將此步驟工作分為兩階段的 MapReduce 來完成,第一階段先建立索引,

第二階段則利用建立好的索引進行相似度計算。

索引建立階段,以表 1 為例,資料在建立索引階段輸入如表 18 所示,

輸入時會將同一行的資料視為具有獨特的 key 值,將分配給不同處理器進行

Mapper 處理步驟。Mapper 會根據該行向量的內容建立反向索引,以表 18 的 d 3為例,會產生< f1, 0.45:d3_ g 2> 以及< f2, 0.9: d 3_g 2>兩組鍵值對應,< f1, 0.45: d 3_ g 2>代表 d 3在維度 f1有出現且值為 0.9 並記錄 d 3屬於群 g 2,表 18 中的資料經由 Mapper 處理所輸出的<key, value>結果如表 19 所示。在 Reducer

會蒐集相同的 key 值之<key, value>進行合併整理,因此整理出所有在相同特 徵維度具非 0 值的資料及該筆資料在該維度中的特徵值。以表 22 中為例,

<f1, 1: d1_ g 3>, < f3,0.76: d4_ g 3>, < f3,0.6: d5_ g 1>, < f3,0.5: d 6_ g 1>等四筆<key, value>對應包含相同的 key 值”f1”,會被分配在同一處理器進行整併,將所有 出現該資料進行串接,最後獲得此特徵的反向索引串列(1: d 1_ g 3, 0.76: d 4_ g

3, 0.6: d 5_ g 1, 0.5: d 6_ g 1)。表 19 的資料經由 Reducer 處理後的輸出如表 20 所示,會以特徵為單位記錄那些資料在此特徵的非 0 特徵值,此步驟結束後 便可得到所有資料的反向串列索引。

上述處理步驟建立的反向串列索引並未使用論文[5]中將資料分為字首 向量及字尾向量的方式,若採用字首向量及字尾向量必須對一筆資料進行兩 階段的分析,先計算字尾向量必須大於 0,且字首向量加上字尾向量的相似 度必須大於門檻值。此外,還必須對原資料進行分析,找出索引建立位置,

此步驟中也需要在 MapReduce 輸入資料中提供每一維度最大值的資訊,接著 將資料分成字首部分及字尾部份分別計算,最後加總出相似度值。由於此種 做法是先利用字尾向量進行篩除,在字首向量及字尾向量的計算是以循序方 式進行,無法有效結合平行運算的概念,因此,本研究採用最基本的反向索 引串列在 MapReduce 架構進行索引建立時,對所有特徵都進行反向索引的建 立。

表 18 建立索引階段中輸入格式

d 1_ g 3: f3=1, d 2_ g 2: f2=1,

d 3_ g 2: f1=0.45, f2=0.9 d 4_ g 3: f1=0.65, f3=0.76 d 5_ g 1: f1=0.6, f3=0.6, f4=0.52 d 6_ g 1: f1=0.5, f3=0.5, f2=0.5, f4=0.5

表 19 建立索引階段 Mapper 產生之<key, value>輸出 key Value

d 1 < f3, 1: d 1_ g 3>

d 2 < f2, 1: d 2_ g 2>

d 3 < f1, 0.45: d 3_ g 2>, < f2, 0.9: d 3_ g 2>

d 4 < f1,0.65: d 4_ g 3>, < f3,0.76: d 4_ g 3>

d 5 < f1,0.6: d 5_ g 1>, < f3,0.6: d 5_ g 1>, < f4,0.52: d 5_ g >

d 6 < f1,0.5: d 6_ g 1>, < f2,0.5: d 6_ g 1>, < f3,0.5: d 6_ g 1>, < f4,0.5: d 6_ g 1>

表 20 建立索引階段中 Reducer 產生的<key, value>輸出 Key Value

f1 0.45: d 3_ g 2,0.65: d 4_ g 3,0.6: d 5_ g 10.5: d 6_ g 1 f2 1: d 2_ g 2,0.9: d 3_ g 2,0.5: d 6_ g 1

f3 1: d 1_ g 3,0.76: d 4_ g 3,0.6: d 5_ g 1,0.5: d 6_ g 1

f4 0.52: d 5_ g 1,0.5: d 6_ g 1

相似度的計算階段,會根據建立好的索引進行相似度的計算,建立索引 階段的輸出即為此步驟的輸入,如表 20 所示。此階段的 Mapper 會將各維度 包含的資料進行組合配對,資料配對的形式以表 20 為例,在特徵 f2中有出 現非 0 特徵值的有 d 2 d 3 d 6等三筆資料,在 Mapper 會先計算此維度不同資 料的部分相似度值,例如配對(d 2,d 3)即可在維度 f2中獲得 1*0.9 的相似度值,

接著以配對(d 2,d 3)當作 key 值,value 則為該維度計算所得之相似度值 0.9。

以特徵 f2為例將所有索引配對後,所有產生的配對有(d 2 d 3,0.9)( d 2 d 6,0.5)( d

3 d 6,0.45)等三組。表 20 的資料經由相似度計算階段之 Mapper 輸出結果如表 21 所示。由於此步驟是針對同群內的資料配對進行計算,只需考慮由同群資 料所提供的配對。將表 21 篩除掉由不同群產生的配對後結果如表 22 所示,

比較表 21 及表 22 可以看出檢查配對是否同群可篩減掉大部分的配對,減少

Reducer 步驟的輸入,以增加 Reducer 階段執行的速度。接下來在 Reducer 會

累加各配對在不同特徵計算獲得的部分相似度值,得到配對的相似度值。例 如以配對(d 5, d 6)來看,Reducer 會蒐集所有以(d 5, d 6)當作 key 值的鍵值對應,

所對應的 value 有 0.3, 0.3, 0.26 就是配對(d 5, d 6)在各個維度中所計算出的部 分相似度值,加總這些值即可得到總體的相似度值,即為 0.3+0.3+0.26=0.86。

當相似度值大於門檻值 0.8,則此配對為一組相似配對。即輸出<key, value>

為一組答案。

表 21 相似度計算階段 Mapper 產生的<key, value>輸出 key Value

f1

(d 3 d 4,0.292),( d 3 d 5,0.27),( d 3 d 6,0.225) (d 4 d 5,0.39), d 4 d 6,0.325),( d 5 d 6,0.3) f2 (d 2 d 3,0.9)( d 2 d 6,0.5)( d 3 d 6,0.45)

f3

(d 1 d 4,0.76),( d 1 d 5,0.6),( d 1 d 6,0.5) (d 4 d 5,0.456),( d 4 d 6,0.38),( d 5 d 6,0.3) f4 (d 5 d 6,0.26)

表 22 相似度計算階段 Mapper 篩除不同群產生配對 key Value

f1 (d 5 d 6,0.3) f2 (d 2 d 3,0.9)

f3 (d 1 d 4,0.76), (d 5 d 6,0.3) f4 (d 5 d 6,0.26)

表 23 相似度計算階段中 Mapper 篩除不同群配對後的配對結果 Key Value

(d 2 d 3) 0.9 (d 1 d 4) 0.76

(d 5 d 6) 0.3+0.3+0.26=0.86

4.4 群候選配對選取步驟

此步驟的目的是利用群的代表向量,估算兩群間是否可能產生相似配對。

本研究在此步驟的處理也運用反向串列索引能快速計算相似配對的特性,作 法與群內相似配對計算步驟相同,唯一的差別是輸入資料為每個群的代表向 量,且所有代表向量皆視為在同一群(GLeader)中,即可採用 4.3 節所述之處理 作法。

4.5 跨群候選配對相似度計算步驟

經由 4.4 小節步驟中會產生之群候選配對為(g1,g3),表示 g1及 g3中的資 料有可能產生相似配對,因此再以資料向量的 max 值及 1-norm length 值當作 篩選標準進行候選配對篩除後,剩餘(d4 d5)及(d 4 d 6)等兩個候選配對。此步 驟的目的是計算出這些候選配對的實際相似度,表 24 為此步驟的輸入格式,

輸入格式會記錄所有出現在該配對的非 0 特徵值。以配對(d4 d 5)為例,會記 錄 d 4的非 0 特徵值(f1=0.65, f3=0.76)及 d 5的非 0 特徵值(f1=0.6, f3=0.6, f4=0.52)。

Mapper 會以配對加上特徵為 key 值,並以特徵值為 value 的方式進行輸出,

以表 24 中(d 4 d 5)配對為例,為了計算特徵 f1所提供的相似度必須以(d 4 d 5)_ f1

為 key 值,方便計算此配對在該特徵上所提供之相似度值。表 24 為經由

Mapper 處理後輸出如表 25 所示。由表 25 可以發現,在表 24 中相同的一行 中可能產生兩筆相同 key 值的(key, value)對應,如表 25 中 d 4 d 5_f1則可以產 生(d 4 d 5_ f1,0.65)及(d 4 d 5_ f1,0.6)兩組對應,此兩組對應表示此配對中的兩筆 資料 d 4和 d5在維度 f1中都具有非 0 特徵值,將兩筆對應 value 相乘即為此配 對在維度 f1的部分相似度值。

在 MapReduce 架構中除了 Mapper 階段以及 Reducer 階段,還可視需求 增加 combine 階段。combine 階段是介於 Mapper 階段以及 Reducer 階段中間,

目的為將同台處理器中 Mapper 產生之相同 key 值的對應先整理。以表 27 為 例,輸入時會將同一行的資料交付給一個處理器,在同一處理器中產生的<key,

value>對應會先在 combiner 進行相同 key 值的整理。以表 25 為例,(d 4 d 5_ f1,0.65)及(d 4 d 5_ f1,0.6)為 key 值相同的兩組對應,會在 combine 階段先進行 整理,此處只要先將兩組對應的 value 相乘即可得到該配對在此維度的部分 相似度值。若在 combine 階段中只包含單一<key, value>對應,則可以確定此 配對中只有一筆資料在此維度具有非 0 的特徵值,即此維度所提供的部分相

似度為 0。利用此方法將表 25 經由 combine 步驟整理後,輸出如表 26。

表 24 跨群候選配對相似度計算之輸入形式 (d 4 d 5): f1=0.65, f3=0.76, f1=0.6, f3=0.6, f4=0.52

(d 4 d 6): f1=0.65, f3=0.76, f1=0.5, f3=0.5, f2=0.5, f4=0.5

表 25 跨群候選配對相似度計算 Mapper 之輸出資料

Key value

d 4 d 5_ f1 (0.65),(0.6) d 4 d 5_ f3 (0.76),(0.6) d 4 d 5_ f4 (0.52) d 4 d 6_ f1 (0.65),(0.5) d 4 d 6_ f2 (0.5) d 4 d 6_ f3 (0.76),(0.5) d 4 d 6_ f4 (0.5)

表 26 跨群候選配對相似度計算 combiner 之輸出資料

Key value

d 4 d 5 (0.39) d 4 d 5 (0.456) d 4 d 6 (0.325) d 4 d 6 (0.38)

表 26 所示為 Reducer 的輸入,最後只需以配對當作 key 值進行各維度的 相似度加總即得到各配對之相似度結果如表 27 所示。

比較表 25 及表 26 可發現,經過 combine r 處理階段後可有效減少<key,

value>的對應數量。MapReduce 架構中 Reducer 所執行的工作是統整前一步 驟的輸出,且在相似資料配對問題時,Reducer 必須統整所有 Mapper 在各維 度中所計算的相似度值才能計算完整相似度值,過多的<key, value>對應會加 重 Reducer 的負擔,因此藉由 combiner 階段縮減 Reducer 的工作量可增加平

行處理的效率。

表 27 跨群候選配對相似度計算 Reducer 輸出資料

Key value

d 4 d 5 0.39+0.456=0.846 d 4 d 6 0.325+0.38=0.705

將所有配對以表 24 的方式寫入能夠降低 Reducer 階段輸入<key, value>的 數量,但由於在 Mapper 要以配對方式寫入,當資料量大時,將所有資料配 對以表 24 的方式寫入會讓輸入檔案過大,增加 Mapper 階段的回覆時間,因

將所有配對以表 24 的方式寫入能夠降低 Reducer 階段輸入<key, value>的 數量,但由於在 Mapper 要以配對方式寫入,當資料量大時,將所有資料配 對以表 24 的方式寫入會讓輸入檔案過大,增加 Mapper 階段的回覆時間,因

相關文件