在機器學習中,如何衡量距離?
除了歐式距離、餘弦夾角、kernel還有KL-divergence(KL可以歸為alpha-divergence一大類)之外,還有哪些方法可以衡量數據的距離?在特殊的領域是否有特殊的度量方法呢(比如說文本,圖像)?
---------Update 2013.11.25-----------On Nonmetric Similarity Search Problems in Complex Domains 你值得擁有!
一個函數只要符合metric定義,就可以作為度量工具。問題是要選到合適的。你這個問題問得很寬泛,所以很難答。最好能明確一個具體的機器學習問題。 例如:在模型選擇中,模型其實是一個概率分佈,一般用estimated KL來判斷這個模型和理想模型之間的距離,比如AIC、BIC。
距離度量方式很多,具體要看數據的真實分佈和不同的應用特點。舉個例子,基於數據流形空間的假設,就可以採用對應的測地線距離或者先通過構造數據的局部相似圖把數據非線性映射到子空間裡面再計算距離。
比如Jaccard距離用來計算兩個集合的相似度,KL距離衡量兩個分佈之間的相似性,餘弦距離計算向量的夾角,也就是歸一化後的距離,三種度量方法都可以用來計算文本的相似度,但是側重點不同。當然,絕對不會有人用rbf kernel去計算文本的距離,但是一些圖像的全局特徵,比如gist,用rbf核的函數去分類效果很好,也是因為距離的度量方法和分佈一致。至於現在比較流行的圖像識別做法bag-of-visual-words, 一般使用對應的直方圖交叉核或者Chi^2核,也是適應了量化後的直方圖特性。簡單的說,如果把"距離"換成"相似度"的話,可能更好理解,只要是符合定義的衡量相似度的演算法,都是一個合法的目標演算法,一切要在實際應用中才知道答案,
嗯,比如黎曼度量,在流形上定義不同的黎曼度量就可以讓流形上每點的gauss曲率發生變化,ricci flow就是基於這個特性的。
還有做圖形的熱核擴展的時候,不同的論文也會定義不同的度量來做,比如。
對於文本和圖像來說,通常會有一個先提取特徵聚類再量化的過程
比如bag of words中會有用歐式距離or hamming距離來做判斷之類。漫談:機器學習中距離和相似性度量方法
補充一個Jensen–Shannon divergence
最近學GAN看到的
比如在故障診斷預測領域,常用馬氏距離: 計算所提取的特徵向量相對於系統正常時所提取的特徵集合的馬氏距離,從而診斷出系統是否故障、故障程度,以及進一步隔離出故障類型。
我以為,脫離了分類聚類講距離並沒有什麼用。類內近,類間遠。通常都是這麼用的,當然,得看你的具體模型了。
關於機器學習距離的理解 - 知乎專欄
馬氏距離應該算一個比較通用的,一般需要從數據中學習出一個合適的距離量度,有很多文章講這個
- euclidean:歐氏距離
2. sqeuclidean:歐氏距離平方
3. seuclidean:方差加權距離
4. Chebychev:Chebychev距離
5. cityblock:Block距離(絕對值距離)
6. cosine:夾角餘弦(1減去夾角餘弦平方 然後開方)
7. Generalized:廣義距離(1減去相關係數)
8. Mahalanobis:馬氏距離
9. Minkowski:Minkowski距離
推薦閱讀: