L1正则化 L2正则化
时间: 2024-11-18 13:13:44 浏览: 44
L1和L2正则化都是在机器学习和统计学中用于防止过拟合的技术,它们通常与线性模型如逻辑回归或支持向量机的优化过程中引入。
**L1正则化(也称为Lasso正则化)[^4]**:
L1正则化通过添加到损失函数中的绝对值惩罚项来工作。其数学形式是`λ * ||w||_1`,其中`λ`是正则化强度,`w`是权重向量,`||·||_1`表示L1范数(即向量元素之和的绝对值)。这会使得一些权重变为零,因此它常用于特征选择,因为非零权重对应的特征被认为是最重要的。
**L2正则化(也称为Ridge正则化)[^4]**:
L2正则化使用的是平方和惩罚项,即`λ * ||w||_2^2`,其中`||·||_2^2`表示L2范数(即向量元素平方和的平方根)。L2正则化会让权重趋向于更小但不为零的值,不会完全消除某些特征,所以它更适合需要保留所有特征的情况。
在Python的Scikit-Learn库中,可以使用`L1Penalty`(对于L1)和`Ridge`(对于L2)类来实现这两种正则化:
```python
from sklearn.linear_model import Lasso, Ridge
# L1正则化示例
lasso = Lasso(alpha=λ_value)
lasso.fit(X_train, y_train)
# L2正则化示例
ridge = Ridge(alpha=λ_value)
ridge.fit(X_train, y_train)
```
在这里,`α`(lambda值)控制正则化的强度。
相关问题
logistic回归算法时一个经验损失最小化算法。因此,可以对其进行正则化,轻描诉logistic回归算法的L1正则化与L2正则化算法的目标函数,并用梯度下降算法实现logistic回归算法的L1正则化与L2正则化。写出代码
Logistic回归算法的目标函数是最小化交叉熵损失函数,可以加入L1正则化或L2正则化。
L1正则化的目标函数为:
$$
J(\boldsymbol{w}) = \frac{1}{m}\sum_{i=1}^{m}\left[ -y^{(i)}\log(\hat{y}^{(i)}) - (1-y^{(i)})\log(1-\hat{y}^{(i)})\right] + \alpha \sum_{j=1}^{n}|\boldsymbol{w_j}|
$$
L2正则化的目标函数为:
$$
J(\boldsymbol{w}) = \frac{1}{m}\sum_{i=1}^{m}\left[ -y^{(i)}\log(\hat{y}^{(i)}) - (1-y^{(i)})\log(1-\hat{y}^{(i)})\right] + \frac{\alpha}{2}\sum_{j=1}^{n}\boldsymbol{w_j}^2
$$
其中,$\alpha$ 是正则化系数,$\boldsymbol{w_j}$ 是权重向量的第 $j$ 个元素。
使用梯度下降算法实现:
L1正则化:
```python
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def l1_logistic_regression(X, y, alpha=0.1, learning_rate=0.01, max_iter=1000):
m, n = X.shape
w = np.zeros((n, 1))
b = 0
for i in range(max_iter):
y_hat = sigmoid(np.dot(X, w) + b)
dw = (1 / m) * np.dot(X.T, (y_hat - y)) + (alpha / m) * np.sign(w)
db = (1 / m) * np.sum(y_hat - y)
w -= learning_rate * dw
b -= learning_rate * db
return w, b
```
L2正则化:
```python
def l2_logistic_regression(X, y, alpha=0.1, learning_rate=0.01, max_iter=1000):
m, n = X.shape
w = np.zeros((n, 1))
b = 0
for i in range(max_iter):
y_hat = sigmoid(np.dot(X, w) + b)
dw = (1 / m) * np.dot(X.T, (y_hat - y)) + (alpha / m) * w
db = (1 / m) * np.sum(y_hat - y)
w -= learning_rate * dw
b -= learning_rate * db
return w, b
```
其中,`X` 是数据矩阵,每行代表一个样本,每列代表一个特征,`y` 是标签向量,`alpha` 是正则化系数,`learning_rate` 是学习率,`max_iter` 是最大迭代次数。返回值是权重向量 `w` 和偏置项 `b`。
L1正则化和L2正则化
L1正则化和L2正则化是机器学习中常用的正则化技术,用于控制模型的复杂度。
L1正则化是指对模型的权重向量进行约束,使其具有稀疏性,即只有少数权重值为非零。具体来说,L1正则化是将权重向量中每个权重的绝对值加起来,再乘以一个超参数 λ,加入到损失函数中,公式为:
L1 = λ * Σ|w|
其中,w 为权重向量中的元素。
L2正则化是指对模型的权重向量进行约束,使其具有平滑性,即权重值较小、分布较均匀。具体来说,L2正则化是将权重向量中每个权重的平方加起来,再乘以一个超参数 λ,然后加入到损失函数中,公式为:
L2 = λ * Σ(w^2)
其中,w 为权重向量中的元素。
相比之下,L1正则化会产生稀疏解,即只有少数权重值为非零,而L2正则化会产生平滑解,即所有权重值都趋向于接近于零。L1正则化可以用于特征选择,而L2正则化可以用于防止过拟合。
阅读全文
相关推荐












