1. 程式人生 > >資料的相似性和相異性我們可以怎麼分析

資料的相似性和相異性我們可以怎麼分析

在資料探勘中,在確定適用的演算法模型之後,應該讓我們的資料也能適用我們的演算法。例如聚類,最近鄰分類等演算法,在這些演算法中我們往往需要給我們的資料分類,相似的分為一類,不相似的分為不同類。 比如為了精準營銷,商店需要建立顧客畫像,得出具有類似特徵(例如類似的收入,居住區域和年齡,職業等)的顧客組。也就是我們需要一個評判標準,評估物件之間比較的相似或不相似程度的標準,也就是資料的相似性和相異性。

資料矩陣和相異性矩陣

說到相似性和相異性,我們要先說說資料矩陣和相異性矩陣。

資料矩陣,上個圖先看下。

也叫物件-屬性結構:這種資料結構用關係表的形式或 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最有可能患類似的疾病。

相信通過上面的介紹,我們基本對如何度量資料的相異性和相似性有一個基本的概念,這是聚類的一個基礎演算法,有著廣泛的應用,後面我們講聚類的時候會在提及。

推薦閱讀 :
從分治演算法到 MapReduce
Actor併發程式設計模型淺析
大資料儲存的進化史 --從 RAID 到 Hadoop Hdfs
一個故事告訴你什麼才是好的程式設計師

更多幹貨,歡迎關注公眾號,哈爾的資料城堡,關注免費領取學習資料~

 

推薦閱讀 :
從分治演算法到 MapReduce
Actor併發程式設計模型淺析
大資料儲存的進化史 --從 RAID 到 Hadoop Hdfs
一個故事告訴你什麼才是好的程式設計師