自学内容网 自学内容网

【AI知识点】如何对包含异常值的数据进行归一化处理?

异常值是指在数据集中显著偏离其他数据点的值,它们可能会对机器学习模型的性能产生负面影响,特别是在归一化过程中。如果直接对包含异常值的数据进行归一化处理,可能会导致大多数数据点被压缩到一个非常小的范围内,而异常值占据较大的比例,影响模型的学习效果。因此,处理异常值时需要特别注意,可以通过以下几种方法对包含异常值的数据进行归一化处理:


一、几种处理方法

1. 去除异常值后再归一化

删除异常值 是处理异常值最直接的方法。在这种方法中,我们首先通过统计分析、箱型图(box plot)等方法识别异常值,然后将这些异常值移除,再对剩余的数据进行归一化。

优点:

  • 这种方法简单直接。

缺点:

  • 在某些场景中,异常值可能携带重要信息,直接删除会丢失部分有价值的数据。

适用场景

  • 当异常值明显且数量较少时,删除异常值是一种有效的手段。

步骤:

  1. 使用箱型图、Z-score 或 IQR(四分位距)方法识别异常值。
  2. 删除这些异常值。
  3. 对剩余数据进行归一化处理。

例子

假设我们有如下数据:

  • [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000]

其中 1000 1000 1000 是明显的异常值,我们可以删除它后再进行 Min-Max 归一化处理:

  • 删除异常值后数据变为 [ 10 , 15 , 20 , 25 , 30 ] [10, 15, 20, 25, 30] [10,15,20,25,30]

  • 使用 Min-Max 归一化:

    x norm = x − x min ⁡ x max ⁡ − x min ⁡ x_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}} xnorm=xmaxxminxxmin

    对这些值进行归一化后,结果为:

  • [ 0 , 0.25 , 0.5 , 0.75 , 1 ] [0, 0.25, 0.5, 0.75, 1] [0,0.25,0.5,0.75,1]


2. 截断异常值(Clipping)

截断(Clipping) 是一种柔和的处理异常值的方式,而不是直接删除异常值。我们可以将超过某个阈值的异常值设置为该阈值,从而减少其对模型的影响。

优点:

  • 保留了所有的数据,且减轻了异常值对归一化结果的影响。

缺点:

  • 如果异常值具有重要的含义,这种方法会导致部分信息丢失。

适用场景

  • 适用于需要将数据强制限制在特定范围内的场合,特别是在处理物理数据或模型输入数据时,比如图像处理、信号处理等。

例子

假设我们使用 [ 10 , 30 ] [10, 30] [10,30] 作为阈值,任何超过 30 30 30 的值被限制在这个阈值上,任何低于 10 10 10 的值也会被限制在下限。

  • 数据: [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000]
  • 将大于 30 的值截断为 30,得到: [ 10 , 15 , 20 , 25 , 30 , 30 ] [10, 15, 20, 25, 30, 30] [10,15,20,25,30,30]
  • 然后对这些数据进行 Min-Max 归一化处理,结果为:
    • [ 0 , 0.25 , 0.5 , 0.75 , 1 , 1 ] [0, 0.25, 0.5, 0.75, 1, 1] [0,0.25,0.5,0.75,1,1]

3. 使用鲁棒归一化(Robust Scaler)

鲁棒归一化 是一种专门设计来处理异常值的方法。它不依赖于数据的最大值和最小值,而是使用数据的中位数和四分位数范围(IQR, Interquartile Range)来进行归一化。这使得它对异常值不敏感,能够更好地处理具有异常值的数据。

公式:

x norm = x − median ( X ) I Q R ( X ) x_{\text{norm}} = \frac{x - \text{median}(X)}{IQR(X)} xnorm=IQR(X)xmedian(X)

其中:

  • median ( X ) \text{median}(X) median(X) 是数据的中位数,中位数是位于数据中间的值:
    • 如果数据的个数是奇数,直接取中间那个值;
    • 如果数据的个数是偶数,则取中间两个数的平均值。
  • I Q R ( X ) = Q 3 − Q 1 IQR(X) = Q3 - Q1 IQR(X)=Q3Q1 是四分位距,即数据的 75% 分位数( Q 3 Q3 Q3)减去 25% 分位数( Q 1 Q1 Q1)。
    • 第 1 四分位数( Q 1 Q1 Q1) :取排序后数据的前 50% 的中位数。
    • 第 3 四分位数( Q 3 Q3 Q3) :取排序后数据的后 50% 的中位数。

优点:

  • 不依赖于数据的极端值,非常适合处理包含异常值的数据。

缺点:

  • 数据的分布信息可能会丢失,尤其在极端情况下。

适用场景

  • 数据中存在较多异常值时,鲁棒归一化是一个理想的选择。

例子

假设我们有如下数据:

  • [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000]
  1. 中位数(Median)
    数据集有 6 个元素,为偶数个数,因此中位数为第 3 和第 4 个数的平均值:
    中位数 = 20 + 25 2 = 22.5 \text{中位数} = \frac{20 + 25}{2} = 22.5 中位数=220+25=22.5

  2. 第 1 四分位数(Q1)
    Q1 是前半部分数据的中位数,前半部分为 ([10, 15, 20]),其中 Q1 为:
    Q 1 = 15 Q1 = 15 Q1=15

  3. 第 3 四分位数(Q3)
    Q3 是后半部分数据的中位数,后半部分为 ([25, 30, 1000]),其中 Q3 为:
    Q 3 = 30 Q3 = 30 Q3=30

  4. 四分位距(IQR)
    IQR 是第 3 四分位数和第 1 四分位数的差值:
    I Q R = Q 3 − Q 1 = 30 − 15 = 15 IQR = Q3 - Q1 = 30 - 15 = 15 IQR=Q3Q1=3015=15

  5. 结果
    使用鲁棒归一化公式,归一化后的数据为:
    [ − 0.83 , − 0.50 , − 0.17 , 0.17 , 0.50 , 65.17 ] [-0.83, -0.50, -0.17, 0.17, 0.50, 65.17] [0.83,0.50,0.17,0.17,0.50,65.17]

可以看出,除了 1000 1000 1000 这个异常值之外,其他数据点被归一化到一个较为集中的范围,而异常值仍然被较大程度地放大。


4. 对异常值做对数归一化(Log Normalization)

在处理异常值时,对数归一化 也是一个常用的方法。它通过对数据取对数,能够有效缩小大值的影响,使得异常值的影响被压缩。

公式

x norm = log ⁡ ( x + 1 ) x_{\text{norm}} = \log(x + 1) xnorm=log(x+1)

优点:

  • 对数归一化对数据中的大值(包括异常值)有压缩效果,使其对模型的影响减小。

缺点:

  • 不适合处理负值或 0 值,需要对数据进行平移。

适用场景

  • 当数据中有极大值且分布不均匀时,特别是具有指数增长的数据。

例子

数据: [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000]

对数据进行 Log 归一化:

  • x norm = log ⁡ ( x + 1 ) x_{\text{norm}} = \log(x + 1) xnorm=log(x+1)
  • 对数据进行归一化后,结果为:
    • [ 2.30 , 2.71 , 3.00 , 3.22 , 3.40 , 6.91 ] [2.30, 2.71, 3.00, 3.22, 3.40, 6.91] [2.30,2.71,3.00,3.22,3.40,6.91]

可以看到,异常值 1000 1000 1000 的影响大大减少。


5. 温索化(Winsorization)

温索化是另一种处理异常值的方法,它通过将异常值“压缩”到数据的一个合理范围内,从而减少它们对模型的影响。温索化通常将超过某个百分位数(如 5% 或 95%)的值调整为该百分位数的值。

优点:

  • 减少了极端异常值的影响,而保留了数据中的信息。

缺点:

  • 如果异常值有实际意义,温索化会导致数据偏差。

适用场景

  • 适用于在保留数据统计信息完整性的前提下减少极端值影响的场景,适用于异常值较少且这些值不具备重要意义的场合。

例子

假设我们对数据 [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000] 应用温索化,设定 5% 和 95% 为上下限:

  • 超过 95% 分位数的异常值(1000)被压缩到 30,结果变为 [ 10 , 15 , 20 , 25 , 30 , 30 ] [10, 15, 20, 25, 30, 30] [10,15,20,25,30,30]
  • 然后对温索化后的数据进行归一化,结果类似于之前的 Min-Max 归一化。

温索化(Winsorization)与截断(Clipping)的区别

  • 两者的关键区别在于 温索化(Winsorization) 是基于数据分布的(如百分位),而 截断(Clipping) 是基于指定的上下限(阈值)直接进行限制。
特性温索化(Winsorization)截断(Clipping)
目标降低极端值对统计量(如均值、方差)的影响强制将数据限制在指定的最大/最小值之间
处理方式将超出特定百分位数的值替换为该百分位数值超出预定范围的值直接设为上下限
应用场景减少极端异常值对数据统计分析的影响控制数据在物理上或逻辑上的合理范围内
依据基于数据的分布特征(如百分位数)基于指定的数值范围(可能是人为设定的)

6. 分箱处理(Binning)

分箱处理 将数据分为多个范围或区间,然后将数据映射到这些区间中。这样可以有效减少异常值的影响,因为异常值会被划分到特定的区间,而不是直接影响模型的参数。

优点:

  • 可以有效消除异常值对数据分布的影响,常用于离散化处理。

缺点:

  • 如果区间划分不合理,可能会丢失数据的精确信息。

适用场景

  • 适用于需要将连续数据离散化的场景。

例子

假设我们将数据 [ 10 , 15 , 20 , 25 , 30 , 1000 ] [10, 15, 20, 25, 30, 1000] [10,15,20,25,30,1000] 分成 5 个区间:

  • [ 0 − 10 ] , [ 10 − 20 ] , [ 20 − 30 ] , [ 30 − 50 ] , [ 50 − ∞ ] [0-10], [10-20], [20-30], [30-50], [50-\infty] [010],[1020],[2030],[3050],[50]

  • 10 映射到区间 [ 10 − 20 ] [10-20] [1020],1000 映射到 [ 50 − ∞ ] [50-\infty] [50],从而减少了异常值对模型的影响。


二、如何选择合适的处理方法?

1. 异常值的数量和重要性

  • 如果异常值很少且显著,直接删除它们可能是一个有效的选择。
  • 如果异常值较多但有重要意义,可以考虑使用鲁棒归一化或温索化。

2. 数据的分布

  • 对数归一化适用于呈指数增长的特征。
  • 对于具有对称分布的数据,标准化或鲁棒归一化更合适。

3. 模型的要求

  • 基于距离的模型(如 k 近邻、SVM)对异常值敏感,因此需要更稳健的归一化方法,如鲁棒归一化。
  • 基于决策树的模型对异常值相对不敏感,因此可能不需要特别的异常值处理。

4. 是否保留原始数据特征

  • 如果数据的原始分布对业务意义较大(如金融数据中的大额交易、社会调查中的极端答案),建议使用温索化或分箱处理来保留部分原始信息。

三、总结

对于包含异常值的数据,简单的归一化方法(如 Min-Max 归一化)可能会因为极端值而失效,因此我们需要通过特定的异常值处理方法,如鲁棒归一化对数归一化截断温索化等,来减少异常值对模型的负面影响。选择合适的处理方法可以使模型在应对数据中的噪声、极端值时更加稳健,从而提升模型的泛化能力和预测准确性。


原文地址:https://blog.csdn.net/weixin_43221845/article/details/142730815

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!