數(shù)學(xué)概念
范數(shù)已烤,是具有 “長度” 概念的函數(shù)族操。在線性代數(shù)苛坚、泛函分析及相關(guān)的數(shù)學(xué)領(lǐng)域,范數(shù)是一個函數(shù)坪创,是矢量空間內(nèi)的所有矢量賦予非零的正長度或大小炕婶。
在數(shù)學(xué)上,范數(shù)包括向量范數(shù)
和矩陣范數(shù)
L1 范數(shù)和 L2 范數(shù)莱预,用于機器學(xué)習的 L1 正則化柠掂、L2 正則化。對于線性回歸模型依沮,使用 L1 正則化的模型建叫做 Lasso 回歸涯贞,使用 L2 正則化的模型叫做 Ridge 回歸(嶺回歸)。
其作用是:
L1 正則化是指權(quán)值向量 w 中各個元素的絕對值之和危喉,可以產(chǎn)生稀疏權(quán)值矩陣(稀疏矩陣指的是很多元素為 0宋渔,只有少數(shù)元素是非零值的矩陣,即得到的線性回歸模型的大部分系數(shù)都是 0. )辜限,即產(chǎn)生一個稀疏模型皇拣,可以用于特征選擇;
L2 正則化是指權(quán)值向量 w 中各個元素的平方和然后再求平方根薄嫡,可以防止模型過擬合(overfitting)氧急;一定程度上,L1 也可以防止過擬合毫深。
Numpy函數(shù)介紹
np.linalg.norm(x, ord=None, axis=None, keepdims=False)
np.linalg.norm:linalg=linear(線性)+algebra(代數(shù))吩坝,norm則表示范數(shù)
-
x
:表示矩陣(也可以是一維) -
ord
:范數(shù)類型 -
axis
:軸向
axis=1表示按行向量處理,求多個行向量的范數(shù)
axis=0表示按列向量處理哑蔫,求多個列向量的范數(shù)
axis=None表示矩陣范數(shù)钉寝。 -
keepdims
:是否保持矩陣的二維特性
True表示保持矩陣的二維特性弧呐,F(xiàn)alse相反
例子
- 向量
>>> import numpy as np
>>> x=np.array([1,2,3,4])
>>> np.linalg.norm(x) #默認是二范數(shù),所有向量元素絕對值的平方和再開方
5.477225575051661
>>> np.sqrt(1**2+2**2+3**2+4**2)
5.477225575051661
>>> np.linalg.norm(x,ord=1) #所有向量元素絕對值之和
10.0
>>> 1+2+3+4
10
>>> np.linalg.norm(x,ord=np.inf) #max(abs(x_i))嵌纲,所有向量元素絕對值中的最大值
4.0
>>> np.linalg.norm(x,ord=-np.inf) #min(abs(x_i))俘枫,所有向量元素絕對值中的最小值
1.0
- 矩陣
>>> import numpy as np
>>> x=np.arange(12).reshape(3,4)
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.linalg.norm(x) #默認是二范數(shù),最大特征值的算術(shù)平方根
22.494443758403985
>>> np.linalg.norm(x,ord=1) #所有矩陣列向量絕對值之和的最大值
21.0
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.linalg.norm(x,ord=1,axis=1) #行向量的一范數(shù)
array([ 6., 22., 38.])
>>> np.linalg.norm(x,ord=2,axis=1) #行向量的二范數(shù)
array([ 3.74165739, 11.22497216, 19.13112647])
>>> np.linalg.norm(x,ord=1,axis=1,keepdims=True) #結(jié)果仍然是個矩陣
array([[ 6.],
[22.],
[38.]])
歷史相關(guān)文章
以上是自己實踐中遇到的一些問題崩哩,分享出來供大家參考學(xué)習,歡迎關(guān)注微信公眾號言沐,不定期分享干貨