1. 程式人生 > >資料測量與相似性分析

資料測量與相似性分析

       這篇文章中主要記錄如何分析樣本間相似性的內容,相似性分析在分類演算法(如K最鄰近分類)和聚類任務中會涉及到。相似性分析基於樣本屬性取值,因此對於樣本屬性型別及其取值的特徵也有必要說明。

1.資料測量及屬性分類

       測量某個物件得到資料的過程實質上是描述該物件的屬性(特徵)、並將該屬性對映到某個值上,在這些值上一般可以定義如下幾種操作:

  • 相異性      = 、\neq
  • 序             <
    \leq>\geqslant
  • 加減          +-
  • 乘除          \ast\div

       依據測量值能進行的操作型別,可以將屬性分為:標稱型(nominal)、序數型(ordinal)、區間型(interval)和比率型(ratio),不同型別的定義及區別見下表

 

                         
       從屬性取值個數方面,可以將屬性分為:屬性型(binary attribute)、離散型(discrete)、連續型(continuous)。取值為屬性型時,其值只能為兩個,如真/假、是/否、男/女、0/1等,這種取值的屬性稱為二元屬性。        標稱型、序數型資料的含義比較直觀,而對於區間型資料,就以日曆日期為例說明,現有兩個日期值2017(年)、2018(年),二者之間的差值可以理解為間隔一年,但是二者間乘或除得到的值則毫無意義,這就是區間值的特徵。對於比率型資料,以體重為例,100kg的人可以說是50kg的人體重的兩倍,這是有現實直觀意義的。有的資料型別可能兼具多種操作方法(如體重可以加減,也可以除),可能在屬性型別分類上不那麼明顯,但需要強調的是:屬性歸類問題不重要,重要的是明確哪些操作是有意義的。

       除了從以上幾個方面對屬性進行分類與定義外,還可以按屬性取值對稱與否來分類。非對稱的屬性其不同取值間權重不一致,例如艾滋病檢驗的結果可為陽性和陰性,但是顯然我們更關注是否為陽性,該值對判斷是否患艾滋病更為關鍵。對稱的屬性其取值權重就一致了,例如某路段一定時間內通過的車輛數。

2.樣本相似性分析

       樣本相似性分析常用於分類、聚類任務中。相似性肯定要依據樣本屬性取值來分析的,這其中關鍵就在屬性值的處理相似性度量標準上。

     2.1屬性值的處理

       2.1.1 二元化

       在一些演算法中(如發現關聯模式的演算法)要求資料的屬性為二元屬性,二元化處理就是將資料的屬性從“多元”轉化為“二元”的過程。二元化的過程為:假設屬性取值有m個,則將整數區間 \left [0,m-1 \right ]中的每個值唯一的賦予該屬性的每個取值,如果該屬性的取值是有序的,則賦值的過程也必須按順序賦值,然後將這m個值用二進位制表示,共需要 \left \lceil log_{2}m \right \rceil(結果向上取整)個二進位制位。

      二元化的過程是用多個二元屬性來表示一個多元屬性,例如一個具有5個取值的屬性{awful,poor,ok,good,great}可以用3個二元屬性x_{1}x_{2}x_{3}表示

                                                             

        以上的二元化過程可能會導致屬性間關係複雜化,例如上表中屬性x_{2}x_{3}是相關的,因為“good”值需要這兩個屬性來表示。這種情況下可以為每一個取值引入一個二元屬性,比如下表中的方式

                                           

       當一個屬性取值數量較多時(這裡暫指離散取值的情況),這種做法會引入過多的屬性值,此時可以在二元化之前先離散化屬性的取值。

      2.1.2 離散化

      離散化一般針對取值為連續的情況,但是當取值為離散序數、取值間隔小且多時也可以考慮離散化。離散化的過程需要考慮兩個問題:分類值個數設定、如何將屬性連續取值對映到這些分類值上。離散化過程可以分為非監督離散化監督離散化,區別就在於是否使用資料的類資訊(分類、聚類任務中)。

      非監督離散化主要有等寬等頻率K均值方法,有時候畫圖之後目測也是一種不錯的方法。等寬離散化是將屬性的值域等寬得劃分成有限的區間,區間個數由使用者指定,這種方法可能受離群點(遠離一般取值範圍的資料點,也可以稱為奇異點)影響而導致效能不佳;等頻離散化在指定劃分區間個數時,保證每個區間內資料點個數相同;K均值離散化則是使用了K均值聚類方法的思想來劃分區間。下圖是用以上幾種方法對一組資料進行離散化的結果,區間劃分個數均為4。

                   

       監督離散化方法一般要比非監督離散化方法產生的效果要好,因為使用了類資訊,因此能使區間內資料的類更純,所以一種簡單的概念上的方法是“極大化區間內資料類別純度”來確定分割點,在該類方法中,首先要確定一個類別純度的度量指標,然後確定最優區間劃分過程搜尋方案。

      2.1.3 變換與規範化

      變換是將屬性值域對映到另外一個值域上的過程,例如常見的函式變換 x^{2}log_{2}x 等,在統計學中,也通常會通過變換(中心極限定理)構造服從正態分佈的統計量。變換的需求與方式與具體的任務緊密相關,例如資料壓縮時會採用對數變換,將資料量從10^{9}壓縮為9。變換時尤其要注意,不能改變資料的特性,所以說一定要依據具體的任務來確定變換方式。例如在非線性SVM模型中,就用到了這種方式,將輸入空間通過非線性對映到特徵空間。

      規範化也可以看做一種變換方式,其目標是使屬性的取值具有特定的性質,主要包括以下幾種方法

      標準化:標準化的過程是將樣本均值變為0,標準差變為1。設變數x的均值為\bar{x},標準差為s_{x},則可以建立一個新的變數{x}'

                                                                                       {x}'=(x-\bar{x})/s_{x}

      歸一化:將資料取值範圍處理到[0,1]範圍內(有的場合下也會處理到[-1,1]範圍),方便不同取值範圍屬性間比較。一般的處理方式為

                                                                                      {x}'=\frac{x-x_{min}}{x_{max}-x_{min}}

       如果取值範圍為[0,\infty],則可以考慮以下形式

                                                                                        {x}'=\frac{x}{1+x}

       具體的規範化方法需要結合實際的應用來,在考慮任務需求及資料特性情況下選擇可行的方法。

2.2 相似性度量標準

      與相似性相反的概念稱為相異形,二者描述的是同一種關係,通常會用鄰近度來描述相似或相異性。先介紹幾種度量標準,然後從簡單的單屬性資料間相似性分析著手,一點一點將情況複雜化。

      2.2.1 鄰近度度量標準
     

      歐氏距離

      歐氏距離是一種比較常見的度量標準,對於包含有n個屬性值的資料 x 和 y,其歐氏距離d(x,y)定義為

                                                                                d(x,y)=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^2}

      歐氏距離有如下幾個性質是成立的

  • 非負性,d(x,y)\geq 0
  • 對稱性,d(x,y)=d(y,x)
  • 三角不等式,對於資料 x 、yz,有d(x,y)+d(y,z)\geq d(x,z)

       在使用歐氏距離時,要考慮不同屬性間取值範圍差異的問題,例如年齡與收入,在計算歐氏距離前先要將所有屬性取值進行規範化。

       曼哈頓距離

       曼哈頓距離在幾何學中指座標系中兩個點各向座標差值絕對值的和,如下圖所示,在二維空間中,紅線即表示曼哈頓距離,綠線表示歐氏距離。

                                                                             

       對於具有n個屬性的資料 x 和 y,曼哈頓距離指其各個屬性值差值的絕對值的和,定義為

                                                                                  d(x,y)=\sum_{i=1}^{n}|(x_{i}-y_{i})|

       餘弦相似度

       當屬性為多元屬性時,也有一些情況下不考慮f_{00}的情況,此時可以使用餘弦相似度,設資料 x 和 y均具有n個多元屬性,則餘弦相似度定義為

                                                                               cos(x,y)=\frac{\sum_{i=1}^{n}x_{i}y_{i}}{\left \| x \right \| \left \| y \right \|}

      \left \| x \right \|=\sqrt{\sum_{i=1}^{n}x_{i}^{2}}\left \| y \right \|=\sqrt{\sum_{i=1}^{n}y_{i}^{2}}

      從幾何角度看,餘弦相似度就是兩個向量間的夾角。

       簡單匹配係數

       該度量標準常用於具有二元屬性資料間的相似性度量。設資料 x 和 y均具有n個二元屬性,用f_{00}表示x取0且y取0的屬性個數,用f_{01}表示x取0且y取1的屬性個數,用f_{10}表示x取1且y取0的屬性個數,用f_{11}表示x取1且y取1的屬性個數,則簡單匹配係數SMC定義為

                                                                             SMC=\frac{f_{00}+f_{11}}{f_{00}+f_{01}+f_{10}+f_{11}}

        對於非對稱的二元屬性來說,更關注的是取1的情況,因此有些情況下將f_{00}納入計算是不合理的情況,例如兩個學生選課問題,1表示選修了某門課程,0表示未選修,而一個學生只需要選修一定數量的課程,還有大部分課程是不需要選修的,因此f_{00}的情況會比較多,這種情況下考慮f_{00}就不太合理。

       Jaccord係數

       Jaccard係數是簡單匹配係數中不考慮f_{00}的情況,其定義為

                                                                                      J=\frac{f_{11}}{f_{01}+f_{10}+f_{11}}     

      皮爾森相關係數

      皮爾森相關係數可以用於具有連續取值屬性物件間的相似性度量,該引數在統計學中一般簡稱為相關係數,設資料 x 和 y均具有n個連續取值屬性,則相關係數定義為

                                                                                     corr(x,y)=\frac{s_{xy}}{s_{x}s_{y} }

      s_{xy}=\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})

      s_{x}=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}

      s_{y}=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}}

      \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_{i}

      \bar{y}=\frac{1}{n}\sum_{i=1}^{n}y_{i}

      皮爾森相關係數的取值範圍為[-1,1],0表示不相關,1表示正相關,-1表示負相關,該係數上的加、減、乘、除操作均無意義,只有序數操作是有意義的。在討論相似性的條件下,負相關表示的“不相似”程度可能比不相關更嚴重,當然這個還得在實際的任務中去判斷。

      2.2.2 單屬性資料相似性分析

      當屬性為標稱型別時,如路人甲頭髮顏色為黑色,路人乙頭髮顏色為黃色,僅依據頭髮顏色分析二人之間相似性,給出的結論只能是不相似,假如用區間[0,1]之間的值來表示相似程度,0表示不相似,1表示相似,則這種情況相似度為0,但若路人甲與路人乙頭髮顏色相同,則相似度為1。因此,在屬性為標稱型別情況下,相似度只能取0和1中的一種。

      當屬性為序數型別時,則需考慮序數資訊,例如2.1.1節中的例子,屬性的取值為{awful,poor,ok,good,great},一個明顯的結論是,相對於"ok","great"更接近"good",但是在分析相似性時一般需要將其量化,這裡可以量化為 {awful=0,poor=1,ok=2,good=3,great-4}。依據第1節中對序數型別屬性的描述,可知其減法操作是沒有意義的,又或者說“ok”與"good"間的差真的與“good”與"great"間的差相同嗎?但是在實踐中一般手段有限,因此對於這種情況,可以將兩個序數間的相似性定義為

                                                                      sim(v_{1},v_{2})=\frac{\left |v_{1}-v_{2} \right |}{v_{max}-v_{min}}

       當屬性為區間和比率型別時,一般用差值的絕對值來度量相似性。特別的,對於區間型屬性,若是取值區間有限,則也可以使用

                                                                     sim(v_{1},v_{2})=\frac{\left |v_{1}-v_{2} \right |}{v_{max}-v_{min}}

的相似性定義形式。

        2.2.3 多屬性資料相似性分析

        多屬性的情況,一般的做法是將每個屬性取值按照以上介紹的方法處理之後,再選擇一個度量標準分析相似性,在一些場合下也對不同的屬性進行加權處理,但是也存在一些特殊情況,例如部分屬性為非對稱屬性。

         對於部分屬性為非對稱屬性的情況,則可以按照以下公式計算

                                                                similarity(x,y)=\frac{\sum_{i=1}^{k}\delta_{k}s_{k}(x,y) }{\sum_{i=1}^{k}\delta_{k}}

         上式中k表示資料xy的屬性個數,s_{k}(x,y)表示在第k個屬性上計算的xy相似度(按照2.2.2節中方式計算),\delta _{k}定義為:當第k個屬性為非對稱屬性,且xy在該屬性上取值均為0,或者其中一個屬性值缺失,則\delta _{k}=0,否則為1。