資料相似性的度量方法總結
現實中,我們需要處理的資料具有著不同的形式和特徵。而對資料相似性的度量又是資料探勘分析中非常重要的環節。針對這些不同形式的資料,不可能找到一種具備普遍意義的相似性度量演算法,甚至可以說,每種型別的資料都有它對應的相似度度量標準。這些標準很多,也比較雜亂,有必要作以總結。
廢話不多說了,直接進入正題。
資料屬性分類
現實世界,任何事物其實都可以描述成一個物件。這個概念其實跟面向物件程式設計中物件的含義是一致的。物件有很多屬性,屬性的型別當然也有所不同。打個比方說,如果把我看做一個物件,那我就基本擁有“姓名”、“性別”、“年齡”、“籍貫”等等,這些都是我的屬性,和起來就是一條資料,也就是戶籍部門拿到的關於我這個物件的資料。同理,如果把一張圖片看做一個物件,那麼“畫素值”,“亮度”、“對比度”,“飽和度”等等就是圖片的屬性。處理影象資料,當然要從這些屬性入手。
所以,看到這裡,我們大概能總結出來2點:
1. 一般情況下的資料探勘工作,其實就是針對1個或多個物件及其屬性做的運算,而資料一般就被表示為:object: attributes的形式。
2. 不同物件(甚至相同物件在不同的應用場景下)的屬性型別不同。需要分類討論。
標稱屬性
屬性值一般是一些符號或事物的名稱。比如說,對相親網站的註冊使用者,系統可會記錄如下資訊:性別,年齡,職業,地點,學歷等等。這些資料都是通過名稱來描述的。
二元屬性
這個好理解了,所有屬性都可以通過最簡單的0,1描述。一般常用來表示存在性。比如說,一個感冒患者一般會用是否存在“發燒”、“流涕”、“咽痛”等症狀來做記錄,存在這些狀況,記錄為1,不存在,記錄為0。當一個患者來看病時,當然就可以通過這些屬性值是否為1來做出診斷的結果。
序數屬性
屬性值是由有意義的排序數決定的。例如,對一部電影評價,可以分為“劇情”、“演員”、“音樂”、“特技”等幾個方面評價,而每個方面都有“好”、“中”、“差”3個選項供選擇。而這些有排序意義的選擇之間我們是無法說明具體差距的。也就是說,是定性,而非定量。
到此為止,上面的3種屬性都是定性的,而非定量的。
數值屬性
那麼對於屬性可以定量的這種屬性型別,只怕也是我們生活中遇到情況最多的了,這種屬性,就叫“數值屬性”,有關於這些屬性值的分析可以說是最多的,常見的平均數,眾數、中位數等等,就是處理這些屬性的。後面我們還可以看到,對於擁有數值屬性的物件相似度的度量,也有著相應的方法。
相似性度量
我們分別就剛才所說的4種屬性,看看當一個物件擁有不同型別的屬性時,應該用什麼方法度量。其實,我個人認為,沒有人能告訴你一種物件到底該用什麼樣的方法度量其相似性,因為現實中,可能很多情況下你所需要測量的資料是非常複雜的,所以這裡也只是給出一些常見的處理方法,具體問題還要具體分析。
另外,說一下,我本文的工作大多參考了韓家煒先生的大作《資料探勘》,韓先生是此道大師,希望大家有空了多去看看他的文章。
標稱屬性相似度度量
很簡單,拿兩個物件
假設這一類物件一共有
二元屬性相似度度量
總的來說,和標稱屬性是類似的,但是情況稍微複雜一點。要分成對稱和非對稱2種形式。
(1)對稱二元屬性
先看對稱的情況,所謂對稱,是說物件的所有屬性都是一樣重要的。這就和標稱屬性類似了,用所有具有相同屬性值的屬性個數除總的屬性數。公式和標稱屬性一致:
需要注意的是,這裡的
(2)非對稱二元屬性
所謂非對稱,是說我們只關心“正匹配”的情況,也就是隻關心兩個物件屬性中,都是1的情況。公式如下:
數值屬性相似度度量
當然,我們還有序數屬性的相似度沒講。但是序數屬性的相似性測量與數值屬性確是有一定聯絡的,所以,先看數值屬性物件如何度量其相似度。
對於數值屬性的相似度度量有一套完整的方法,那就是大名鼎鼎的“閔可夫斯基”距離,也叫
(1) 歐氏距離
因為數值屬性一般都是以數值向量表示的。所以,當然也要從數值向量上下功夫。最常見的判斷兩個向量距離的方法就是我們熟知的歐氏距離,公式如下:
(2) 曼哈頓距離
除了歐氏距離,還有一種方法叫曼哈頓距離,起名的由來是計量由方塊形構成的曼哈頓街區的距離,因為街區不能橫穿,只能按照方格走到。所以,這種距離的度量方式也就很清晰了,就是兩個向量之間各個維度的差的絕對值之和,公式如下:
(3) 閔可夫斯基距離
將曼哈頓距離與歐氏距離推廣,可以得到閔可夫斯基距離,也叫