机器学习之归一化

本文探讨了机器学习中归一化的意义,主要在于解决损失函数求解时不同特征参数迭代速度不一致的问题。通过最大值最小值归一化和标准化两种方法,可以使得数据在一定范围内保持一致,加速模型训练过程。最大值最小值归一化易受噪声影响,而标准化则能提供更优的迭代路径。标准化通过减小噪声数据影响,使参数更新更接近最优解路径,提高模型效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.目的

1.1损失函数求解问题

  • 线性回归Loss函数梯度公式
参数含义
θ \theta θ函数参数
α \alpha α学习率
x j i x^i_{j} xjix:数据集,i:样本,j:特征 【数据集的每一行是一条样本,每一列是一个特征】
z ( θ j ) z_{(\theta_{j})} z(θj)预测值
y i y^i yi真实值

θ j : = θ j − α ∗ ∂ L o s s ( θ ) ∂ θ j : = θ j − α ∗ ( z ( θ j ) − y i ) ∗ x j i \begin{aligned} \theta_{j}&:=\theta_{j}-\alpha*\frac{\partial Loss_{(\theta)}}{\partial \theta_{j}} \\&:=\theta_{j}-\alpha* (z_{(\theta_{j})}-y^i)*x^i_{j} \end{aligned} θj:=θjαθjLoss(θ):=θjα(z(θj)yi)xji

  • 对参数求偏导【求梯度】如下:
    θ 1 : = θ 1 − α ∗ ( z ( θ 1 ) − y i ) ∗ x 1 i θ 2 : = θ 2 − α ∗ ( z ( θ 2 ) − y i ) ∗ x 2 i \begin{aligned} \theta_{1}&:=\theta_{1}-\alpha* (z_{(\theta_{1})}-y^i)*x^i_{1} \\\theta_{2}&:=\theta_{2}-\alpha* (z_{(\theta_{2})}-y^i)*x^i_{2} \end{aligned} θ1θ2:=θ1α(z(θ1)yi)x1i:=θ2α(z(θ2)yi)x2i

    • 对于损失函数初始参数时,参数值期望是均值为0方差1的正太分布随机在0附近的,所以每个初始参数值大小是差不多的。
    • 根据公式可知 α ∗ ( z ( θ 1 ) − y i ) \alpha* (z_{(\theta_{1})}-y^i) α(z(θ1)yi)值也差不多,即参数迭代的快慢就由 x j i x^i_{j} xji【特征值的大小】决定的
    • 假设 x 1 i x^i_{1} x1i特征为年龄, x 2 i x^i_{2} x2i特征为收入,由于年龄的取值范围远小于收入, x 1 i x^i_{1} x1i< x 2 i x^i_{2} x2i,则 θ 2 \theta_{2} θ2迭代速度快于 θ 1 \theta_{1} θ1,导致 θ 2 \theta_2 θ2达到最优解时,需要等待 θ 1 \theta_1 θ1迭代到最优解
  • 图像说明
    在这里插入图片描述

    • 在机器学习算法模型中,需要根据损失函数(Loss)求梯度根据损失求最优解参数 θ \theta θ
    • 如图,对于loss损失的最优解在中心点
    • 迭代参数路线如图蓝色线所示,当 θ 2 \theta_2 θ2迭代到最优解时, θ 1 \theta_1 θ1距离最优解的距离还有一段距离,导致 θ 2 \theta_2 θ2达到最优解时,需要等待 θ 1 \theta_1 θ1迭代到最优解,会导致 θ 1 \theta_1 θ1在最优解的位置慢慢震荡,不能同时获取最优解

1.2 归一化目的

在这里插入图片描述

  • 归一化可以把数据统一到某个范围,达到梯度下降求参数迭代速度一致,统一每个特征的范围,即无量纲化【就是去单位】
  • 如图,对参数进行归一化后, θ 1 \theta_1 θ1 θ 2 \theta_2 θ2迭代速度一致,可以同时求得最优解,同时收敛,减少迭代次数,模型速度加快

2. 归一化

2.1 最大值最小值归一化

参数含义
j特征
i样本
x j m i n x^{min}_{j} xjmin每个特征的最小值
x j m a x x^{max}_{j} xjmax每个特征的最大值
x i , j x_{i,j} xi,j特征的每个样本值

x i , j = x i , j − x j m i n x j m a x − x j m i n \begin{aligned} x_{i,j} &= \frac{x_{i,j}-x^{min}_{j}}{x^{max}_{j}-x^{min}_{j}} \end{aligned} xi,j=xjmaxxjminxi,jxjmin

  • 优点
    • 会将数据归一化到0-1之间
  • 缺点
    • 容易受到噪点数据的影响,公式分母是最大值与最小值的差
      • 如果存在最大值噪点,会导致分母值变大,大部分数据趋向于0,最大值噪点的值趋向于1
      • 如果存在最小值噪点,会导致分母值变大,大部分数据趋向于1,最小值噪点的值趋向于0
        from sklearn.preprocessing import MinMaxScaler
        
        data=[[1],[2],[3],[1000]]
        scaler=MinMaxScaler()
        data_fit=scaler.fit_transform(data)
        print(data_fit)
        # [[0.      ],[0.001001],[0.002002], [1.      ]]
        data=[[1],[1100],[1020],[1000]]
        scaler=MinMaxScaler()
        data_fit=scaler.fit_transform(data)
        print(data_fit)
        #[[0.        ],[1.        ],[0.92720655],[0.90900819]]
        
    • 更新路线可能不是最优路线在这里插入图片描述
      • 当我们使用最大值最小值归一化时,会将数据集的值归一化到0-1之间,导致数据的值都为正
      • 导致参数只能同时增大或减小 ,但是每个参数的关系并不都是正相关性
      • 如图,我们希望参数 w t w_t wt迭代到 w ∗ w_* w,我们发现 w 2 w_2 w2迭代过程中在增大, w 1 w_1 w1迭代过程中在减小,由于我们将数值都归一化为正数,只能根据图中黑线迭代得到最优参数,不能通过最优路径【红色线】迭代,导致迭代次数增加

2.2 标准化

参数含义
x j m e a n x^{mean}_{j} xjmean特征均值
s t a n d a r d d e v i a t i o n standard \quad deviation standarddeviation特征方差

x i , j = x i , j − x j m e a n s t a n d a r d d e v i a t i o n \begin{aligned} x_{i,j} &= \frac{x_{i,j}-x^{mean}_{j}}{standard \quad deviation} \end{aligned} xi,j=standarddeviationxi,jxjmean

  • 公式分子为均值归一化,使数据有正有负,可以得到最优的迭代路线,使更新尽可能沿着最优解路径去。
  • 公式分子为方差归一化,可以减小噪点数据的影响。
### 机器学习中的特征归一化 #### 特征归一化的概念 特征归一化是一种数据预处理技术,用于调整输入变量的范围以便于模型训练。其主要目的是消除不同特征间因量纲差异带来的影响,从而提高算法收敛速度和预测性能。通过对数值型特征进行归一化操作,可以使所有特征处于相似的数量级范围内[^3]。 #### 常见的特征归一化方法及其作用 以下是几种常见的特征归一化方法以及它们的作用: 1. **线性归一化 (Min-Max 归一化)** Min-Max 归一化通过线性变换将原始数据映射至指定区间(通常为 [0,1])。这种方法适用于数据分布较为均匀的情况,并能有效保留数据间的相对关系。公式表示如下: \[ X_{\text{norm}} = \frac{X - X_{\min}}{X_{\max} - X_{\min}} \] 这里 \(X\) 表示原始数据,\(X_{\min}\) 和 \(X_{\max}\) 分别代表样本集合中的最小值与最大值。 2. **零均值归一化 (Z-Score Normalization)** 零均值归一化也称为标准差标准化,它会先计算每列特征的平均数 (\(\mu\)) 及标准偏差 (\(\sigma\)) ,再利用下述方程转换原数据点使其服从均值为 0 方差为 1 的正态分布。 \[ X_{\text{std}} = \frac{X - \mu}{\sigma} \] 此种方式特别适合当数据呈现近似高斯分布时采用[^1]。 3. **基于其他数学函数的归一化** 当面对极端值较多的数据集或者希望压缩较大数值的影响时,则可以选择诸如对数(logarithmic scaling),倒数(reciprocal transformation), 或者双曲正切(tanh function)等方式来进行非线性的尺度变化[^2]。 #### 应用场景分析 - 数据分化较大的情况:如果某些维度上的取值跨度极大而另一些则非常集中,在这种情况下应用合适的归一化手段能够帮助提升分类器效果; - 距离度量为基础的学习模型:像 KNN(K Nearest Neighbor),SVM(Support Vector Machine with RBF kernel)之类的依赖欧几里得距离衡量实例相似程度的算法尤其受益于此过程因为未经处理可能会让那些幅度较高的属性主导最终决策边界形成; - 梯度下降优化求解的目标函数:对于很多需要迭代更新权重参数并通过梯度方向寻找最优解的问题而言,良好的初始化状态加上合理的步长控制往往离不开恰当规模约束后的输入向量支持; ```python from sklearn.preprocessing import MinMaxScaler, StandardScaler # 示例代码展示如何使用 scikit-learn 中内置工具完成上述两种基本形式的操作 data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler_min_max = MinMaxScaler() normalized_data_mm = scaler_min_max.fit_transform(data) scaler_z_score = StandardScaler() standardized_data_zs = scaler_z_score.fit_transform(data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值