1. Min-Max 归一化(常见)

公式:

x′=x−min⁡(x)max⁡(x)−min⁡(x)x' = \frac{x - \min(x)}{\max(x) - \min(x)}

  • 范围:把数据映射到 [0,1] 或其他区间。
  • 优点:直观,保留原始分布比例。
  • 缺点:受极端值影响很大。

2. Z-Score 标准化(零均值单位方差)

公式:

x′=x−μσx' = \frac{x - \mu}{\sigma}

其中 μ\mu 是均值,σ\sigma 是标准差。

  • 范围:不固定,但均值 = 0,标准差 = 1。
  • 优点:对极值更稳健,常用于机器学习。
  • 缺点:数据要近似正态分布时效果最佳。

3. 小数定标归一化(Decimal Scaling)

公式:

x′=x10kx' = \frac{x}{10^k}

其中 kk 取使得 ∣x′∣<1|x'| < 1 的最小整数。

  • 例子:如果数据在 [–985, 962],则取 k=3k=3,数据缩放到 [–0.985, 0.962]。
  • 优点:计算快,适合大整数。
  • 缺点:不考虑分布特征。

4. Log/对数缩放

公式:

x′=log⁡(x+1)x' = \log(x+1)

  • 适用:数据分布极度偏斜(长尾),如收入、点击次数。
  • 优点:压缩大值,放大小值。
  • 缺点:要求数据非负。

5. 分位数归一化(Quantile Normalization)

  • 方法:将数据映射到分位数(如 0~1 的百分位)。
  • 例子:95% 的值 → 0.95。
  • 适用:数据分布差异很大,希望结果均匀分布在 [0,1]。

6. Max-Abs 缩放

公式:

x′=xmax⁡(∣x∣)x' = \frac{x}{\max(|x|)}

  • 范围:[-1, 1]。
  • 适用:稀疏矩阵(文本 TF-IDF),不破坏稀疏性。

7. Robust Scaling(基于中位数和 IQR)

公式:

x′=x−median(x)IQR(x)x' = \frac{x - \text{median}(x)}{IQR(x)}

其中 IQR=Q3−Q1IQR = Q3 - Q1。

  • 适用:有极端值时,效果比 Z-Score 更稳健。

8. 单位向量归一化(L2 Norm)

公式:

x′=x∥x∥x' = \frac{x}{|x|}

  • 适用:向量(如文本 embedding),保证长度为 1。
  • 范围:每个样本向量的范数归一化。

SQL 里能直接做的

  • Min-Max
  • Z-Score ✅(用 AVG()STDDEV()
  • Max-Abs
  • Decimal Scaling
  • Log 缩放

更复杂的(分位数归一化、Robust Scaling、单位向量归一化)通常在 Python/R 里做更方便。


行动建议

  • 如果只是表内数值清洗 → 用 SQL 做 Min-Max 或 Z-Score。
  • 如果要喂给机器学习模型 → 推荐 Z-Score 或 Robust。
  • 如果数据有极端值/偏斜 → 考虑 Log 或分位数。
  • 如果是文本向量 → 单位向量归一化。