weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數據加載中……

          Similarity Flooding

          算法大致思路:
          ??????? 把要匹配的模型轉換為帶標記的有向圖(directed labeled graphs。由節點和弧組成的圖,允許對象用自身的屬性及其和其他對象的關系來定義,類似于ER圖)。這些圖要用來做迭代的不動點計算,計算結果將告訴我們一張圖里的哪些節點和第二張圖的節點相似。
          ??????? 為了計算相似度,我們利用了這樣一個直覺:兩個不同的節點是相似的,當它們鄰接元素是相似的。換句話說,兩個元素相似性的一部分傳播給了它們各自的鄰居,這種傳播方式類似于IP廣播,這也是SF這個名字的由來。我們把算法的結果叫做一個?mapping,然后根據匹配目標,選擇特定的過濾器來過濾出一個原始結果的子集。我們希望能夠人工對結果進行修正,需要修正的成員數目就反映了算法的準確性。

          概述:

          ??????? 假設有2個schema,S1和S2。我們要為S1里每一個元素在S2中找到匹配的元素。
          ??????過程如下:
          ??????1. G1 = SQL2Graph(S1); G2 = SQL2Graph(S2);? 把schema變成圖,圖采用了Open Information Model (OIM)規格,圖中node采用矩形和卵形,矩形是文字描述,卵形是標識符

          ??????2. initialMap = StringMatch(G1, G2);??????用字符串匹配做為初始匹配,主要是比較通常的前綴和后綴,這樣的結果通常是不準確的

          ??????3. product = SFJoin(G1, G2, initialMap);??????用SF算法生成結果。假設兩個不同的節點是相似的,則它們鄰接元素的相似度增加。經過一系列的迭代,這種相似度會傳遍整個圖

          ??????4. result = SelectThreshold(product);???結果篩選


          SF算法

          ??????圖中的每條邊,用一個三元組表示(s,p,o),分別是 源點,邊名,目的點。

          δ2.JPG
          ??????相似度傳播圖:首先定義pairwise connectivity graph(PCG) : ((x; y); p; (x'; y')) 屬于 PCG(A;B)<==>(x; p; x')?€ A and (y; p; y')?€ B。 關鍵是p要相同,也就是邊的名字一樣。式子從右向左推導,就可以A、B從兩個模型建立起它們的PCG。圖中的每個節點,都是A和B中的元素構成的2元組,叫做map pairs。
          ??????induced propagation graph。從PCG推導而來,加上了反向的邊,邊上注明了[傳播系數],值為 1/n,n為相應的邊的數目。
          ??????不動點計算:
          ????????????設ó(x; y)?> 0 代表了節點x € A?和 y € B 的相似度,是在整個?A?X B的范圍上定義的。我們把 ó 叫做 mapping。相似度的計算就是基于ó-values的迭代計算。設 ói 代表了第 i 次迭代后的結果,ó0 是初始相似度(可以用字符串相似度的辦法的得出,在我們的例子里,沒有 ó0 ,即讓 ó0 =1)。
          ????????????每次迭代中,ó-values 都會根據其鄰居paris的 ó-values? 乘以[傳播系數] 來增加。例如,在第一次迭代 ó1(a1; b1) = ó0(a1; b1) + ó0(a; b)?*?0.5 = 1.5。類似的,ó1(a, b) = ó0(a, b) + ó0(a1; b1) * 1.0 + ó0(a2, b1) *1.0 = 3.0。接下來,所有 ó 值進行正規化,比如除以當前迭代的 ó的最大值,保證所有 ó 都不大于1。所以在正規化以后,ó1(a; b) = 1.0, ó1(a1, b1) = 1.5/3.0 = 0.5。一般情況下,迭代如下進行:

          未命名4.JPG

          δ3.JPG
          ??????上面的計算進行迭代,直到 ón 和 ón-1之間的差別小于一個閾值,如果計算沒有聚合,我們就在迭代超過一定次數后停止。上圖3的第三副圖,就是5次迭代后的結果。表3時一些計算方法,后面的實驗表明,C比較好。A叫做 sparce,B叫做 excepted,C叫做verbose


          過濾

          ??????迭代出的結果是一種[多匹配],可能包含有用的匹配子集。
          ??????三個步驟:
          ????????????1。用程序定義的[限制條件]進行過濾。
          ????????????2。用雙向圖中的匹配上下文技術進行過濾
          ????????????3。比較各種技術的有效性(滿足用戶需求的能力)
          ??????限制:主要有兩種,一個是[類型]限制,比如只考慮[列]的匹配(匹配雙方都是列)。第二個是 cardinality 限制,即模式S1中的所有元素都要在S2中有一個映射。

          stable marriage問題:n女和n男配對,不存在這樣的兩對 (x; y)和(x0; y0),其中x喜歡 y0 勝過 y,而且 y0 喜歡 x 勝過 x0。具有stable marriage的匹配結果的total satisfaction可能會比不具有stable marriage的匹配結果還低!

          匹配質量的評估

          ???基本的評估思想,就是? 用戶對匹配結果做的修改越少,匹配質量就越高(修改結果包括去掉錯誤的pair,加上正確的pair)
          未命名1.JPG? n是找到的匹配數,m是理想的匹配數,c是用戶作出修正的數目。

          from: http://www.cnblogs.com/anf/archive/2006/08/15/477700.html

          posted on 2006-11-17 18:25 weidagang2046 閱讀(1363) 評論(2)  編輯  收藏 所屬分類: AlgorithmSearch Engine

          評論

          # re: Similarity Flooding [未登錄]  回復  更多評論   

          你那個傳播系數 是怎么弄出來的?
          2011-02-02 00:48 | yy

          # re: Similarity Flooding [未登錄]  回復  更多評論   

          值為 1/n,n為相應的邊的數目。
          這個是怎么解釋?為什么有的是1 有的是2
          這點不明白
          2011-02-02 00:50 | yy
          主站蜘蛛池模板: 濉溪县| 两当县| 临洮县| 汶川县| 郁南县| 界首市| 浑源县| 神农架林区| 阿坝县| 阆中市| 丰宁| 清徐县| 崇明县| 巢湖市| 乌拉特前旗| 太和县| 南陵县| 石景山区| 图木舒克市| 定襄县| 海口市| 同江市| 大城县| 萨嘎县| 仁寿县| 宁晋县| 博兴县| 沙河市| 永修县| 班戈县| 辽宁省| 菏泽市| 云南省| 西平县| 玉门市| 苏尼特左旗| 禄丰县| 德格县| 毕节市| 贵州省| 浠水县|