线性分类(LinearClassification)
线性可分性(Linear Separability)
线性可分性是指在一个特征空间中,能够用一个 超平面 将不同类别的数据点完全分开。换句话说,如果存在一个 线性函数(通常是一个线性方程或线性组合),能够将两类数据点划分为两侧,则这些数据被称为线性可分
-
超平面:
- 在二维空间中,超平面是一个线段
- 在三维空间中,它是一个平面
- 在更高维空间中,超平面是一个维度减一的空间
超平面可以用线性方程表示,如 w⋅x+b=0,其中 w 是权重向量,x 是特征向量,b 是偏置项
-
线性可分:
如果存在这样的超平面,使得所有属于类A的数据点位于超平面的一侧,而所有属于类B的数据点位于另一侧,则称这两类数据是线性可分的
-
线性不可分:
如果无法用一个超平面将两类数据完全分开,那么这些数据被称为线性不可分。此时,可能需要使用更复杂的模型,例如非线性分类器(如支持向量机的核方法、神经网络等)
二分类(Binary Classification)
目的是将输入数据分为 两个类别(一般是0和1)
它通常用于解决具有 两个明确标签的问题,例如
- 是/否
- 正/负
- 成功/失败
线性分类器(Linear Classifier)
是一种用于分类任务的 机器学习模型,它通过线性组合特征来进行决策。线性分类器的核心思想是通过一个 超平面 将不同类别的数据点划分开
支持向量机(Support Vector Machine)
支持向量机的意思就是让支持向量和超平面之间的间隔尽可能的大
支持向量 (Support Vector)
支持向量指的是在训练数据集中,距离决策边界最近 的样本点。这些样本点对模型的决策边界有 直接影响
最大间隔解(Maximum Margin Solution)
这里有多种划分解,但是那种更好呢?如何评估。就是用 间隔 来衡量的
最大间隔的计算
最大间隔分类器(Maximum Margin Classifier)
在支持向量机中,最大间隔分类器的目标是找到一个超平面,该超平面将不同类别的数据点分开,并且使得两类之间的间隔(margin)最大化。间隔是指到最近的数据点(支持向量)到超平面的距离
什么是稳定性(Stability)与扰动(Perturbations)
-
扰动:指的是输入数据的微小变化或噪声
-
稳定性:指模型对输入数据变化的敏感程度。一个稳定的模型在面对输入的小变化时,输出的变化应该是小的
最大间隔的稳定性
最大间隔解之所以被认为对输入扰动最稳定,原因如下:
-
较大的间隔:最大间隔分类器在分类时有较大的安全区域(即间隔),这意味着即使 某些数据点受到小的扰动,它们仍然可能落在正确的分类区域内 。因此,模型的决策边界不会因为输入的轻微变化而发生显著改变
-
支持向量的重要性:只有 距离决策边界最近的支持向量对模型的决策有直接影响 ,而其它远离边界的数据点不太会影响分类决策。因此,模型对输入扰动的健壮性提高
优化问题
让 ||w|| 最小即可
考虑到一些异常值可能会影响超平面的选择,所以提供了一个超参数C
以下是更详细的解释
梯度下降(Gradient Descent)
批量梯度下降
在批量梯度下降中,我们计算 整个数据集的平均梯度,然后 一次性更新 所有参数。这能确保每次参数更新时都考虑了整个数据集的信息,但缺点是 计算量很大,尤其当数据集非常庞大时
这里就是用梯度下降的去解决支持向量机中的优化问题(就是那个最小化的问题)
计算次梯度
当我们处理不可微的函数(如绝对值函数、分段线性函数等)时,传统的梯度下降算法无法使用,因为这些函数在某些点可能没有定义明确的梯度。在这种情况下,次梯度为我们提供了一个替代方案
损失函数的比较
随机梯度下降(Stochastic Gradient Descent)
SGD的关键点是:每次更新参数时,仅使用 一个样本的数据来计算梯度并更新参数
SGD步骤
SGD优缺点
-
优点:
- 计算效率高:每次只用一个样本,更新速度快,适合大规模数据
- 能跳出局部最优:由于每次使用一个样本,更新方向会有更多的波动,这种随机性有助于避免陷入局部最优,找到全局最优解
-
缺点:
- 噪声较大:每次更新只考虑一个样本,更新过程 波动较大,可能导致收敛速度较慢,甚至在最优解附近 震荡
- 不稳定:由于梯度计算不完全基于全体数据,SGD可能会在最优解附近不稳定
改进SGD
为了提高SGD的收敛性和稳定性:
- 学习率衰减:随着训练进行,逐渐降低学习率,以便更精细地调整参数
- 动量:使用过去梯度的加权平均值,来平滑参数更新过程,减少震荡
小批量随机梯度下降(Mini-Batch Stochastic Gradient Descent)
其实就是BGD和SGD的综合版本
小批量随机梯度下降在每次更新参数时使用一个 小的样本集合(即小批量),而不是单个样本或整个数据集。小批量的大小通常是一个超参数,常见的选择包括32、64或128等
步骤
优缺点
- 计算效率:比批量梯度下降快,因为每次只计算小批量的梯度
- 稳定性:比SGD更稳定,因为小批量平均了多个样本的梯度,减少了噪声
- 并行处理:小批量使得计算可以更容易并行化,提高训练速度
多类别分类(Multi-class Classification)
转换为二分类(Convert to Binary Classification)
将多类别分类问题转换为二分类问题。二分类任务的目标是将数据点分为两个类别
-
一对多(One-vs-Rest, OvR):
对于 每个 类别,训练一个二分类模型,区分该类别和所有其他类别
例如,如果有三个类别 A、B 和 C,模型将分别训练 A vs. (B+C)、B vs. (A+C) 和 C vs. (A+B)
-
一对一(One-vs-One, OvO):
对于 每对 类别训练一个二分类模型
例如,对于三个类别 A、B 和 C,将训练 A vs. B、A vs. C 和 B vs. C 的模型
从二分类扩展(Extend from Binary Classification)
从已有的二分类模型或方法扩展到处理多类别分类问题
在二分类模型的基础上,通过采用上述的一对多或一对一策略来实现多类别分类
例如 KNN算法
KNN
- 计算距离
KNN 的第一步是计算待分类对象(测试对象)与训练集中的每个对象之间的距离。常用的距离度量包括:
-
欧几里得距离(Euclidean Distance):最常用的距离计算方式,适用于连续数据
-
曼哈顿距离(Manhattan Distance):也称为城市街区距离,适用于高维空间
-
找到邻居
计算完距离后,KNN 会根据距离的大小选择最近的 K 个训练对象作为邻居。K 的选择非常重要:- 小的 K 值:可能会导致对噪声过于敏感,容易出现过拟合
- 大的 K 值:可能会导致信息的平滑处理,降低模型的灵活性,容易出现欠拟合
-
投票标签
一旦找到了 K 个邻居,KNN 会根据这 K 个邻居的标签进行投票,选择出现频率最高的标签作为测试对象的预测类别。如果是回归问题,则取邻居的平均值作为预测值
-
总结
KNN 算法简单易于理解,且无需模型训练,但它的计算量较大,尤其是在处理大型数据集时。KNN 对数据的分布和邻居的选择非常敏感,因此在实际应用中,通常需要对数据进行适当的标准化或归一化处理
层次分类(Hierarchical Classification)
在具有层次结构的类别体系中进行分类,类别之间的关系呈现出层级结构
使用 Label tree,通过将输出空间(即所有可能的类别标签)划分成一个树状结构来实现分类
-
叶子节点只包含单一类别:每个叶子节点代表一个明确的类别,确保分类结果的清晰性
-
父节点划分为多个聚类:每个父节点根据其子类被分成多个子节点,每个子节点对应一个特定的类别。
-
在每个节点上训练简单分类器:每个节点训练一个简单的分类器来区分不同的子类,从而提高分类的准确性和效率