在數據挖掘中,在確定適用的算法模型之后,應該讓我們的數據也能適用我們的算法。例如聚類,最近鄰分類等算法,在這些算法中我們往往需要給我們的數據分類,相似的分為一類,不相似的分為不同類。 比如為了精准營銷,商店需要建立顧客畫像,得出具有類似特征(例如類似的收入,居住區域和年齡,職業等)的顧客組。也就是我們需要一個評判標准,評估對象之間比較的相似或不相似程度的標准,也就是數據的相似性和相異性。
數據矩陣和相異性矩陣
說到相似性和相異性,我們要先說說數據矩陣和相異性矩陣。
數據矩陣,上個圖先看下。

也叫對象-屬性結構:這種數據結構用關系表的形式或 n*p ( n 個對象 p 個屬)矩陣存放 n 個數據對象,每行對應一個對象 。
相異性矩陣,如圖

也叫對象-對象結構:存放 n 個對象兩兩之間的鄰近度。 d(i,j)是對象i和對象j之間的相異性的度量。一般來說,d(i,j是個非負數)。當i和j高度相似或‘接近’時,它的值接近於0,越不同,這個值越大。
那么我們也可以由相異性度量推出相似性。例如,對於標稱屬性來說。

我們了解完數據矩陣和相異性矩陣后,接下來講講不同數據屬性的度量相異性的方法。我們在這里詳細得講了數據屬性,每種屬性的相異性度量是不一樣的。
標稱屬性的臨近性度量
標稱屬性可以取兩個或多個狀態。例如color是一個標稱屬性它可以有5種狀態:黃,紅,綠,粉紅,藍。兩個對象i和j之間的相異性可以根據不匹配率來計算。如下圖所示

其中,i,j 是對象,m 是匹配的數目(就是 i 和 j 取值相同狀態的屬性數),而 p 是刻畫對象的屬性總數
數據屬性的相異性
度量數據屬性數據的相異性,有很多種方法。被廣泛應用得有歐幾里得距離,曼哈頓距離,閔柯夫斯基距。
計算前提是:我們應該讓數據規范化。比如高度有可能是米或者寸,我們應該先統一它們的單位。規范化方法我們在數據預處理的時候會講。這里我們知道什么是規范化就可以了。
最流行的距離度量是歐幾里得距離公式,如下所示

其中Xi1,Xi2分別是i對象的屬性們,Xj1,Xj2分別是j對象的屬性們。 另一個著名的度量方法是曼哈頓距離,如下

二元屬性的鄰近性度量
我們先來講講對稱和非對稱二元屬性刻畫的對象間的相異性和相似度度量。那么我們怎么計算兩個二元屬性之間的相異性呢。
前文我們說到二元屬性只有兩種狀態:0 或 1.例如患者的屬性smoker,1表示抽煙,0表示不抽煙。假如所有的二元屬性都看做具有相同的權重,則我們可以得到一個行列表 如圖

上圖中, q 是對象 i 和 j 都取 1 的屬性數,r 是在對象 i 中取 1,在對象 j 中取 0 的屬性數,s 是在對象 i 中取 0,在對象 j 中取 1 的屬性數,而 t 是對象 i 和對象 j 中都取 0 的屬性數。屬性的總數 p,
其中 p=q+r+s+t。
對稱的二元屬性,每個狀態都同樣重要,因此基於二元屬性的相異性稱作對稱的二元相異性。如果對象i和j的相異性都用對稱的二元屬性刻畫,則i和j的相異性為,如圖所示

那么對於不對稱的二元屬性,,兩個狀態不是一樣重要的。取值為0 的意義很小,我們可以忽略不計,我們稱作非對稱的二元相似性。所以i和j的相異性為,如圖所示

這個也叫 Jaccard系數,它是比較常用的一個系數。
接下來我們來看看如何利用我們上面所說的度量方法來度量患者之間的相異性
下面是一張患者記錄關系表,如圖

假如一個患者的記錄表包含屬性name(姓名),gender(性別),fever(發燒),cough(咳嗽),test-1,test-2,test-3,test-4。其中name是對象標識符,gender是對稱屬性。其它的屬性都是非對稱二元。
對於非對稱屬性,值 Y (yes)和 P (positive)被設置為 1,值 N (no)被設置為 0.假設三個對象之間的距離只基於非對稱屬性來計算。那么三個患者 Jack,Mary,Jim 兩兩之間的距離 d(Jack,Jim) = ?
分析:
Jack和Jim之間的非對稱屬性fever(1,1),cough(0,1),test-1(1,0),test-2(0,0),test-3(0,0),test-4(0,0),根據非對稱屬性相異性的算法,我們不把(0,0)列入參考, q(1,1)的個數為 1, r(1,0)的個數為1,s(0,1)的個數為 1,根據非對稱屬性
d(i,j)=(r+s)/(q+r+s) 得出
d(Jack,Jim) = (1 + 1)/(1 + 1 + 1) = 0.67
同理我們能得出:
d(Jack,Mary)=(0 + 1)/(2 + 0 + 1) = 0.33
d(Jim,Mary)= (1 + 2)/(1 + 1 + 2) = 0.75
最后比較得出

因此這些度量顯示 Jim 和 Mary不大可能患類似的疾病,因此他們具有最高的相異性以及Jcak和Mary最有可能患類似的疾病。
相信通過上面的介紹,我們基本對如何度量數據的相異性和相似性有一個基本的概念,這是聚類的一個基礎算法,有着廣泛的應用,后面我們講聚類的時候會在提及。
更多干貨,歡迎關注公眾號,哈爾的數據城堡,關注免費領取學習資料~
