許多機器學習方法都需要度量計算數據點之間的距離。傳統作法是利用相關領域的先驗知識來選擇一個標準的距離度量,例如:歐式距離、城市距離、餘弦距離,等等。然而,很難針對特定的數據與感舉興趣的任務設計合適的度量。
距離度量學習(或者簡單的稱之爲度量學習)旨在自動的從有監督的數據中,以機器學習的方式構造出與任務相關的距離度量。學習到的距離度量可以用於不同的任務的任務,例如,K-NN分類、聚類、信息檢索。
1. 問題定義
根據可依賴的訓練數據的形式,可將度量學習問題公成兩類:
- 有監督學習:算法不得不接近一列數據點集,其中的每一個數據有帶有類別標籤。一般來說,有監督下的度量學習的目的是爲了學到這樣的距離度量,這個距離度量能夠將具有相同標籤(同類)的數據點拉近,並將不同標籤(異類)的數據點推開。
- 弱監督學習:該算法僅在元組級別(二元組、三元組,或者四元組)的監督下訪問一組數據點。這種較弱的監督的一個典型例子是一組正對和負對;在這種情況下,目標是學習一個距離度量,將正對放在一起,負對放在遠處。
2. 馬氏距離
在metric-learn包中,所有當前的算法都學習一個被稱之爲“馬氏距離”的度量。給定一個實參數距離,其中爲維數,爲數據的特徵個數。馬氏距離可以表示成如下形式:
換句話說,馬氏距離就是特徵空間通過矩陣做完線性變換後的歐式距離。當爲單位陣時,馬氏距離就等於歐式距離。馬氏距離的度量學習可以看作是學習一個新的維嵌入空間。注意到,當是比要小時,達到降維的效果。
嚴格意義上,馬氏距離是一種僞度量:它滿足度量的三個特性(非負,對稱,三角不等式)。
注意:馬氏距離也可以參數化爲一個半正定的矩陣:
此處,。因此,對該度量學習問題的求解可是求解,也可以是。
3. 用途
度量學習的用途有很多,我們下面介紹一些受歡迎的例子。具體例子請看example。
- 最近鄰模型:學習到的度量能夠用來提升最近鄰學習模型的分類、迴歸、自動檢測的性能;
- 聚類:度量學習能夠提供一種方法,可以使算法(如K-Means)發現聚類更傾向於預期的語義;
- 信息檢索:學習到的度量可以用來檢索在數據集中與查詢元素在語義上更緊密的目標;
- 降維:度量學習可以被當作在弱監督設置下的一種降維方法;
- 更一般地,學到的變換矩陣能夠用於將數據映射到一個新的嵌入空間,進行降維,接着用於後續的機器學習算法。
metric-learn
包的應用接口是基於scikit-learn。我們能很方便地將度量學習器與其它基於scikit-learn的估計器實現其它用途。
4. 補充閱讀
關於更多度量學習的信息與應用,我們可以參考以下文獻:
- 教程: Similarity and Distance Metric Learning with Applications to Computer Vision (2015)
- 綜述::A Survey on Metric Learning for Feature Vectors and Structured Data (2013), Metric Learning: A Survey (2012)
- 書籍:Metric Learning (2015)