第3章 线性模型
3.1 线性模型的基本形式
3.1.1 线性模型的核心公式
线性模型通过属性的线性组合进行预测,其核心公式为:
[
f(x) = \omega_1 X_1 + \omega_2 X_2 + ... + \omega_d X_d + b
]
其中:
- ω 1 , ω 2 , . . . , ω d \omega_1, \omega_2, ..., \omega_d ω1,ω2,...,ωd:表示各个属性的权重,权重决定了每个属性在预测中的重要性。
- X 1 , X 2 , . . . , X d X_1, X_2, ..., X_d X1,X2,...,Xd:表示输入的特征值。
- b b b:偏置项,调整模型的整体偏移。
3.1.2 向量表示形式
上述公式可以简化为向量形式:
[
f(x) = \omega^T x + b
]
- ω T \omega^T ωT 是权重向量的转置, x x x 是输入向量。这样可以更清晰地表示多个特征和权重之间的线性组合。
3.1.3 线性模型的优点
- 简单性:线性模型形式简单,易于理解和实现。
- 可解释性 :由于每个权重 o m e g a i \\omega_i omegai 直观地表示了对应属性对预测的重要性,模型具有良好的可解释性。
示例:
假设我们要预测一个房屋的租金,房屋的面积和地段是两个重要因素。模型可以写为:
[
f(x) = 30 \cdot 面积 + 500 \cdot 地段 + 200
]
表示每增加一平方米面积,租金增加 30 元,而地段的评分每增加一分,租金增加 500 元。200 代表固定基础租金。
3.2 线性回归
3.2.1 线性回归的目标
线性回归模型的目标是通过最小化误差,拟合一个线性函数来预测连续输出变量。其核心公式为:
[
f(x) = \omega^T x + b
]
其中, ω \omega ω 和 b b b 是模型需要学习的参数。
3.2.2 误差衡量标准------均方误差(MSE)
为了衡量模型预测值与真实值之间的误差,线性回归使用 均方误差(MSE) :
[
E(\omega, b) = \frac{1}{2m} \sum_{i=1}^m (y_i - (\omega^T x_i + b))^2
]
其中:
- y i y_i yi :第 i i i 个样本的真实输出值。
- f ( x i ) = ω T x i + b f(x_i) = \omega^T x_i + b f(xi)=ωTxi+b:模型预测的输出值。
3.2.3 最小二乘法求解
通过最小化均方误差,线性回归利用 最小二乘法 来求解最优的 ω \omega ω 和 b b b。其闭式解为:
[
\omega = (X^T X)^{-1} X^T y
]
- X X X:输入数据矩阵。
- y y y:输出结果向量。
3.2.4 线性回归的几何解释
线性回归可以通过几何角度理解为:它试图找到一条最佳的直线,使得所有样本点到直线的垂直距离平方和最小。
3.2.5 限制与扩展
- 局限性:线性回归只能处理线性关系。对于复杂的非线性关系,需要使用多项式回归或其他非线性模型。
- 扩展 :通过添加非线性特征(如多项式),线性回归可以扩展为 多项式回归。
示例:
假设我们有如下房屋数据:
- 面积(平方米):50,70,90
- 租金(元):2000,3000,4000
我们使用线性回归拟合数据,得到模型 f ( x ) = 50 ⋅ 面积 + 0 f(x) = 50 \cdot 面积 + 0 f(x)=50⋅面积+0,表示每增加 1 平方米,租金增加 50 元。
3.3 对数几率回归
3.3.1 对数几率回归的用途
对数几率回归用于二分类问题。它基于线性模型的输出,并通过 Sigmoid 函数 将输出值转换为概率,适合分类任务。
3.3.2 Sigmoid 函数的公式
Sigmoid 函数的公式为:
[
y = \frac{1}{1 + e^{-(\omega^T x + b)}}
]
该函数将线性回归的输出 z = ω T x + b z = \omega^T x + b z=ωTx+b 转换为 (0, 1) 之间的值,表示样本属于某一类别的概率。
3.3.3 目标函数------对数似然函数
为了学习模型参数 ω \omega ω 和 b b b,对数几率回归使用 极大似然估计 。其对数似然函数为:
[
L(\omega, b) = \sum_{i=1}^m \left( y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right)
]
其中, p i p_i pi 是第 i i i 个样本预测为正类的概率, y i y_i yi 是真实标记(0 或 1)。
3.3.4 对数几率回归的优势
- 概率输出:对数几率回归不仅可以输出类别预测,还可以输出样本属于某类的概率。
- 数学性质良好:Sigmoid 函数是凸函数,方便使用梯度下降法等数值优化方法求解。
3.3.5 对数几率回归的局限
对数几率回归假设样本线性可分,对于非线性分类问题,效果可能不好。可以通过引入核方法或者非线性特征变换来处理更复杂的分类问题。
示例:
我们预测一个人是否购买产品,收入和年龄作为输入特征,模型输出的概率是:
[
y = \frac{1}{1 + e^{-(2 \cdot 收入 + 3 \cdot 年龄 + 1)}}
]
对于收入 1000,年龄 30 的人,计算得到购买概率接近 1,表示该人很可能会购买该产品。
3.4 线性判别分析(LDA)的基本思想
LDA是一种常用于分类任务的降维方法,目的是找到一个线性投影,使得投影后不同类别的样本可以被最大限度地区分开。LDA通过最大化类间差异(类别的均值差异)和最小化类内差异(同类样本之间的散布)来完成这一目标。
LDA的核心步骤是:
- 计算类内散布矩阵 ( S_W )。
- 计算类间散布矩阵 ( S_B )。
- 找到一个投影向量 ( \mathbf{w} ),使得不同类别在投影后的类间差异最大,类内差异最小。
3.4.1 LDA的数学公式
3.4.1.1 类内散布矩阵 ( S_W )
类内散布矩阵 ( S_W ) 衡量同类样本的离散程度。它的定义为:
[
S_W = \sum_{i=1}^{C} \sum_{\mathbf{x}_j \in \mathbf{X}_i} (\mathbf{x}_j - \mathbf{\mu}_i)(\mathbf{x}_j - \mathbf{\mu}_i)^T
]
- ( C ) 是类别的总数。
- ( \mathbf{X}_i ) 是第 ( i ) 类的数据集,包含属于第 ( i ) 类的所有样本。
- ( \mathbf{x}_j ) 是第 ( i ) 类中的第 ( j ) 个样本。
- ( \mathbf{\mu}_i ) 是第 ( i ) 类的均值向量,表示该类样本的平均值。
- ( (\mathbf{x}_j - \mathbf{\mu}_i) ) 表示每个样本 ( \mathbf{x}_j ) 与其类别均值之间的差异。
- 矩阵 ( (\mathbf{x}_j - \mathbf{\mu}_i)(\mathbf{x}_j - \mathbf{\mu}_i)^T ) 是该差异向量的外积,衡量样本在不同维度上的离散性。
3.4.1.2 类间散布矩阵 ( S_B )
类间散布矩阵 ( S_B ) 衡量不同类别之间的离散程度。它的定义为:
[
S_B = \sum_{i=1}^{C} N_i (\mathbf{\mu}_i - \mathbf{\mu})(\mathbf{\mu}_i - \mathbf{\mu})^T
]
- ( N_i ) 是第 ( i ) 类的样本数。
- ( \mathbf{\mu}_i ) 是第 ( i ) 类的均值向量。
- ( \mathbf{\mu} ) 是全局均值向量,即所有类别样本的总体均值。
- ( (\mathbf{\mu}_i - \mathbf{\mu}) ) 表示每个类别的均值向量与全局均值的差异。
类间散布矩阵度量的是不同类别的均值向量之间的差异。
3.4.1.3 优化目标
LDA的目标是找到一个投影向量 ( \mathbf{w} ),使得投影后类间散布尽可能大,类内散布尽可能小。优化目标可以定义为:
[
J(\mathbf{w}) = \frac{\mathbf{w}^T S_B \mathbf{w}}{\mathbf{w}^T S_W \mathbf{w}}
]
- ( J(\mathbf{w}) ) 是我们要最大化的目标函数,它表示投影后的类间散布和类内散布的比值。
- ( \mathbf{w} ) 是投影向量,LDA要找的就是这个向量,使得投影效果最好。
- ( \mathbf{w}^T S_B \mathbf{w} ) 是投影后类间散布的值。
- ( \mathbf{w}^T S_W \mathbf{w} ) 是投影后类内散布的值。
通过最大化这个比值,我们可以找到最佳的投影方向。
3.4.2 数学计算示例
我们将通过一个简单的两类数据集来展示如何一步步计算LDA的主要公式。
3.4.2.1 示例数据集
假设我们有两个类别的数据集,类别1和类别2,每类有两个样本,数据如下:
- 类别1的样本:( \mathbf{X}_1 = {[1, 2], [2, 3]} )
- 类别2的样本:( \mathbf{X}_2 = {[4, 5], [5, 6]} )
3.4.2.2 计算类别均值
首先,计算每个类别的均值向量 ( \mathbf{\mu}_1 ) 和 ( \mathbf{\mu}_2 ):
[
\mathbf{\mu}_1 = \frac{1}{2}([1, 2] + [2, 3]) = [1.5, 2.5]
]
[
\mathbf{\mu}_2 = \frac{1}{2}([4, 5] + [5, 6]) = [4.5, 5.5]
]
全局均值向量 ( \mathbf{\mu} ) 是两个类别均值的平均:
[
\mathbf{\mu} = \frac{1}{4}([1, 2] + [2, 3] + [4, 5] + [5, 6]) = [3, 4]
]
3.4.2.3 计算类内散布矩阵 ( S_W )
我们接下来计算类内散布矩阵 ( S_W ),对于每一类,计算样本与均值的差异:
对于类别1:
[
S_{W1} = ([1, 2] - [1.5, 2.5])([1, 2] - [1.5, 2.5])^T + ([2, 3] - [1.5, 2.5])([2, 3] - [1.5, 2.5])^T
]
分别计算:
[
[1, 2] - [1.5, 2.5] = [-0.5, -0.5], \quad [2, 3] - [1.5, 2.5] = [0.5, 0.5]
]
外积:
[
[-0.5, -0.5]^T [-0.5, -0.5] = \begin{bmatrix} 0.25 & 0.25 \ 0.25 & 0.25 \end{bmatrix}, \quad [0.5, 0.5]^T [0.5, 0.5] = \begin{bmatrix} 0.25 & 0.25 \ 0.25 & 0.25 \end{bmatrix}
]
因此:
[
S_{W1} = \begin{bmatrix} 0.5 & 0.5 \ 0.5 & 0.5 \end{bmatrix}
]
对于类别2:
[
S_{W2} = ([4, 5] - [4.5, 5.5])([4, 5] - [4.5, 5.5])^T + ([5, 6] - [4.5, 5.5])([5, 6] - [4.5, 5.5])^T
]
计算得:
[
[4, 5] - [4.5, 5.5] = [-0.5, -0.5], \quad [5, 6] - [4.5, 5.5] = [0.5, 0.5]
]
外积:
[
[-0.5, -0.5]^T [-0.5, -0.5] = \begin{bmatrix} 0.25 & 0.25 \ 0.25 & 0.25 \end{bmatrix}, \quad [0.5, 0.5]^T [0.5, 0.5] = \begin{bmatrix} 0.25 & 0.25 \ 0.25 & 0.25 \end{bmatrix}
]
因此:
[
S_{W2} = \begin{bmatrix} 0.5 & 0.5 \ 0.5 & 0.5 \end{bmatrix}
]
总的类内散布矩阵 ( S_W ) 是每个类别类内散布矩阵的总和,即:
[
S_W = S_{W1} + S_{W2} = \begin{bmatrix} 0.5 & 0.5 \ 0.5 & 0.5 \end{bmatrix} + \begin{bmatrix} 0.5 & 0.5 \ 0.5 & 0.5 \end{bmatrix} = \begin{bmatrix} 1 & 1 \ 1 & 1 \end{bmatrix}
]
3.4.2.4 计算类间散布矩阵 ( S_B )
接下来我们计算类间散布矩阵 ( S_B )。类间散布矩阵是每个类别的均值向量与全局均值向量之间的差异的加权和。根据公式:
[
S_B = \sum_{i=1}^{C} N_i (\mathbf{\mu}_i - \mathbf{\mu})(\mathbf{\mu}_i - \mathbf{\mu})^T
]
我们先计算每个类别的均值与全局均值的差异:
对于类别1:
[
\mathbf{\mu}_1 - \mathbf{\mu} = [1.5, 2.5] - [3, 4] = [-1.5, -1.5]
]
外积:
[
[-1.5, -1.5]^T [-1.5, -1.5] = \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix}
]
对于类别2:
[
\mathbf{\mu}_2 - \mathbf{\mu} = [4.5, 5.5] - [3, 4] = [1.5, 1.5]
]
外积:
[
[1.5, 1.5]^T [1.5, 1.5] = \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix}
]
现在加权这些外积矩阵:
[
S_B = N_1 \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix} + N_2 \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix}
]
假设每个类别的样本数量 ( N_1 = N_2 = 2 ),则:
[
S_B = 2 \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix} + 2 \begin{bmatrix} 2.25 & 2.25 \ 2.25 & 2.25 \end{bmatrix} = \begin{bmatrix} 9 & 9 \ 9 & 9 \end{bmatrix}
]
3.4.2.5 优化目标
现在我们已经有了类内散布矩阵 ( S_W ) 和类间散布矩阵 ( S_B )。接下来,我们需要找到一个投影向量 ( \mathbf{w} ),使得投影后的类间散布和类内散布的比值 ( J(\mathbf{w}) ) 最大。
[
J(\mathbf{w}) = \frac{\mathbf{w}^T S_B \mathbf{w}}{\mathbf{w}^T S_W \mathbf{w}}
]
我们需要最大化这个比值。通过求解广义特征值问题 ( S_W^{-1} S_B \mathbf{w} = \lambda \mathbf{w} ),可以找到最优的投影向量 ( \mathbf{w} )。
具体而言,我们通过求解 ( S_W^{-1} S_B ) 的特征向量来获得最优的投影方向。
3.5 不平衡数据集
3.5.1 过采样(Oversampling)
过采样 是指在数据集不平衡的情况下,增加少数类别的样本数量,以平衡各类别的样本数量。这样可以防止模型偏向于预测多数类别。
举例:
假设我们有一个二分类问题,分类结果是"猫"和"狗"。假设原始数据集中的"猫"样本有100个,而"狗"样本只有10个。这是一个不平衡数据集,模型可能会更偏向预测"猫",因为"猫"的样本多。
为了平衡数据集,过采样的方法是通过复制或生成新的"狗"样本,将"狗"的样本数量增加到与"猫"相等(比如也变为100个)。
一种常见的过采样方法是SMOTE(Synthetic Minority Over-sampling Technique),它通过生成新样本而不是简单复制样本来扩充少数类别。
3.5.2 欠采样(Undersampling)
欠采样 则是通过减少多数类别的样本数量来平衡数据集。这样可以防止多数类别主导模型,但也可能导致信息丢失。
举例:
假设还是上面的"猫"和"狗"的数据集,猫的样本有100个,狗的样本有10个。欠采样的方法是减少猫的样本数量,比如将猫的样本减少到10个,以匹配狗的样本数。这样可以让模型在训练时平等地看到每个类别的样本,但也意味着丢失了很多猫的样本信息。
3.5.3 阈值移动(Threshold Moving)
阈值移动 是针对分类模型输出的概率进行调整的一种方法。分类模型(如逻辑回归、SVM)通常会输出一个概率值,默认情况下,我们根据这个概率是否大于0.5来决定分类结果。但在不平衡数据集中,少数类别的概率较低,直接使用0.5作为阈值可能导致少数类别的样本不易被分类为正确类别。因此,通过移动分类阈值来提高少数类别的检测率。
举例:
假设我们有一个模型来预测一个样本是否是"狗"。这个模型输出的概率是指这个样本被预测为"狗"的可能性。如果我们默认使用0.5作为阈值,那么模型会预测概率大于0.5的样本为"狗",而其他样本为"猫"。但是,由于"狗"的样本数量较少,它们的预测概率通常较低。
为了增加"狗"的分类准确率,我们可以将阈值降低,比如从0.5调整为0.3。这样,即使模型的输出概率在0.3到0.5之间的样本,也会被预测为"狗"。这种方法有助于在不平衡数据中提高少数类别的预测效果。
3.5.4 示例总结
假设我们有一个不平衡的数据集,包含100只"猫"和10只"狗"。现在我们使用三种不同的方法来应对不平衡:
- 过采样:我们生成90个新的"狗"样本,使得"狗"和"猫"样本的数量一样多,各有100个。
- 欠采样:我们减少"猫"的样本数量,删掉90个"猫",只保留10个"猫"样本,使得"猫"和"狗"样本数量一样多,各有10个。
- 阈值移动:在训练完模型后,我们调整模型的阈值,将默认的0.5调整为0.3,以便在模型预测"狗"的概率时能更容易将样本归类为"狗"。
3.5.5 三种方法的优缺点
-
过采样:
- 优点:保留了所有多数类别的样本,增加了少数类别的样本数量。
- 缺点:可能导致模型过拟合,因为生成的少数类别样本并不真实。
-
欠采样:
- 优点:减少了数据集大小,降低了训练时间。
- 缺点:可能丢失多数类别的有用信息,导致模型无法充分学习。
-
阈值移动:
- 优点:不改变原始数据集,仅通过调整分类决策来提高少数类别的预测性能。
- 缺点:阈值的选择需要进行调整和验证,可能并不适用于所有问题。
附录
1. 最小二乘法简介
最小二乘法(Least Squares Method)是一种常用的回归方法,用于在线性模型中估计未知参数。其基本思想是通过最小化残差平方和来找到模型的最优参数。对于一组观测数据,最小二乘法的目标是让模型的预测值尽量接近真实值,即最小化以下残差平方和:
[
E(\hat{y}) = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2
]
其中 ( y_i ) 是真实值,( \hat{y}_i ) 是预测值,( m ) 是样本数量。
为了使误差最小,最小二乘法通过对误差函数进行求导,并令导数为 0 来求解参数。
2. 多元线性回归模型
多元线性回归是线性回归的一种扩展形式,适用于具有多个自变量的情况。模型的目标是找到多个特征与目标变量之间的线性关系。其数学形式为:
[
y = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b
]
其中,( x_1, x_2, \dots, x_n ) 是输入特征,( w_1, w_2, \dots, w_n ) 是对应的权重参数,( b ) 是偏置项。
多元线性回归的核心是利用最小二乘法来最小化预测值与真实值之间的误差平方和,从而确定权重参数。
3. 最小二乘法的推导过程
在多元线性回归中,最小二乘法通过矩阵运算求解。假设我们有 ( m ) 个样本,每个样本有 ( n ) 个特征,可以将输入数据表示为矩阵 ( \mathbf{X} ):
[
\mathbf{X} =
\begin{pmatrix}
x_{11} & x_{12} & \dots & x_{1d} & 1 \
x_{21} & x_{22} & \dots & x_{2d} & 1 \
\vdots & \vdots & \ddots & \vdots & \vdots \
x_{m1} & x_{m2} & \dots & x_{md} & 1
\end{pmatrix}
]
矩阵 ( \mathbf{X} ) 的每一行对应一个样本的输入特征,其中最后一列为常数 1,用于表示偏置项。
目标是通过最小化以下误差平方和来求解权重向量 ( \hat{\mathbf{w}} ):
[
E(\hat{\mathbf{w}}) = (y - \mathbf{X} \hat{\mathbf{w}})^T (y - \mathbf{X} \hat{\mathbf{w}})
]
其中,( y ) 是目标变量向量,( \mathbf{X} \hat{\mathbf{w}} ) 是预测值向量。
对误差函数 ( E(\hat{\mathbf{w}}) ) 关于 ( \hat{\mathbf{w}} ) 求导,并令导数为 0,可以得到以下方程:
[
\frac{\partial E(\hat{\mathbf{w}})}{\partial \hat{\mathbf{w}}} = 2 \mathbf{X}^T (\mathbf{X} \hat{\mathbf{w}} - y) = 0
]
解这个方程,我们可以得到最优的权重向量:
[
\mathbf{X}^T \mathbf{X} \hat{\mathbf{w}} = \mathbf{X}^T y
]
假设 ( \mathbf{X}^T \mathbf{X} ) 是一个可逆矩阵,则可以求解出解析解:
[
\hat{\mathbf{w}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T y
]
该公式是最小二乘法的核心,通过矩阵运算求得模型的最优参数。
4. 对数几率函数及广义线性模型
当我们面对非线性问题时,线性回归的假设可能无法成立。此时,我们可以引入映射函数 ,将非线性问题转化为线性问题。广义线性模型(GLM)正是利用这一思想,将线性回归扩展到非线性问题。
广义线性模型包括以下部分:
- 线性预测器:即 ( \eta = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b ),这部分仍然是特征的线性组合。
- 链接函数 :通过映射函数将预测值从线性空间映射到目标空间。例如,逻辑回归中的**对数几率函数(Logit Function)**是典型的链接函数:
[
\log \left( \frac{\mu}{1 - \mu} \right) = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b
]
其中,( \mu ) 是事件发生的概率,( \eta ) 是线性预测器。对数几率函数可以将线性预测值映射到 ( (0, 1) ) 的概率空间。
对数几率函数的反函数就是Sigmoid 函数,其形式为:
[
\sigma(\eta) = \frac{1}{1 + e^{-\eta}}
]
Sigmoid 函数是广义线性模型中的标准工具之一,用于将线性预测器的结果转化为概率值,特别适合二分类问题。
5. 对数似然与数值稳定性
在处理逻辑回归等问题时,模型的目标是最大化数据的似然函数 ,即观测数据在给定模型参数下的可能性。似然函数通常表示为多个概率的乘积:
[
L(\theta) = P(x_1|\theta) \cdot P(x_2|\theta) \cdot \dots \cdot P(x_n|\theta)
]
然而,当样本量较大时,这种累乘很容易导致数值溢出 问题。为了避免这种情况,我们通常取似然函数的对数,得到对数似然函数:
[
\log L(\theta) = \log P(x_1|\theta) + \log P(x_2|\theta) + \dots + \log P(x_n|\theta)
]
通过对数变换,累乘操作被转换为累加操作,这有效防止了数值溢出,同时简化了计算。
6. 距离度量方法
在分类任务中,距离度量是衡量样本相似性的重要工具,尤其在k-NN(k最近邻)等基于距离的算法中起着至关重要的作用。以下是几种常见的距离度量方法。
6.1 欧式距离(Euclidean Distance)
欧式距离是最常见的距离度量方法,适用于连续数值数据。它表示两点之间的直线距离。在二维平面上,给定两个点 ( \mathbf{x}_1 = (x_1, y_1) ) 和 ( \mathbf{x}2 = (x_2, y_2) ),它们的欧式距离计算公式为:
[
d {\text{Euclidean}}(\mathbf{x}_1, \mathbf{x}_2) = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}
]
在高维空间中,欧式距离的计算公式为:
[
d_{\text{Euclidean}}(\mathbf{x}1, \mathbf{x}2) = \sqrt{\sum{i=1}^{n} (x {1i} - x_{2i})^2}
]
其中 ( n ) 是维度数,( x_{1i} ) 和 ( x_{2i} ) 分别是两个向量在第 ( i ) 维的值。
欧式距离常用于度量样本之间的几何距离,适合连续值变量的距离度量。
6.2 曼哈顿距离(Manhattan Distance)
曼哈顿距离(也称为城市街区距离)是另一种常见的距离度量,它表示两个点之间的绝对坐标差的总和。给定两个点 ( \mathbf{x}_1 = (x_1, y_1) ) 和 ( \mathbf{x}2 = (x_2, y_2) ),其曼哈顿距离计算公式为:
[
d {\text{Manhattan}}(\mathbf{x}_1, \mathbf{x}_2) = |x_1 - x_2| + |y_1 - y_2|
]
在高维空间中,曼哈顿距离的公式为:
[
d_{\text{Manhattan}}(\mathbf{x}1, \mathbf{x}2) = \sum{i=1}^{n} |x {1i} - x_{2i}|
]
曼哈顿距离在某些情况下比欧式距离更合适,特别是当数据是稀疏的,或当不同维度上的尺度不相同时。
6.3 海明距离(Hamming Distance)
海明距离用于度量两个二进制向量或字符串之间不同字符的位置个数。换句话说,它衡量两个向量在对应位置上不同的个数。
给定两个向量 ( \mathbf{x}1 ) 和 ( \mathbf{x}2 ),它们的海明距离计算公式为:
[
d {\text{Hamming}}(\mathbf{x}1, \mathbf{x}2) = \sum{i=1}^{n} I(x{1i} \neq x {2i})
]
其中,( I(x_{1i} \neq x_{2i}) ) 是一个指示函数,当 ( x_{1i} \neq x_{2i} ) 时,它的值为1;否则为0。
海明距离特别适合处理二值数据,比如用于比较两个二进制向量或字符串的相似度。在文本分析、基因序列分析等领域,海明距离常被用来度量不同类别之间的差异。
6.4 切比雪夫距离(Chebyshev Distance)
切比雪夫距离也称为"最大距离",它是两个向量对应维度的最大差值。给定两个向量 ( \mathbf{x}1 ) 和 ( \mathbf{x}2 ),切比雪夫距离定义为:
[
d {\text{Chebyshev}}(\mathbf{x}1, \mathbf{x}2) = \max{i} |x{1i} - x {2i}|
]
切比雪夫距离衡量的是坐标差的最大值,适合在需要考察最大差异的场景下使用。