ITDS-分类

Classification,KNN

分类

将输入值与离散的输出值进行映射

$$
y = f(x) = argmax_c p(y=c|x)
$$

假设数据属于 $C$ 个类别,$x$ 是输入值,$y$ 是输出值,在所有可能的类别中,选择使条件概率 $p(y=c|x)$ 最大的类别作为预测结果。

K 邻近

K-Nearest Neighbors 是一种监督式学习算法,可用于 分类 和 回归。它的核心思想是 一个样本所属的类别,通常和它周围(最邻近)的样本类别相似。

$$
p(Y = c | x) = \frac{1}{K} \sum_{i \in N_K} I(y_i = c)
$$

  • $I(y_i = c)$ 是指示函数,当 $y_i = c$ 时取 1,否则取 0。
  • $N_K$ 是距离 $x$ 最近的 $K$ 个样本的集合。
  • $p(Y = c | x)$ 是在给定输入 $x$ 的情况下,样本属于类别 $K$ 的概率。
  • $K$ 是一个超参数,表示选择多少个邻近样本进行投票。

简而言之,它对 K 个最近邻居进行遍历,然后得到样本属于 c 类别的概率。

但其实它需要用欧几里得距离(也就是直线距离)计算所有点的距离,然后选取 K 个最近的点。

计算的时候可能出现平局的情况,也就是有两个或多个概率相同,这时候可以适当加减 K 以便得到一个更好的结果。

评估优化

回归模型是基于参数模型的方法。而 KNN 是非参数模型,它并非没有参数,而是其参数数量不固定,或不受预先设定的参数形式限制。

当数据量较小且数据分布较为规则时,参数模型可能表现较好。而当数据量较大、数据分布复杂且难以用简单的参数形式描述时,非参数模型可能更具优势。

最简单实现使用直线距离,设有 p 个特征,n 个样本,则时间与空间复杂度都是 $O(n \cdot p)$。

KD 树

我们可以使用 K-Dimensional Tree(K-D 树)来加速 KNN 的计算。K-D 树是一种空间划分数据结构,可以在 $O(n \log n)$ 的时间内构建,并在 $O(\log n)$ 的时间内查询最近邻,适合低维数据。

  • 从第 1 维特征开始,把数据按中位数分成两半
  • 形成树的根节点,左子树是小于中位数的,右子树是大于中位数的
  • 递归处理左右子树,但换用下一维特征(循环使用维度)
  • 最终形成一颗平衡的二叉树

Ball Tree

我们还可以使用 Ball Tree 来加速 KNN 的计算。其是一种基于球体划分的树形数据结构,适合高维数据。

  • 每个节点是一个球,用质心和半径来表示一个数据子集的边界
  • 递归划分数据,使每个球体内部的数据尽量相似
  • 构成树形结构,每个叶子节点包含少量数据点

选择 K

$$
Err = \frac{1}{n} \sum_{i=1}^n I(y_i \neq \hat{y}_i)
$$

错误率越低,K 越好,我们可以绘制错误率与 1/K 的关系图,选择错误率最低的 K。

标准化

我们一定要对数据进行标准化处理,因为 KNN 是基于距离的算法,特征值的大小会影响距离计算。未标准化时距离计算受大尺度特征主导。

其他

最优贝叶斯分类器是理论上错误率最低的分类器,它知道所有类别的先验概率和在每类下,数据出现的条件概率分布。但是它基本上不能实现,因为我们无法知道所有的先验概率和条件概率分布(无限数据和上帝视角)。

我们还有 Weighted KNN,离目标点越近的邻居,对结果的影响越大。标准 KNN 所有邻居投票权重相同,而 Weighted KNN 则是根据距离的倒数来加权投票。比标准 KNN 效果更好(特别是在类边界模糊时)。

Logistic Regression 逻辑回归实际上是一个用于二分类的分类算法,不是回归算法。使用一个 Sigmoid 函数,将线性回归的输出映射为 0 到 1 之间的概率值,然后根据概率进行分类。

它使用一个线性函数 $h(x) = w^T x + b$,然后通过 Sigmoid 函数将其映射到 0 到 1 之间的概率值:

$$
h(x) = \frac{1}{1 + e^{-h(x)}}
$$
如果 $h(x) \geq 0.5$,则预测为正类;否则预测为负类。

其中 $w$ 是权重向量,$b$ 是偏置项。我们可以使用梯度下降法来优化 $w$ 和 $b$,使得损失函数最小化。

Author

Aloento

Posted on

2025-05-05

Updated on

2025-05-06

Licensed under

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×