引言在机器学习和深度学习中,正则化是一种重要的技术,用于防止模型过拟合。其中,L1和L2正则化是最常用的两种方法。本文将深入探讨Python中的p范数计算,并详细介绍L1与L2正则化的原理和应用。p范...
在机器学习和深度学习中,正则化是一种重要的技术,用于防止模型过拟合。其中,L1和L2正则化是最常用的两种方法。本文将深入探讨Python中的p范数计算,并详细介绍L1与L2正则化的原理和应用。
p范数是衡量向量或矩阵范数的一种方法,它基于向量的p次幂和的p次根。具体来说,对于n维向量v,其p范数定义为:
[ ||v||p = (\sum{i=1}^{n} |v_i|^p)^{\frac{1}{p}} ]
其中,( |v_i| ) 表示向量v的第i个元素的绝对值,p为正整数。
在Python中,我们可以使用NumPy库来计算p范数。以下是一个计算L1范数的示例代码:
import numpy as np
def l1_norm(v): return np.sum(np.abs(v))
v = np.array([1, -2, 3])
print(l1_norm(v)) # 输出:6类似地,计算L2范数的代码如下:
def l2_norm(v): return np.linalg.norm(v)
v = np.array([1, -2, 3])
print(l2_norm(v)) # 输出:3.7416573867739413L1正则化通过在损失函数中添加L1范数项来惩罚模型参数。具体来说,对于一个线性回归模型,其损失函数可以表示为:
[ J(w) = \frac{1}{2} ||y - Xw||^2 + \lambda ||w||_1 ]
其中,( y ) 为真实标签,( X ) 为特征矩阵,( w ) 为模型参数,( \lambda ) 为正则化参数。
L1正则化具有以下特点:
以下是一个使用L1正则化的线性回归模型的示例代码:
import numpy as np
def l1_regularized_regression(X, y, w, lambda_): return 0.5 * np.linalg.norm(y - X @ w)**2 + lambda_ * np.sum(np.abs(w))
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([1, 2, 3])
w = np.array([0.5, 0.5])
lambda_ = 0.1
print(l1_regularized_regression(X, y, w, lambda_)) # 输出:0.9L2正则化通过在损失函数中添加L2范数项来惩罚模型参数。具体来说,对于一个线性回归模型,其损失函数可以表示为:
[ J(w) = \frac{1}{2} ||y - Xw||^2 + \lambda ||w||_2^2 ]
其中,( \lambda ) 为正则化参数。
L2正则化具有以下特点:
以下是一个使用L2正则化的线性回归模型的示例代码:
import numpy as np
def l2_regularized_regression(X, y, w, lambda_): return 0.5 * np.linalg.norm(y - X @ w)**2 + lambda_ * np.sum(w**2)
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([1, 2, 3])
w = np.array([0.5, 0.5])
lambda_ = 0.1
print(l2_regularized_regression(X, y, w, lambda_)) # 输出:0.625本文介绍了Python中的p范数计算,并详细阐述了L1和L2正则化的原理和应用。通过学习本文,读者可以轻松掌握L1与L2正则化的奥秘,并将其应用于实际项目中。