現實中,我們需要處理的資料具有著不同的形式和特徵。而對資料相似性的度量又是資料探勘分析中非常重要的環節。針對這些不同形式的資料,不可能找到一種具備普遍意義的相似性度量演算法,甚至可以說,每種型別的資料都有它對應的相似度度量標準。這些標準很多,也比較雜亂,有必要作以總結。
廢話不多說了,直接進入正題。
現實世界,任何事物其實都可以描述成乙個物件。這個概念其實跟物件導向程式設計中物件的含義是一致的。物件有很多屬性,屬性的型別當然也有所不同。打個比方說,如果把我看做乙個物件,那我就基本擁有「姓名」、「性別」、「年齡」、「籍貫」等等,這些都是我的屬性,和起來就是一條資料,也就是戶籍部門拿到的關於我這個物件的資料。同理,如果把一張看做乙個物件,那麼「畫素值」,「亮度」、「對比度」,「飽和度」等等就是的屬性。處理影象資料,當然要從這些屬性入手。
所以,看到這裡,我們大概能總結出來2點:
1. 一般情況下的資料探勘工作,其實就是針對1個或多個物件及其屬性做的運算,而資料一般就被表示為:object: attributes的形式。
2. 不同物件(甚至相同物件在不同的應用場景下)的屬性型別不同。需要分類討論。
這個好理解了,所有屬性都可以通過最簡單的0,1描述。一般常用來表示存在性。比如說,乙個感冒患者一般會用是否存在「發燒」、「流涕」、「咽痛」等症狀來做記錄,存在這些狀況,記錄為1,不存在,記錄為0。當乙個患者來看病時,當然就可以通過這些屬性值是否為1來做出診斷的結果。
屬性值是由有意義的排序數決定的。例如,對一部電影評價,可以分為「劇情」、「演員」、「**」、「特技」等幾個方面評價,而每個方面都有「好」、「中」、「差」3個選項供選擇。而這些有排序意義的選擇之間我們是無法說明具體差距的。也就是說,是定性,而非定量。
到此為止,上面的3種屬性都是定性的,而非定量的。
那麼對於屬性可以定量的這種屬性型別,只怕也是我們生活中遇到情況最多的了,這種屬性,就叫「數值屬性」,有關於這些屬性值的分析可以說是最多的,常見的平均數,眾數、中位數等等,就是處理這些屬性的。後面我們還可以看到,對於擁有數值屬性的物件相似度的度量,也有著相應的方法。
我們分別就剛才所說的4種屬性,看看當乙個物件擁有不同型別的屬性時,應該用什麼方法度量。其實,我個人認為,沒有人能告訴你一種物件到底該用什麼樣的方法度量其相似性,因為現實中,可能很多情況下你所需要測量的資料是非常複雜的,所以這裡也只是給出一些常見的處理方法,具體問題還要具體分析。
很簡單,拿兩個物件o1
,o2 舉例,直接看這兩個物件每種屬性的屬性值的匹配數。
假設這一類物件一共有
n 個屬性(每個物件都有這
n個屬性),兩個物件o1
,o2 匹配的屬性數為
m ,那麼相似度為匹配數占總屬性數的總數。si
m(o1
,o2)
=mn總的來說,和標稱屬性是類似的,但是情況稍微複雜一點。要分成對稱和非對稱2種形式。
(1)對稱二元屬性
先看對稱的情況,所謂對稱,是說物件的所有屬性都是一樣重要的。這就和標稱屬性類似了,用所有具有相同屬性值的屬性個數除總的屬性數。公式和標稱屬性一致:si
m(o1
,o2)
=m1+
m2n
需要注意的是,這裡的m1
代表物件o1
,o2 的所有屬性中,全都是1的屬性數,m2
代表全都是0的屬性數。m1
+m2 就是2個物件所有屬性值相同的屬性的數量了。可見,基本與標稱屬性的度量演算法是一致的。
(2)非對稱二元屬性
所謂非對稱,是說我們只關心「正匹配」的情況,也就是只關心兩個物件屬性中,都是1的情況。公式如下:si
m(o1
,o2)
=m1n
m1 的意義與上面的相同。其實,如果把2個物件看做是2個集合的話,相當於就是2個集合的交比2個集合的並。所以,這個公式不僅可以應用於二元屬性,也可以應用於對2個集合相似度的度量,這個公式也被叫做jaccard係數。比較普遍的寫法是:si
m(u,
v)=u
∩vu∪
v u,
v 代表2個集合,不一定非要是相同元素數量的。
當然,我們還有序數屬性的相似度沒講。但是序數屬性的相似性測量與數值屬性確是有一定聯絡的,所以,先看數值屬性物件如何度量其相似度。
對於數值屬性的相似度度量有一套完整的方法,那就是大名鼎鼎的「閔可夫斯基」距離,也叫lp
範數。(1) 歐氏距離
因為數值屬性一般都是以數值向量表示的。所以,當然也要從數值向量上下功夫。最常見的判斷兩個向量距離的方法就是我們熟知的歐氏距離,公式如下:si
m(v1
,v2)
=(v11
−v21)
2+(v
12−v22
)2+⋯
+(v1
n−v2
n)2−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−√
v1,v2
代表2個向量,也就是兩個由數值屬性描述的物件。這兩個向量的維度都是
n ,代表有多少種屬性。
(2) 曼哈頓距離
除了歐氏距離,還有一種方法叫曼哈頓距離,起名的由來是計量由方塊形構成的曼哈頓街區的距離,因為街區不能橫穿,只能按照方格走到。所以,這種距離的度量方式也就很清晰了,就是兩個向量之間各個維度的差的絕對值之和,公式如下:si
m(v1
,v2)
=|v11
−v21|
+|v12
−v22|
+⋯+|
v1n−
v2n|
(3) 閔可夫斯基距離
將曼哈頓距離與歐氏距離推廣,可以得到閔可夫斯基距離,也叫lp
範數。公式如下:si
m(v1
,v2)
=|v11
−v21|
p+|v
12−v22
|p+⋯
+|v1
n−v2
n|p−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−√p
可見,閔可夫斯基距離就是曼哈頓距離與歐氏距離的推廣,或者說曼哈頓距離與歐氏距離是閔可夫斯基距離的2種特殊情形,曼哈頓距離也可以叫做l1
範數,歐式距離也就是l2
範數。序數屬性的每個屬性值都代表了一種次序,所以,不論使用數字表示的,還是用文本性的敘述,都可以表示成數字的形式。例如,乙個物件的某個屬性有「大」、「中」、「小」3個可能的屬性值,我們當然可以用相應的1、2、3來替代這種文本性的敘述。
當轉換成對應的整數之後,為了使每個屬性都有相同的權重(這個很容易理解,有些屬性只有「大」、「中」、「小」3中選項,有些卻有「下」、「中下」、「中」、「中上」、「上」5個屬性,這樣,不同屬性之間的權重當然沒有可比性了),將通過以下公式將每個整數型的屬性值對映到[0.0, 1.0]的區間上。y=
x−1m
−1其中,x為整數型的屬性值,m為這個屬性總共有多少種可能的屬性。像我們剛才舉的「大」、「中」、「小」的例子,假如現在乙個物件這個屬性對應的屬性值為「中」,那麼做歸一化之後的屬性值就是2−
13−1
=0.5
上面說的這幾種情況都是資料庫中的資料相對型別比較統一,但是很多時候,實際工作中遇到的情況卻並非如此。我們遇到的一組資料可能擁有多種型別的屬性,也就是混合型別屬性。
碰到這種情況,一種一般的處理辦法是按照如下公式:si
m(o1
,o2)
=1−∑
mi=1
δi⋅(
1−si
m(o1
i,o2
i))∑
mi=1
δi=∑
mi=1
δi⋅s
im(o
1i,o
2i)∑
mi=1
δi我來解釋一下,這裡面si
m(o1
i,o2
i)代表的是o1
,o2 2個物件關於屬性i的相似度,而引數δi
是個比較特殊的量,它這樣設計:假如o
1,o2
中有乙個物件不具有屬性i,則δi
=0假如o1
,o2 的屬性i是非對稱二元屬性(請看上面對於二元屬性部分的講解),且對應的屬性值都是0,則δi
=0除了以上2種情況,δi
=1最後,介紹一種針對文件資料的,特殊的相似度測量方法:余弦相似性。
這麼看,好像和前面說的二元屬性沒有什麼不同。但是如果為了實現一種更準確的度量,再給這個二元向量加個權重,比如每個詞的詞頻,那麼用上面講的任何度量方法就都不是特別合適了。例如,如果用歐氏距離判斷相似度的話,因為這種向量很多位都是0,就是說很稀疏,這就導致大部分詞是兩個文件所不共有的,從而判斷結果是2個文件很不相似。si
m(x,
y)=x
⋅y∥x
∥⋅∥y
∥ 其中,x,y
是2個文件解析出來的詞頻向量。當然,有關於文件的相似度判斷是整個資訊檢索領域的基礎問題,也是核心問題。這裡面內容相當豐富,以後再詳談,這裡只是將余弦相似度做個簡略的介紹。
相似性度量
二元向量的相似性度量 每一維都少的資訊量,主要是0,1等有 or 沒有屬性 dice 2 x y x y 2保證 0,1 維數不一致時,差別大。jaccard x y x y 交疊程度小時,值較低 交疊係數 x y min 互相之間的包含性,1 cosine x y 根號 x y 對於實值 只有co...
相似性度量
一般而言,定義乙個距離函式d x,y 需要滿足以下幾個準則 1.d x,x 0 到自己的距離為0 2.d x,y 0 距離要非負 3.對稱性,d x,y d y,x 如果a到b距離是a,那麼b到a的距離也應該是a 4.三角形法則 兩個之和大於第三邊 d x,k d k,y d x,y 滿足這4個條件...
相似性度量的方法分類
相似性度量的方法分類 一 變換域 dtw erp都是不設定閾值,直接計算其歐氏距離。edr lcss都是設定乙個絕對閾值,滿足閾值變成0或者1。cats 設定乙個閾值,不滿足閾值取0,滿足閾值縮放到 0,1 區間中。frechet 不設定閾值,直接計算其歐氏距離。hausdorff 根據兩條線段計算...