天天看點

Apache Spark機器學習.2.3 一緻性比對

<b>2.3 一緻性比對</b>

<b></b>

本節,我們将讨論一個重要的資料準備主題,就是一緻性比對和相關解決方案。我們将讨論幾個使用spark解決一緻性問題的特征和使用spark的資料比對解決方案。

閱讀本節以後,讀者可以使用spark解決一些常見的資料一緻性問題。

2.3.1 一緻性問題

我們經常需要在資料準備過程中處理一些屬于同一個人或單元的資料元素,但這些元素并不相似。例如,我們有一些larry z.的購物資料和l. zhang的網頁活動資料。larry z.和l. zhang是否是同一個人?資料中是否有很多一緻性的變化。

由于實體變異的類型非常普遍,可能引起的原因有:重複、錯誤、名字變化和有意的别名等,使得對象比對成為機器學習資料準備中的一個巨大挑戰。有時,完成比對或尋找關聯都非常困難,而且這些工作非常耗時。然而,任何種類的錯誤比對将産生許多錯誤,資料的不比對也會産生偏見,是以資料比對工作也是非常必要和極為重要。與此同時,正确的比對也會在分組檢測方面有附加的價值,例如恐怖組織、販毒集團檢測。

目前,已經開發了一些新的方法來解決這個問題,例如模糊比對。本節,我們主要介紹一些常用的方法,包括:

使用sql查詢手工查找

該方法比較費力,發現少,但準确度高。

自動資料清洗

該方類方法一般會使用幾項規則,這些規則使用資訊最豐富的屬性。

詞彙相似性

這種方法合理且有用,但會産生許多假告警。

特征與關系比對

這種方法比較好,但無法解決非線性影響。

上述方法的精度往往取決于資料的稀疏性和資料集的大小,也取決于這些任務是否是解決重複、錯誤、變異,或别名等問題。

2.3.2 基于spark的一緻性比對

與前面類似,盡管最常用的工具是sparksql和r語言,但我們還是要介紹一些使用sampleclean處理實體比對問題的方法。

2.3.3 實體解析

對于一些基本的實體比對任務,sampleclean提供了簡單易用的界面。sampleclean包含一個名為entityresolution的類,該類包含了一些常見的重複程式模式。

一個基本的entityresolution類包括以下幾個步驟:

1.找到一個分類屬性不一緻的列。

2.将相似的屬性連接配接在一起。

3.選擇連接配接屬性的一個單獨正則表達方法。

4.變更資料。

短字元串比較

我們有一個短字元串的列,該列存在表示的不一緻。entityresolution.short-attribute-canonicalize函數的輸入包括:目前内容,需要清洗的工作集名稱,需要修正的列、門檻值0或1(0全部合并,1僅比對合并)。該函數使用editdistance作為預設的相似度量方法。下面是一個代碼例子:

長字元串比較

我們有一個長字元串的列,例如位址,它們是相近的但不準确。基本的政策是切分這些字元串,比較詞彙集而不是整個字元串。該方法使用weightedjaccard作為預設的相似性度量方法。下面是一個代碼例子:

記錄去重

更複雜的去重任務是記錄的不一緻,而不是單個字段的不一緻。也就是說,多個記錄指向相同的實體。recorddeduplication使用long attribute作為預設的相似度量方法。下面是一個代碼例子:

更多關于sampleclean的資料,請通路http://sampleclean.org/guide/。

2.3.4 更好的一緻性比對

正如前幾節展示的,與資料清洗類似,同時使用sampleclean和spark可以使一緻性比對更容易——編寫較少的代碼和使用更少的資料。正如前面讨論的,自動化的資料清理非常容易和快速,但準确性難以保證。把一緻性比對做得更好的常用方法是動用更多的人員使用費力的衆包(crowd sourcing)方法。

sampleclean在衆包去重方法中組合了算法、機器、人員等因素。

衆包去重

由于衆包非常難以擴充到非常大的資料集,sampleclean系統使用衆包(crowd)在資料的一個采樣集上進行去重,然後訓練一個模型,并在整個資料集上推廣衆包的去重工作。具體來講,sampleclean使用active learning算法進行采樣,可以快速建立一個較好的模型。

配置衆包

為了使用crowd worker清理資料,sampleclean使用開源的ampcrowd服務來支撐多個crowd平台,并進行品質控制。是以,使用者必須安裝ampcrowd。此外,必須通過配置傳遞crowdconfiguration對象将crowd操作符指向ampcrowd伺服器。

使用衆包

sampleclean目前提供了一個主要的衆包操作符:activelearningmatcher。

這是entityresolution算法的擴充步驟,用于訓練一個衆包監督模型來預測重複。請看下面的代碼:

比對器的配置如下:

将比對器添加到已有的算法,使用下面的函數:

繼續閱讀