76、分类器训练与组合技术:原理、问题及解决方案

分类器训练与组合技术:原理、问题及解决方案

在实际应用中,分类器的训练和组合是解决各类分类问题的关键技术。本文将深入探讨分类器训练的相关方法,包括 PSL 框架和 BDC 方法,以及如何通过线性组合分类器来优化性能,同时解决过拟合等问题。

1. BDC 引导方法与 PSL 框架下的训练

BDC(Bootstrapping for Positive Datasets in Cascades of Boosted Ensembles)引导方法用于级联层的各个阶段训练。在这个方法中,有以下几个关键元素:
- (C_n):第 (n) 个层间子分类器
- (S_i):第 (i) 个层内阶段子分类器
- (PB_i):用于 (S_i) 的正基集
- (PR):正储备集
- (f_{min}):最小误检率
- (d_{min}):设定为 100% 的最小所需命中率
- (WK_{max}):弱分类器的最大数量

BDC 引导方法的具体步骤如下:
1. 从 (PR) 中随机选择正样本创建 (PB_i)。
2. 针对 (PB_i) 训练 (C_nS_i),直到达到 (f_{min}) 和 (d_{min}) 或 (WK_{max})。
3. 使用 (C_nS_i) 验证 (PR),并从其中移除正确分类的样本。
4. 如果 (PR) 中的所有样本都被正确预测,则开始新的层 (C_{n + 1});否则,开始新的阶段 (S_{i + 1}),并重复步骤 1。

以下是该过程的 mermaid 流程图:

graph TD;
    A[随机选择正样本创建 PB_i] --> B[训练 C_nS_i 直到条件满足];
    B --> C[验证 PR 并移除正确分类样本];
    C --> D{PR 样本都正确预测?};
    D -- 是 --> E[开始新层 C_n+1];
    D -- 否 --> F[开始新阶段 S_i+1 并重复步骤 1];

PSL(Positive Sample Bootstrapping in Cascades of Boosted Ensembles)框架具有模块化的特点,结合 BDC 的思想,为实现有效的增量学习提供了可能。增量学习可以通过构建额外的层内阶段来实现,这些阶段在每层中被错误预测的新正样本上进行训练。新的阶段可以附加到现有的阶段级联中,或者设计一种策略来用新的阶段替换不太准确的现有阶段。

增量训练将在错误预测的正样本批次达到每个基集的最小所需数量时启动。负集的组成较为复杂,它必须包含与层中先前阶段学习预测的相似模式,否则该层的误检率会增加。建议负集由直到该级联层被错误分类的图像组成,并且增量学习使用的负数据集应比初始离线训练阶段的数据集大得多。

2. PSL 框架与过拟合问题

BDC 框架在大规模正数据集上训练分类器时具有一定优势,能够在相对较短的训练时间内保持 100% 的层命中率。然而,该框架也存在一些问题,例如容易提高误检率,不太适合像人脸检测这样的稀有事件操作领域。

进一步分析发现,BDC 训练方法存在过拟合问题,尤其是在层的最后阶段。这是因为 BDC 方法将最困难的正样本训练推迟到最后阶段,这些阶段通常在包含少量样本的正数据集上进行训练,而这些样本相对于整个正数据集来说,大多包含高度不具代表性的模式。

为了验证最后阶段对分类器准确性的影响,通过接收者操作特征曲线(ROC)比较了包含和不包含最后阶段的分类器的泛化模式。结果表明,截断最后阶段的分类器在 ROC 图中较低误检率部分的泛化能力有所提高。

以下是不同样本数量下分类器的 ROC 图对比示例表格:
| 样本数量 | 分类器类型 | 泛化能力表现 |
| ---- | ---- | ---- |
| 5000 | PSL_5 | - |
| 5000 | PSL_5 排除最后阶段 | 有所提高 |
| 5000 | BDC_5 | - |
| 5000 | BDC_5 排除最后阶段 | 有所提高 |
| 10000 | PSL_10 | - |
| 10000 | PSL_10 排除最后阶段 | 有所提高 |
| 10000 | BDC_10 | - |
| 10000 | BDC_10 排除最后阶段 | 有所提高 |

3. 抗过拟合改进措施

为了解决 BDC 结构中存在的过拟合问题,提出了一种解决方案,即在每层的最后阶段数据集中加入额外的正样本。具体做法是,将先前阶段已经正确预测的正样本添加到最后阶段的数据集中,以抵消由于高度集中的不具代表性正样本带来的过拟合问题。

然而,加入冗余正样本也会带来一些负面影响。学习过程会变得更加复杂,因为层目标向所需的 100% 命中率的收敛速度会降低,并且可能会引入一定程度的弱分类器冗余。为了促进层的快速收敛,在每次提升轮次开始时,会给相关正样本分配更大的权重。此外,为了平衡层内阶段数量过多的问题,取消了保持固定阶段大小的要求,而是随着误分类正样本数量相对于基集大小的减少,增加弱分类器的最大数量。同时,将基集从之前实验的 500 个正样本增加到 2000 个正样本,以避免在小基集上生成过多弱分类器导致的过拟合问题。

4. 线性组合分类器:通过秩边际最大化

在实际应用中,组合分类器是提高整体性能的有效方法。线性组合分类器是一种常见的技术,它通过对已训练的二分类器进行加权线性组合,其中权重的确定旨在最大化所得排序系统的最小秩边际。

在许多实际应用中,准确确定分类成本和先验等关键参数较为困难,此时排序比分类更有用。秩分类器可以看作是比分类器更基本的系统,它根据分类器为每个样本分配的值对样本进行排序。

4.1 边际和排序的概念

考虑一个定义在训练集 (S = (X, Y)) 上的两类问题,其中 (X = {x_i}) 包含 (N) 个样本,(Y = {y_i}) 是对应的标签,(y_i \in {-1, +1}),(i = 1, \cdots, N)。分类器 (f) 可以描述为从 (X) 到区间 ([-1, +1]) 的映射,样本 (x \in X) 根据 (sgn(f(x))) 被分配到其中一个类别。

样本 (x_i) 的样本边际(或硬边际)为 (y_if(x_i))。如果样本边际为负,则分类器 (f) 对 (x_i) 的预测错误。一般来说,分类器 (f) 的边际(或最小边际)可以定义为训练集上的最小边际值:(\mu(f) = \min_i(y_if(x_i)))。

在某些情况下,当分类成本和先验参数不精确或随时间变化时,使用 AUC(Area under the ROC curve)作为评估指标更为合适。此时,传统的边际概念不再适用,需要引入秩边际的概念,它衡量了分类器的排序置信度。

4.2 线性组合权重的计算方法

本文提出的方法是构建已训练二分类器的线性组合,通过确定权重来最大化所得系统的秩边际,从而优化其在 AUC 方面的性能。具体步骤如下:
1. 定义目标函数:以最大化秩边际为目标,建立相应的数学模型。
2. 求解权重:使用合适的优化算法求解目标函数,得到使秩边际最大的权重。

以下是一个简单的示例代码(伪代码),展示如何实现这个过程:

# 假设已经有了已训练的二分类器的输出和标签
classifier_outputs = [...]  # 分类器输出
labels = [...]  # 样本标签

# 定义目标函数(这里只是示例,实际需要根据具体情况实现)
def objective_function(weights):
    # 计算秩边际
    rank_margin = ...
    return -rank_margin  # 最大化问题转化为最小化负的秩边际

# 使用优化算法求解权重
from scipy.optimize import minimize
initial_weights = [1.0] * len(classifier_outputs)  # 初始权重
result = minimize(objective_function, initial_weights)
optimal_weights = result.x

# 得到线性组合的分类器输出
combined_output = sum([w * o for w, o in zip(optimal_weights, classifier_outputs)])
5. 实验结果与结论

在实验中,使用修改后的 BDC 结构训练人脸检测分类器,并与原始的朴素 BDC 结构训练的分类器进行比较。实验使用了相同的数据集和参数,共收集了 15000 张面部图像,分为 5000、10000 和 15000 样本的三个主要数据集组。

实验结果表明:
- 修改后的 BDC 分类器的训练时间比朴素 BDC 长 15% - 20%,但仍明显低于 PSL 和 Viola - Jones 方法。
- 修改后的 BDC 分类器的大小比朴素实现增加了 15% - 20% 的额外弱分类器,可能会导致更大的检测运行时成本。
- 从 ROC 图可以看出,修改后的 BDC 分类器在 CMU MIT 测试数据集上的泛化能力优于其他分类器,这表明解决过拟合问题的新策略是有效的。

通过线性组合分类器的方法,在公开可用的数据集上进行的实验也显示了该方法的有效性。通过最大化秩边际,能够优化分类器在 AUC 方面的性能,为实际应用提供了一种有效的解决方案。

未来的研究将聚焦于扩展 PSL 框架以实现更高效的增量学习,以及进一步优化线性组合分类器的方法,提高其在不同应用场景下的性能。

综上所述,分类器的训练和组合是一个复杂而重要的研究领域,通过不断探索和改进方法,可以解决过拟合等问题,提高分类器的性能和泛化能力,为实际应用提供更可靠的支持。

分类器训练与组合技术:原理、问题及解决方案

6. 实验设置与详细过程

为了验证上述方法的有效性,进行了一系列实验。以下是实验的详细设置和过程:

6.1 数据集选择

使用了来自多个公开可用数据集的 15000 张面部图像,这些数据集包括 FERET、Yale Face Database B 以及 Essex University 视觉组的人脸数据库。将这些图像分为三个主要的数据集组,分别包含 5000、10000 和 15000 个样本。

测试数据集采用了 CMU MIT 图像数据集,其中包含 130 张图像,共有 506 个正脸图像。

6.2 分类器训练参数

对于每个数据集,训练了一个具有灵活阶段大小(10 个弱分类器)的分类器。所有分类器的训练都使用了 2000 个正样本的基集和从 2500 张图像中提取的 2000 个负样本,这些负样本会生成数百万个负子窗口。

同时,还训练了一组使用朴素 BDC 方法、基集为 2000 个正样本的分类器,以单独评估增加基集大小对解决过拟合问题的影响。

训练过程中,要求分类器在最多 100 层内达到 0% 的训练误差,每层最多使用 50 个阶段。

以下是实验参数的表格总结:
| 实验参数 | 详情 |
| ---- | ---- |
| 训练数据集 | 15000 张面部图像,分为 5000、10000、15000 样本组 |
| 测试数据集 | CMU MIT 图像数据集(130 张图像,506 个正脸图像) |
| 基集正样本数量 | 2000 |
| 基集负样本数量 | 2000(从 2500 张图像提取) |
| 弱分类器数量/阶段 | 10 |
| 最大层数 | 100 |
| 最大阶段数/层 | 50 |

6.3 线性组合分类器实验

在进行线性组合分类器的实验时,使用了公开可用的数据集。具体步骤如下:
1. 准备已训练的二分类器的输出和对应的样本标签。
2. 定义目标函数,该函数以最大化秩边际为目标。在实际实现中,需要根据具体情况编写计算秩边际的代码。
3. 使用优化算法(如 scipy.optimize 中的 minimize 函数)求解目标函数,得到使秩边际最大的权重。
4. 根据得到的最优权重,计算线性组合的分类器输出。

以下是这个过程的 mermaid 流程图:

graph TD;
    A[准备分类器输出和标签] --> B[定义目标函数];
    B --> C[使用优化算法求解权重];
    C --> D[计算线性组合输出];
7. 实验结果分析

通过实验,得到了以下详细的结果和分析:

7.1 BDC 分类器训练时间和大小

修改后的 BDC 分类器的训练时间比朴素 BDC 长 15% - 20%,但与 PSL 和 Viola - Jones 方法相比,仍然明显更短。这表明虽然为了解决过拟合问题增加了一定的训练成本,但整体上仍然具有优势。

同时,修改后的 BDC 分类器的大小比朴素实现增加了 15% - 20% 的额外弱分类器。这可能会导致更大的检测运行时成本,但从泛化能力的提升来看,这种增加是值得的。

以下是不同分类器训练时间和大小的对比表格:
| 分类器类型 | 训练时间对比 | 分类器大小对比 |
| ---- | ---- | ---- |
| 修改后的 BDC | 比朴素 BDC 长 15% - 20% | 比朴素 BDC 大 15% - 20% |
| 朴素 BDC | - | - |
| PSL | 比修改后的 BDC 长 | - |
| Viola - Jones | 比修改后的 BDC 长 | - |

7.2 分类器泛化能力

通过 ROC 图可以清晰地看到,修改后的 BDC 分类器在 CMU MIT 测试数据集上的泛化能力优于其他分类器。具体表现为,在 ROC 图中较低误检率部分,修改后的 BDC 分类器的曲线表现更好,说明其能够更准确地进行分类,减少误检。

同时,实验结果还表明,朴素 BDC 分类器在使用 2000 个正样本基集时表现最差,这排除了修改后的 BDC 分类器准确性提高仅仅是因为基集大小增加的可能性,证明了解决过拟合问题是多种策略综合作用的结果。

7.3 线性组合分类器性能

在公开数据集上进行的线性组合分类器实验显示,通过最大化秩边际的方法能够有效优化分类器在 AUC 方面的性能。这表明该方法在实际应用中具有很大的潜力,特别是在难以准确确定分类成本和先验参数的情况下。

8. 总结与展望

本文深入探讨了分类器训练和组合的相关技术,包括 BDC 引导方法、PSL 框架下的训练、解决过拟合问题的策略以及通过秩边际最大化进行线性组合分类器的方法。通过实验验证了这些方法的有效性,特别是修改后的 BDC 方法在解决过拟合问题和提高泛化能力方面取得了良好的效果,线性组合分类器方法在优化 AUC 性能方面也表现出色。

未来的研究可以从以下几个方面展开:
- 进一步扩展 PSL 框架,实现更高效的增量学习。例如,可以研究如何更好地选择新的正样本进行训练,以及如何更合理地将新的阶段融入现有的级联结构中。
- 优化线性组合分类器的方法,提高其在不同应用场景下的性能。可以探索不同的目标函数和优化算法,以找到更适合特定数据集和任务的权重计算方法。
- 研究如何在保证分类器性能的前提下,进一步降低训练时间和分类器大小,以满足实际应用中对效率的要求。

通过不断的研究和改进,分类器训练和组合技术将能够更好地应用于各种实际场景,为解决复杂的分类问题提供更有效的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值