机器学习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.rhkb.cn/news/458898.html

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

相关文章

【WRF数据准备】基于GEE下载静态地理数据-叶面积指数LAI及绿色植被率Fpar

【WRF数据准备】基于GEE下载静态地理数据 准备:WRF所需静态地理数据(Static geographical data)数据范围说明基于GEE下载叶面积指数及绿色植被率GEE数据集介绍数据下载:LAI(叶面积指数)和Fpar(绿色植被率)数据处理:基于Python处理为单波段LAI数据参考GEE的介绍可参见另…

VantUI

官网:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. Vant组件库: 基础组件 按钮、图标、布局、提示信息等 表单组件 日历、复选框、时间选择、输入框、评分等 反馈组件 弹出框、加载、下拉菜单、消息提示、下拉刷新、滚动…

面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

测试员可以先在大厂镀金,以后去中小厂毫无压力,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大厂出来…

C#入坑JAVA MyBatis入门 CURD 批量 联表分页查询

本文,分享 MyBatis 各种常用操作,不限于链表查询、分页查询等等。 1. 分页查询 在 下文的 的「3.4 selectPage」小节,我们使用 MyBatis Plus 实现了分页查询。除了这种方式,我们也可以使用 XML 实现分页查询。 这里&#xff0c…

1-petalinux2018.3 摸索记录 -petalinux-config

一、petalinux-config的具体配置-ZYNQMP Configuration 1、Linux Compoment Selection Linux Compoment Selection,Linux组件选择. First Stage Bootloader和Auto update ps_init勾选会自动生成fsbl.elf,自动更新ps_init。 PMU Firmware平台管理单元固…

熵与信息论

经典信息论的核心概念是香农熵。假设我们得到了一个变量X的值,X的香农熵量化了我们在获悉 X的值时所能得到的平均信息量;另一种观点是将X的看作在我们获悉的值前对其不确定程度的度量。这两种观点是互补的;我们既可以将看作在我们获悉X的值前…

Ubuntu 22.04系统启动时自动运行ROS2节点

在 Ubuntu 启动时自动运行 ROS2 节点的方法 环境:Ubuntu 系统,ROS2 Humble,使用系统自带的 启动应用程序 目标:在系统启动时自动运行指定的 ROS2 节点 效果展示 系统启动后,自动运行小乌龟节点和键盘控制节点。 实践…

龙蟠科技业绩压力显著:资产负债率持续攀升,产能利用率也不乐观

《港湾商业观察》施子夫 黄懿 去年十月至今两度递表后,10月17日,江苏龙蟠科技股份有限公司(以下简称,龙蟠科技;603906.SH,02465.HK)通过港交所主板上市聆讯。 很快,龙蟠科技发布公告称,公司全…

OceanBase 安全体系解析之身份鉴别

本文作者:金长龙爱可生测试工程师,负责 DMP 产品的测试工作。 本文以MySQL为参照,详细阐述了OceanBase 在MySQL模式下的安全体系中,身份鉴别的能力,涵盖了身份鉴别机制、用户名的构成规则、密码的复杂度,以…

在Java中的动态绑定和静态绑定

动态绑定和静态绑定是两种方法调用的绑定机制静态绑定 静态绑定也称为早期绑定,是在编译时确定调用的方法。动态绑定 动态绑定也称为晚期绑定,是在运行时确定调用的方法。静态绑定用于编译时确定的方法调用,动态绑定是Java实现运行时多态的…

CISE|暴雨受邀出席第二十六届中国国际软件博览会

10月24日至26日,备受瞩目的第二十六届中国国际软件博览会(简称CISE)在国家会展中心(天津)圆满举办。CISE不仅汇聚了来自全国各地的顶尖软件企业和机构,还吸引了众多专家学者和行业精英共襄盛举,…

Cesium基础-(Entity)-(Box)

** 里边包含Vue、React框架代码详细步骤、以及代码详细解释 ** 3、Box 盒子 以下是 BoxGeometry 类的属性、方法和静态方法,以表格形式展示: 属性 属性名类型默认值描述minimumCartesian3盒子的最小 x, y, 和 z 坐标。maximumCartesian3盒子的最大 x, y, 和 z 坐标。vertex…

【PHP】PHP使用Modbus-Rut协议与RS485串口通信,向设备发送和接收数据

目录 一、前言 二、开发前说明 三、效果图 四、安装PHP扩展 五、安装phpModbus类库 六、通信逻辑 七、完整实例 一、前言 使用PHP语言与硬件设备通信交互,并向COM串口发送和接收数据。 前面写了三篇关于PHP与RS235和USB端口通信的文章,可以作为参…

现代数字信号处理I--最佳线性无偏估计 BLUE 学习笔记

目录 1. 最佳线性无偏估计的由来 2. 简单线性模型下一维参数的BLUE 3. 一般线性模型下一维参数的BLUE 4. 一般线性模型下多维参数的BLUE 4.1 以一维情况说明Rao论文中的结论 4.2 矢量参数是MVUE的本质是矢量参数中的每个一维参数都是MVUE 4.3 一般线性模型多维参数BLUE的…

视频剪辑哪个软件好用?推荐四款热门工具!!

在这个Vlog和短视频当道的互联网时代,掌握一款好用的视频剪辑软件就像拥有了打开创作世界的魔法钥匙。今天我们来聊聊视频剪辑软件,帮你成为剪辑达人哦!接下来,给大家详细介绍四款常用且各具特色的视频剪辑软件,助你轻…

算法:利用前序序列和中序序列构造二叉树

题目 链接:leetcode链接 思路分析 前序遍历的顺序是:根 左子树 右子树 中序遍历的顺序是: 左子树 根 右子树 所以,我们可以通过前序遍历获得二叉树的根 可以通过中序遍历去分割二叉树,将二叉树分割成 左子树 根…

偷懒总结篇|贪心算法|动态规划|单调栈|图论

由于这周来不及了,先过一遍后面的思路,具体实现等下周再开始详细写。 贪心算法 这个图非常好 122.买卖股票的最佳时机 II(妙,拆分利润) 把利润分解为每天为单位的维度,需要收集每天的正利润就可以,收集正利润的区间…

HarmonyOS ArkTS与C++数据类型转换

1. HarmonyOS ArkTS与C数据类型转换 本文介绍了C与TS各自数据类型与互相之间的数据类型转换,在需要使用C模块时可以快速上手对各种数据类型进行转换。 1.1. 概述 HarmonyOS的主力开发语言是ArkTS,也提供了C语言的支持,对于一些能力&#xff…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象(Object-Oriented Programming,OOP)是一种编程范式,它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

D51【python 接口自动化学习】- python基础之模块与标准库

day51 模块的导入 学习日期:20241027 学习目标:模块与标准库 -- 66 模块的导入:如何使用其他人编写好的代码功能? 学习笔记 模块的作用 导入模块的方法 # 导入模块 # 方式一 import os # 获取当前的位置 print(os.getcwd())# …