1. 程式人生 > >範數與距離的關係以及在機器學習中的應用

範數與距離的關係以及在機器學習中的應用

1 範數

向量的範數可以簡單形象的理解為向量的長度,或者向量到零點的距離,或者相應的兩個點之間的距離。

向量的範數定義:向量的範數是一個函式||x||,滿足非負性||x|| >= 0,齊次性||cx|| = |c| ||x|| ,三角不等式||x+y|| <= ||x|| + ||y||。

常用的向量的範數:
L1範數:  ||x|| 為x向量各個元素絕對值之和。
L2範數:  ||x||為x向量各個元素平方和的1/2次方,L2範數又稱Euclidean範數或者Frobenius範數
Lp範數:  ||x||為x向量各個元素絕對值p次方和的1/p次方

L∞範數:  ||x||為x向量各個元素絕對值最大那個元素的絕對值,如下:

橢球向量範數: ||x||A  = sqrt[T(x)Ax], T(x)代表x的轉置。定義矩陣C 為M個模式向量的協方差矩陣, 設C’是其逆矩陣,則Mahalanobis距離定義為||x||C’  = sqrt[T(x)C’x], 這是一個關於C’的橢球向量範數。

2 距離

歐式距離(對應L2範數):最常見的兩點之間或多點之間的距離表示法,又稱之為歐幾里得度量,它定義於歐幾里得空間中。n維空間中兩個點x1(x11,x12,…,x1n)與 x2(x21,x22,…,x2n)間的歐氏距離:

也可以用表示成向量運算的形式:

曼哈頓距離:曼哈頓距離對應L1-範數,也就是在歐幾里得空間的固定直角座標系上兩點所形成的線段對軸產生的投影的距離總和。例如在平面上,座標(x1, y1)的點P1與座標(x2, y2)的點P2的曼哈頓距離為:,要注意的是,曼哈頓距離依賴座標系統的轉度,而非系統在座標軸上的平移或對映。

切比雪夫距離,若二個向量或二個點x1和x2,其座標分別為(x11, x12, x13, ... , x1n)和(x21, x22, x23, ... , x2n),則二者的切比雪夫距離為:d = max(|x1i - x2i|),i從1到n。對應L∞範數。

閔可夫斯基距離(Minkowski Distance)

閔氏距離不是一種距離,而是一組距離的定義。對應Lp範數,p為引數。

閔氏距離的定義:兩個n維變數(或者兩個n維空間點)x1(x11,x12,…,x1n)與 x2(x21,x22,…,x2n)間的閔可夫斯基距離定義為: 

其中p是一個變引數。

當p=1時,就是曼哈頓距離,

當p=2時,就是歐氏距離,

當p→∞時,就是切比雪夫距離,       

根據變引數的不同,閔氏距離可以表示一類的距離。 

Mahalanobis距離:也稱作馬氏距離。在近鄰分類法中,常採用歐式距離和馬氏距離。

 

3 在機器學習中的應用

L1範數和L2範數,用於機器學習的L1正則化、L2正則化。對於線性迴歸模型,使用L1正則化的模型建叫做Lasso迴歸,使用L2正則化的模型叫做Ridge迴歸(嶺迴歸)。

其作用是:

L1正則化是指權值向量w中各個元素的絕對值之和,可以產生稀疏權值矩陣(稀疏矩陣指的是很多元素為0,只有少數元素是非零值的矩陣,即得到的線性迴歸模型的大部分系數都是0. ),即產生一個稀疏模型,可以用於特徵選擇;

L2正則化是指權值向量w中各個元素的平方和然後再求平方根,可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合。

至於為什麼L1正則化能增加稀疏性,L2正則化能防止過擬合,原理可檢視參考資料。

 

參考資料:

http://blog.csdn.net/v_july_v/article/details/8203674

http://blog.csdn.net/jinping_shi/article/details/52433975

 

什麼是範數?

我們知道距離的定義是一個寬泛的概念,只要滿足非負、自反、三角不等式就可以稱之為距離。範數是一種強化了的距離概念,它在定義上比距離多了一條數乘的運演算法則。有時候為了便於理解,我們可以把範數當作距離來理解。

在數學上,範數包括向量範數和矩陣範數,向量範數表徵向量空間中向量的大小,矩陣範數表徵矩陣引起變化的大小。一種非嚴密的解釋就是,對應向量範數,向量空間中的向量都是有大小的,這個大小如何度量,就是用範數來度量的,不同的範數都可以來度量這個大小,就好比米和尺都可以來度量遠近一樣;對於矩陣範數,學過線性代數,我們知道,通過運算AX=BAX=B,可以將向量X變化為B,矩陣範數就是來度量這個變化大小的。

這裡簡單地介紹以下幾種向量範數的定義和含義 
1、 L-P範數 
與閔可夫斯基距離的定義一樣,L-P範數不是一個範數,而是一組範數,其定義如下: 


Lp=∑1nxpi−−−−√p,x=(x1,x2,⋯,xn)Lp=∑1nxipp,x=(x1,x2,⋯,xn) 


根據P 的變化,範數也有著不同的變化,一個經典的有關P範數的變化圖如下: 
這裡寫圖片描述 
上圖表示了p從無窮到0變化時,三維空間中到原點的距離(範數)為1的點構成的圖形的變化情況。以常見的L-2範數(p=2)為例,此時的範數也即歐氏距離,空間中到原點的歐氏距離為1的點構成了一個球面。

 

實際上,在0≤p<1≤p<1時,Lp並不滿足三角不等式的性質,也就不是嚴格意義下的範數。以p=0.5,二維座標(1,4)、(4,1)、(1,9)為例,(1+4–√)−−−−−−−√0.5+(4–√+1)−−−−−−−√0.5<(1+9–√)−−−−−−−√0.5(1+4)0.5+(4+1)0.5<(1+9)0.5。因此這裡的L-P範數只是一個概念上的寬泛說法。

2、L0範數 
當P=0時,也就是L0範數,由上面可知,L0範數並不是一個真正的範數,它主要被用來度量向量中非零元素的個數。用上面的L-P定義可以得到的L-0的定義為: 


||x||=∑1nx0i−−−−√0,x=(x1,x2,⋯,xn)||x||=∑1nxi00,x=(x1,x2,⋯,xn) 


這裡就有點問題了,我們知道非零元素的零次方為1,但零的零次方,非零數開零次方都是什麼鬼,很不好說明L0的意義,所以在通常情況下,大家都用的是: 


||x||0=||x||0=#(i|xi≠0)(i|xi≠0) 


表示向量xx中非零元素的個數。

 

對於L0範數,其優化問題為: 


min||x||0min||x||0 
s.t. Ax=b 


在實際應用中,由於L0範數本身不容易有一個好的數學表示形式,給出上面問題的形式化表示是一個很難的問題,故被人認為是一個NP難問題。所以在實際情況中,L0的最優問題會被放寬到L1或L2下的最優化。

 

3、L1範數 
L1範數是我們經常見到的一種範數,它的定義如下: 


||x||1=∑i|xi|||x||1=∑i|xi| 


表示向量xx中非零元素的絕對值之和。

 

L1範數有很多的名字,例如我們熟悉的曼哈頓距離、最小絕對誤差等。使用L1範數可以度量兩個向量間的差異,如絕對誤差和(Sum of Absolute Difference): 


SAD(x1,x2)=∑i|x1i−x2i|SAD(x1,x2)=∑i|x1i−x2i| 

 

對於L1範數,它的優化問題如下: 


min||x||1min||x||1 
s.t.Ax=bs.t.Ax=b 


由於L1範數的天然性質,對L1優化的解是一個稀疏解,因此L1範數也被叫做稀疏規則運算元。通過L1可以實現特徵的稀疏,去掉一些沒有資訊的特徵,例如在對使用者的電影愛好做分類的時候,使用者有100個特徵,可能只有十幾個特徵是對分類有用的,大部分特徵如身高體重等可能都是無用的,利用L1範數就可以過濾掉。

 

4、L2範數 
L2範數是我們最常見最常用的範數了,我們用的最多的度量距離歐氏距離就是一種L2範數,它的定義如下: 


||x||2=∑ix2i−−−−−√||x||2=∑ixi2 


表示向量元素的平方和再開平方。 
像L1範數一樣,L2也可以度量兩個向量間的差異,如平方差和(Sum of Squared Difference): 


SSD(x1,x2)=∑i(x1i−x2i)2SSD(x1,x2)=∑i(x1i−x2i)2 

 

對於L2範數,它的優化問題如下: 


min||x||2min||x||2 
s.t.Ax=bs.t.Ax=b 


L2範數通常會被用來做優化目標函式的正則化項,防止模型為了迎合訓練集而過於複雜造成過擬合的情況,從而提高模型的泛化能力。

 

5、L-∞範數∞範數 
當P=∞∞時,也就是L-∞∞範數,它主要被用來度量向量元素的最大值。用上面的L-P定義可以得到的L∞∞的定義為: 


||x||∞=∑1nx∞i−−−−−√∞,x=(x1,x2,⋯,xn)||x||∞=∑1nxi∞∞,x=(x1,x2,⋯,xn) 


與L0一樣,在通常情況下,大家都用的是: 


||x||∞=max(|xi|)||x||∞=max(|xi|) 


來表示L∞