与 KNN 一起使用的规范化特征

机器算法验证 正常化 标准化 k-最近邻
2022-04-21 15:33:20

假设我有两个特征:年龄和收入。

有人告诉我,我需要在使用 KNN 建模之前对特征进行归一化。缩放到 0 和 1、采用单位范数或 z 分数有什么区别?我被教导所有这些“标准化”数据,但不知道每个如何或为什么适用。

1个回答

属性数据重新缩放为值以在 [0, 1] 或 [-1, 1] 中缩放范围对于优化算法(例如梯度下降)很有用,这些算法用于对输入进行加权的机器学习算法(例如回归和神经网络) )。重新缩放也用于使用距离测量的算法,例如 K-Nearest-Neighbors (KNN)。像这样的重新缩放有时称为“标准化”。pythonskikit-learn 中的 MinMaxScaler 类执行此操作。

NORMALIZING属性数据用于重新缩放特征向量的分量,使其完整向量长度为​​ 1。这是“按单位长度缩放”。这通常意味着将特征向量的每个分量除以向量的欧几里得长度,但也可以是曼哈顿或其他距离测量值。这种预处理重缩放方法对于使用距离学习的稀疏属性特征和算法(例如 KNN)很有用。Python scikit-learn Normalizer 类可用于此目的。

标准化属性数据也是一种预处理方法,但它假设输入特征的高斯分布。它“标准化”为 0 的平均值和 1 的标准差。这更适用于线性回归、逻辑回归和线性判别分析。scikit-learn 中的 Python StandardScaler 类适用于此。