07- 梯度下降优化(Lasso/Ridge/ElasticNet) (数据处理+算法)

本文介绍了数据预处理的两种方法——最大值最小值归一化和0-均值标准化,以及它们在梯度下降中的作用。接着讨论了正则化,包括L1正则化的Lasso回归、L2正则化的岭回归和Elastic-Net算法,它们用于防止过拟合,提高模型泛化能力。最后提到了多项式回归在处理非线性关系时的重要性。
  • 归一化: 减少数据不同数量级对预测的影响, 主要是将数据不同属性的数据都降到一个数量级
    • 最大值最小值归一化:优点是可以把所有数值归一到 0~1 之间,缺点受离群值影响较大
    • 0-均值标准化: 经过处理的数据符合标准正态分布,即均值为0,标准差为1, 有正有负。
from sklearn.preprocessing import MinMaxScaler    # 最大值最小值归一化
min_max_scaler = MinMaxScaler()
x_ = min_max_scaler.fit_transform(x) 

from sklearn.preprocessing import StandardScaler  # 0-均值标准化
standard_scaler = StandardScaler()
x_ = standard_scaler.fit_transform(x)
  • 正则化:  防止数据过拟合, 增强模型的泛化能力, 常用方式为增加L1 L2干扰项。
  • Lasso 回归:  把多元线性回归损失函数加上 L1 正则,
# 套索回归: Lasso回归
from sklearn.linear_model import Lasso
lasso = Lasso(alpha= 0.5)
lasso.fit(X, y)
print('套索回归求解的斜率:',lasso.coef_)
print('套索回归求解的截距:',lasso.intercept_)
  • Ridge 岭回归:  多元线性回归损失函数加上 L2 正则的时候
from sklearn.linear_model import Ridge
ridge = Ridge(alpha= 1, solver='sag')
ridge.fit(X, y)
print('岭回归求解的斜率:',ridge.coef_)
print('岭回归求解的截距:',ridge.intercept_)
  • Elastic-Net算法 很多特征互相联系的情况下是非常有用的, 融合了L1正则化L2正则化。
from sklearn.linear_model import ElasticNet
model = ElasticNet(alpha= 1, l1_ratio = 0.7)
model.fit(X, y)
print('弹性网络回归求解的斜率:',model.coef_)
print('弹性网络回归求解的截距:',model.intercept_)
  • 多项式回归的目的: 数据不够时防止欠拟合, 通常是使用现有参数相乘, 或者自身平方达到增加数据量的目的


二、梯度下降优化

1、归一化 (Normalization)

归一化的目的: 减少数据不同数量级对数据预测的影响, 主要是将数据不同属性的数据都降到一个数量级
由于不同方向的陡峭度是不一样的,即不同维度的数值大小是不同。也就是说梯度下降的快慢是不同的,归一化的一个目的是,使得梯度下降在不同维度 \small \theta 参数(不同数量级)上,可以步调一致协同的进行梯度下降。归一化的本质就要把各个特征维度 \bg_white \small x_1, x_2, ...... , x_n 的数量级统一,来做到无量纲化。

1.1、最大值最小值归一化

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:
        .X^* = \frac{X - X\_min}{X\_max -X\_min}

通过公式可以发现,该方式受离群值的影响比较大.
使用scikit-learn函数演示:

import numpy as np
from sklearn.preprocessing import MinMaxScaler
x_1 = np.random.randint(1,10,size = 10)
x_2 = np.random.randint(100,300,size = 10)
x = np.c_[x_1,x_2]    # 将数组放到一起
print('归一化之前的数据:')
min_max_scaler = MinMaxScaler()
x_ = min_max_scaler.fit_transform(x)
print('归一化之后的数据:')
display(x_)

1.2、0-均值标准化

这种方法给予原始数据的均值

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值