參考:http://www.biggorilla.org/zh-hans/walkt/
使用Magellan進行數據匹配過程如下:
假設有兩個數據源為A和B,
A共有四列數據:(A_Column1,A_Column2,A_Column3,A_Column4)
B共有五列數據: (B_Column1,B_Column2,B_Column3,B_Column4,B_Column5)
假設A_Column1和B_Column1是相關的,而A_Column2和B_Column2相關的
1、首先建立合並列表
分別在A和B數據中建立一個混合列mixture
在A中 mixture = A_Column1 + A_Column2 就是把 A_Column1 和 A_Column2兩列的數據合並到mixture列里面,
同理,在B中 mixture = B_Column1+ B_Column2
2、尋找一個候選集
這個過程就是使用重疊系數連接兩個表,我們可以使用混合列創建所需的候選集(我們稱之為C)。
注意:這個過程中threshold這個參數代碼這要C這個集合中要創建一列_sim_score ,表示相似度分數,如何經過匹配_sim_score 的數據小於0.65,那么就是不合格的,說白了就是相識度很小,
threshold這個設置的過多大,導致可能C的集合很小,值越大代表數據相識度越大 ,threshold最大值是1,代表匹配數據完全一樣,值越小代表數據相識度越小,如果所有數據的匹配結果都小於threshold的值,那么
C就是空集合,因此這個值要根據選擇的匹配列數進行設置。
3、指定要素
就是指定在py_entitymatching程序包中哪些列對應於各個數據幀中的要素
4、攔截工具故障排除
確保候選集足夠松動,能夠容納並不十分接近的電影配對。如果不是這樣,那么可能我們已經清除了可能潛在匹配的配對
5、從候選集采樣
目標是從候選集中獲取一個樣本,並手動標記抽樣候選者;也就是指定候選配對是否是正確的匹配。
要在導出的labeled.csv文件中增加一個label列,根據_sim_score列的數據和實際數據情況,來人為的判斷是否是正確的匹配,如果是則在label列中填入數值1,否則,填入數值0
注意:這個label.csv數據集合實際上作為下面機器學習一個訓練集,因此這個label列數據之間影響下面機器學習的效果。
6、機器學習算法訓練
下面用了幾種機器學習算法
在應用任何機器學習方法之前,我們需要抽取一組功能。幸運地是,一旦我們指定兩個數據集中的哪些列相互對應,py_entitymatching程序包就可以自動抽取一組功能。指定兩個數據集的列之間的對應性,
將啟動以下代碼片段。然后,它使用py_entitymatching程序包確定各列的類型。通過考慮(變量l_attr_types和r_attr_types中存儲的)各個數據集中列的類型,並使用軟件包推薦的編譯器和類似功能,我們可以抽取一組
用於抽取功能的說明。請注意,變量F並非所抽取功能的集合,相反,它會對說明編碼以處理功能。
考慮所需功能的集合F,現在我們可以計算訓練數據的功能值,並找出我們數據中丟失數值的原因。在這種情況下,我們選擇將丟失值替換為列的平均值。
使用計算的功能,我們可以評估不同機器學習算法的性能,並為我們的匹配任務選擇最佳的算法。
7、評估匹配質量
評估匹配質量非常重要。可以針對此目的使用訓練集,並衡量隨機森林預測匹配的質量。我們可以發現,我們獲得最高精確性,並且能夠重現測試集。
8、使用訓練的模型匹配數據集
使用訓練的模型對兩個標記進行如下匹配
請注意,匹配數據幀包含了很多存儲數據集抽取功能的列。以下代碼片段移除了所有非必要的列,並創建一個格式良好的擁有最終形成的整合數據集的數據幀。