机器学习4

第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 线性模型的优点
  1. 简单性:线性模型形式简单,易于理解和实现。
  2. 可解释性:由于每个权重 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{-(\omegaT 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 对数几率回归的优势
  1. 概率输出:对数几率回归不仅可以输出类别预测,还可以输出样本属于某类的概率。
  2. 数学性质良好:Sigmoid 函数是凸函数,方便使用梯度下降法等数值优化方法求解。
3.3.5 对数几率回归的局限

对数几率回归假设样本线性可分,对于非线性分类问题,效果可能不好。可以通过引入核方法或者非线性特征变换来处理更复杂的分类问题。

示例:

我们预测一个人是否购买产品,收入和年龄作为输入特征,模型输出的概率是:
[
y = \frac{1}{1 + e^{-(2 \cdot 收入 + 3 \cdot 年龄 + 1)}}
]
对于收入 1000,年龄 30 的人,计算得到购买概率接近 1,表示该人很可能会购买该产品。


3.4 线性判别分析(LDA)的基本思想

LDA是一种常用于分类任务的降维方法,目的是找到一个线性投影,使得投影后不同类别的样本可以被最大限度地区分开。LDA通过最大化类间差异(类别的均值差异)和最小化类内差异(同类样本之间的散布)来完成这一目标。

LDA的核心步骤是:

  1. 计算类内散布矩阵 ( S_W )。
  2. 计算类间散布矩阵 ( S_B )。
  3. 找到一个投影向量 ( \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)正是利用这一思想,将线性回归扩展到非线性问题。

广义线性模型包括以下部分:

  1. 线性预测器:即 ( \eta = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b ),这部分仍然是特征的线性组合。
  2. 链接函数:通过映射函数将预测值从线性空间映射到目标空间。例如,逻辑回归中的**对数几率函数(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}|
]

切比雪夫距离衡量的是坐标差的最大值,适合在需要考察最大差异的场景下使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-09-28 地址空间与进程控制

一、进程地址空间 Pt.2 同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址 1. 页表 内存保护与页表标志位 在操作系统中,页表用于管理内存的访问权限。每个页表项通常包含一组标志位&…

二:Python学习笔记--基础知识(1) 变量,关键字,数据类型,赋值运算符,比较运算符

目录 1. 变量 2. python关键字 3. python数据类型 3.1 数字类型 整型 int 浮点型 float 内置函数-type 3.2 字符串类型 3.3 布尔类型 3.4 空类型 3.5 列表类型 3.6 元组类型 3.7 字典类型 4. python赋值运算 5. python比较运算符 1. 变量 组成:必须是数…

基于SSM的BBS社区论坛系统源码

运行环境:ideamysql5.7jdk8maven 使用技术:ssmmysqlshirolayui 功能模块:用户管理、模板管理、帖子管理、公告管理、权限管理等

yolov9目标检测/分割预测报错AttributeError: ‘list‘ object has no attribute ‘device‘常见汇总

这篇文章主要是对yolov9目标检测和目标分割预测测试时的报错,进行解决方案。 在说明解决方案前,严重投诉、吐槽一些博主发的一些文章,压根没用的解决方法,也不知道他们从哪里抄的,误人子弟、浪费时间。 我在解决前&…

Lampiao靶机入侵实战

07-Lampiao靶机入侵实战 一、扫描采集信息 1、获取IP地址 nmap -sn 192.168.81.0/24获得IP地址为:192.168.81.1282、获取端口信息 由于nmap默认情况下只扫描常用的1000个端口,覆盖面并不全,所以建议全端口扫描 nmap -p 1-65535 192.168.…

DiffusionDet: Diffusion Model for Object Detection—扩散模型检测论文解析

DiffusionDet: Diffusion Model for Object Detection—扩散模型检测论文解析 这是一篇发表在CVPR 2023的一篇论文,因为自己本身的研究方向是目标跟踪,之前看了一点使用扩散模型进行多跟踪的论文,里面提到了DiffusionDet因此学习一下。 论文…

读数据工程之道:设计和构建健壮的数据系统21数据获取

1. 数据获取 1.1. 数据获取是将数据从一个地方移动到另一个地方的过程 1.1.1. 数据获取与系统内部获取是不同的 1.2. 数据获取是数据工程生命周期中将数据从源系统移入存储的一个中间步骤 1.3. 数据集成则是将来自不同来源系统的数据组合到一个新的数据集 1.4. 数据获取的…

数字后端零基础入门系列 | Innovus零基础LAB学习Day6

今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制(包含setup和hold计算公式)。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…

QT获取本机所有IP地址以及修改本机IP(注意区分Windows和Linux环境)

QT 获取本机所有 IP 地址 Chapter1 QT 获取本机所有 IP 地址获取本机所有 IP 地址,包括 IPV6的地址,需要引用 QNetworkInterface1.检索所有网络接口:2.获取接口的详细信息:3.获取接口的 IP 地址:4.用于网络诊断和监控&…

KEYSIGHT E4980A是德E4980AL 精密LCR表

Keysight E4980A 精密 LCR 表为各种元件测量提供了精度、速度和多功能性的最佳组合。 E4980A 在低阻抗和高阻抗范围内提供快速测量速度和出色的性能,是元件和材料的一般研发和制造测试的终极工具。 LAN、USB 和 GPIB PC 连接可提高您的设计和测试效率。 Keysight E4…

大语言模型的Scaling Law【Power Low】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 三、Transformer图文详解【Attention is all you need】 四、大语言模型的Scaling Law【Power Low】 文章目录 NLP-大语言模型学习系列目录一、什么是…

练习LabVIEW第十九题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第十九题: 创建一个程序把另外一个VI的前面板显示在Picture控件中 开始编写: 在前面板放置一个二…

iOS AVAudioSession 详解【音乐播放器的配置】

前言 在 iOS 音频开发中,AVAudioSession 是至关重要的工具,它控制着应用的音频行为,包括播放、录音、后台支持和音频中断处理等。对于音乐播放器等音频需求强烈的应用,设计一个合理的 AVAudioSession 管理体系不仅能保证音频播放…

一文详解高光谱数据python处理包spectral(SPy)

一、基本操作 读取高光谱数据文件 import spectral # 读取ENVI格式的高光谱图像 # image的后缀可以是.raw、.spe、.lan等 # 代码里img对象,类似于rasterio库的dataset对象,可以用它来读取高光谱数据 img spectral.envi.read_envi(filemy_data.hdr, im…

【LeetCode】修炼之路-0008- String to Integer (atoi)【python】

题目 基本思路 其实题目已经说了如何实现了,我们按照给定的思路实现即可 1. 问题四大要求详解 1.1 处理空格 (Whitespace) 忽略字符串开头的任何空格字符 (" ")例如: " 123" 应该被处理为 “123”Python实现: 可以使用 strip() 方法或循环处…

Python浪漫之星星与文字构造的错位图

效果图: 完整代码: import tkinter as tk import random import math from tkinter.constants import *width 888 height 500 heartx width / 2 hearty height / 2 side 11class Star:def __init__(self, canvas, x, y, size):self.canvas canvas…

精准医疗沟通新体验:开源语音识别(ASR)如何提升医生与患者对话

需求背景:一家远程医疗公司在为偏远地区提供在线医疗服务的过程中,发现传统手动记录方式效率太低,无法满足需求,影响就诊的效率。 解决方案:使用思通数科的ASR平台,公司可以实现多话者对话转录和自动病历生…

MySql中的事务、MySql事务详解、MySql隔离级别

文章目录 一、什么是事务?二、事务四大特性ACID2.1、原子性(Atomicity)2.2、一致性(Consistency)2.3、隔离性(Isolation)2.4、持久性(Durability) 三、事务操作/事务的用…

MySQL-27.多表查询-案例

一.数据准备 -- 分类表 create table category (id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 分类名称,type tinyint unsigned not null comment 类型 1 菜品分类 2 套餐分类,sort …

今日所学1024和1026

1 简便方法: 在文件夹里找到dll的文件路径,然后在系统变量里添加对应路径, 就不会报错了。 2关于报Qt插件的错,解决办法如下 1026Github的2FA 超级详细的github双重验证密码忘记或者获取不了了怎么办&github recovery code忘记怎么办…