机器学习入门(四):距离度量方法 归一化和标准化

简介: 机器学习入门(四):距离度量方法 归一化和标准化

1. 距离的度量方法

1.1 机器学习中为什么要度量距离?

机器学习算法中,经常需要 判断两个样本之间是否相似 ,比如KNN,K-means,推荐算法中的协同过滤等等,常用的套路是 将相似的判断转换成距离的计算 ,距离近的样本相似程度高,距离远的相似程度低。所以度量距离是很多算法中的关键步骤。

KNN算法中要求数据的所有特征都用数值表示。若在数据特征中存在非数值类型,必须采用手段将其进行量化为数值。

  • 比如样本特征中包含有颜色(红、绿、蓝)一项,颜色之间没有距离可言,可通过将颜色转化为 灰度值来实现距离计算
  • 每个特征都用数值表示,样本之间就可以计算出彼此的距离来

接下来介绍几种距离度量方法

1.2 欧式距离

1.3 曼哈顿距离

1.4 切比雪夫距离(了解)

国际象棋棋盘上二个位置间的切比雪夫距离是指王要从一个位置移至另一个位置需要走的步数。(王可以往斜前或斜后方向移动一格)

1.5 闵式距离

闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。

其中p是一个变参数:

  • 当 p=1 时,就是曼哈顿距离;
  • 当 p=2 时,就是欧氏距离;
  • 当 p→∞ 时,就是切比雪夫距离。

根据 p 的不同,闵氏距离可以表示某一类/种的距离。

1.6 小结

  1. 欧式距离、曼哈顿距离、切比雪夫距离是最常用的距离
  2. 闵式距离是一组距离的度量,当 p = 1 时代表曼哈顿距离,当 p = 2 时代表欧式距离,当 p = ∞ 时代表切比雪夫距离

2. 归一化和标准化

2.1 为什么做归一化和标准化

样本中有多个特征,每一个特征都有自己的定义域和取值范围,他们对距离计算也是不同的,如取值较大的影响力会盖过取值较小的参数。因此,为了公平,样本参数必须做一些归一化处理,将不同的特征都缩放到相同的区间或者分布内。

2.2 归一化

通过对原始数据进行变换,把数据映射到(默认为[0,1])之间。

scikit-learn 中实现归一化的 API:

from sklearn.preprocessing import MinMaxScaler

def test():
    # 1. 准备数据
    data = [[90, 2, 10, 40],
            [60, 4, 15, 45],
            [75, 3, 13, 46]]
    # 2. 初始化归一化对象
    transformer = MinMaxScaler()
    # 3. 对原始特征进行变换
    data = transformer.fit_transform(data)
    # 4. 打印归一化后的结果
    print(data)

归一化受到最大值与最小值的影响,这种方法容易受到异常数据的影响, 鲁棒性较差,适合传统精确小数据场景

2.3 标准化

  • mean 为特征的平均值
  • σ 为特征的标准差

scikit-learn 中实现标准化的 API:

from sklearn.preprocessing import StandardScaler

def test():
    # 1. 准备数据
    data = [[90, 2, 10, 40],
            [60, 4, 15, 45],
            [75, 3, 13, 46]]
    # 2. 初始化标准化对象
    transformer = StandardScaler()
    # 3. 对原始特征进行变换
    data = transformer.fit_transform(data)
    # 4. 打印归一化后的结果
    print(data)

对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大

2.4 小结

  1. 归一化和标准化都能够将量纲不同的数据集缩放到相同范围内
  2. 归一化受到最大值与最小值的影响,这种方法容易受到异常数据的影响, 鲁棒性较差,适合传统精确小数据场景
  3. 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,鲁棒性更好
相关文章
|
5月前
|
机器学习/深度学习 算法 Python
机器学习:归一化
这段内容主要讨论了归一化的目的和两种类型的归一化方法。归一化是为了确保在梯度下降过程中,不同维度的参数以相似的幅度调整,避免因数据尺度差异导致的优化问题。文中提到了最大值最小值归一化和标准归一化,后者更不易受到离群值的影响,并且可以使数据符合正态分布。通过Python代码示例展示了如何使用`StandardScaler`进行标准归一化。
114 2
|
机器学习/深度学习 算法 知识图谱
机器学习常用距离度量
机器学习常用距离度量
107 0
|
4月前
|
机器学习/深度学习 算法 C++
机器学习归一化特征编码(二)
这篇文档讨论了机器学习中的特征编码,特别是独热编码(OneHotEncoder)在处理离散变量时的作用。它指出,对于多分类变量,独热编码是常用方法,但对二分类变量通常不需要。在Python的`sklearn`库中,`OneHotEncoder`可以用来实现这一过程,并可以通过设置`drop='if_binary'`来忽略二分类变量。文档还提到了逻辑回归,解释了正则化参数`C`和`penalty`,并列举了不同的优化算法,如`liblinear`、`lbfgs`等。
|
4月前
|
机器学习/深度学习 算法 数据处理
机器学习归一化特征编码(一)
特征缩放是机器学习预处理的关键步骤,它包括归一化和标准化。归一化通过最大最小值缩放,将数据转换到[0,1]区间,有助于梯度下降算法更快收敛,减少数值较大特征的影响。标准化则通过减去均值并除以标准差,确保数据具有零均值和单位方差,适用于关注数据分布情况的算法。例如,欧氏距离计算时,未归一化的特征可能导致模型偏向数值较大的特征。归一化能提升模型精度,尤其是当距离度量如欧式距离时。常见的实现方法有`MinMaxScaler`,它将每个特征值缩放到用户指定的范围,如[0,1]。而`StandardScaler`执行Z-Score标准化,数据分布符合标准正态分布。
|
4月前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
51 3
|
数据采集 机器学习/深度学习 Python
机器学习 - 数据预处理中的 特征离散化 方法
在数据分析中,我们认为在某个范围内取值过于密集的特征认为是取值”连续“的特征。出于某些需求经常需要将这些”连续特征进行离散化“。本文介绍三种比较实用的数据离散化方法。 本文介绍可供参考的三种特征离散化方法的Python实现。
259 1
|
机器学习/深度学习 人工智能 算法
详解机器学习中的数据处理(二)——特征归一化
详解机器学习中的数据处理(二)——特征归一化
326 0
详解机器学习中的数据处理(二)——特征归一化
|
机器学习/深度学习 算法 Python
学习笔记: 机器学习经典算法-数据集的归一化
机器学习经典算法-个人笔记和学习心得分享
118 0
|
机器学习/深度学习 资源调度 自然语言处理
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
|
机器学习/深度学习
机器学习数学基础三:线代基础和特征分解
对于给定矩阵A,寻找=个常数入和非零向量x,使得向量x被矩阵A作用后所得的向量Ax.与原向量x平行,并且满足Ax=λx
110 0
机器学习数学基础三:线代基础和特征分解