以 knn 为学习者装袋

Bagging with knn as learners

我很难理解为什么 matlab 函数 fitcenseble 不允许使用带套袋的 knn 学习器创建集成模型,而只能使用随机子空间方法,这更类似于随机森林方法。

我想使用 bagging 来比较使用不同类型学习器(例如 knn 和 trees)的 bagging 方法。

希望大家帮帮我,先谢谢了,

玛尔塔

Bagging 很少与 k-nn classifier 结合使用,因为决策面通常过于稳定并且 bootstrap 样本中数据点的任何倍数都不会改变 'weight' 就像许多其他模型一样。释义 (1):

任何单个数据点在 bootstrap 样本中至少出现一次的概率约为 0.632。考虑一个简单的 2-class 1-NN classifier 装袋 N bootstrap 个样本。仅当学习集中最近的邻居不在 N bootstrap 个样本的至少一半中时,测试数据点才能更改 classification。发生这种情况的概率与以 0.632 的概率掷 N 次正面朝上且少于 0.5N 次正面朝上的加权硬币的概率相同。随着 N 变大,这个概率变得越来越小。类似的逻辑适用于 multiclass 问题和 k-NN.

如果您想创建自己的装袋模型,可以使用 bootstrp 来完成。 bootstrp() 可以在没有函数的情况下调用:

[~, BootIndices] = bootstrap(N, [], Data);

BootSample = Data(BootIndices);

(1) Breiman, Leo. "Bagging predictors." Machine learning 24.2 (1996): 123-140. Chapter 6.4.