主要内容

随机子空间分类

这个例子展示了如何使用随机子空间集合来提高分类的准确性。同时还展示了如何使用交叉验证来确定弱学习器模板和集合的良好参数。

加载数据

加载电离层数据。该数据对34个预测因子有351个二进制响应。

负载电离层;[N、D] =大小(X)
N = 351
D = 34
resp =独特(Y)
resp =2 x1细胞{b} {' g '}

选择最近邻居的数量

找一个好的选择k,通过交叉验证,表示分类器中最近邻居的数量。选择在对数刻度上近似均匀间隔的邻居数量。

rng (8000“旋风”%的再现性K =圆(logspace (0 log10 (N) 10));邻居数量%cvloss = 0(元素个数(K), 1);k=1:numel(k) knn = fitcknn(X,Y,...“NumNeighbors”, K (K),“CrossVal”“上”);cvloss (k) = kfoldLoss(资讯);结束图;绘制精度与k的关系图semilogx (K, cvloss);包含(“最近的邻居数量”);ylabel (“10倍分类错误”);标题(“事例分类”);

图中包含一个axes对象。标题为k-NN分类的axes对象包含一个类型为line的对象。

的交叉验证错误最低k = 2

创建一个集合体

创建集合体2-不同维度数的最近邻分类,并检查得到的集成的交叉验证损失。

此步骤耗时较长。要跟踪进度,请在每个维度结束时打印一条消息。

NPredToSample =圆(linspace (1 D 10));%尺寸的线性间距cvloss = 0(元素个数(NPredToSample), 1);学习者= templateKNN (“NumNeighbors”2);npred=1:numel(NPredToSample) subspace = fitcensemble(X,Y,“方法”“子”“学习者”学习者,...“NPredToSample”NPredToSample (npr),“CrossVal”“上”);cvloss (npr) = kfoldLoss(子空间);流('随机子空间%i已完成。\n'美国国家公共电台);结束
随机子空间1完成。随机子空间2完成。随机子空间3完成。随机子空间4完成。随机子空间5完成。随机子空间6完成。随机子空间7完成。随机子空间8完成。随机子空间9完成。随机子空间10完成。
图;绘制精度与尺寸的关系图情节(NPredToSample cvloss);包含(“随机选择的预测因子数量”);ylabel (“10倍分类错误”);标题(“随机子空间的k-NN分类”);

图中包含一个axes对象。标题为k-NN随机子空间分类的axis对象包含一个类型为line的对象。

每个学习者使用5个和8个预测器的集成具有最低的交叉验证误差。这些集成的错误率约为0.06,而其他集成的交叉验证错误率约为0.1或更多。

找到合适的整体尺寸

在集合中找出最小数量的仍能给出良好分类的学习者。

实体= fitcensemble (X, Y,“方法”“子”“学习者”学习者,...“NPredToSample”5,“CrossVal”“上”);图;绘制精度与集合数的关系图情节(kfoldLoss(实体,“模式”“累积”)包含(“学生人数”);ylabel (“10倍分类错误”);标题(“随机子空间的k-NN分类”);

图中包含一个axes对象。标题为k-NN随机子空间分类的axis对象包含一个类型为line的对象。

一个学生超过50人左右的乐团似乎没有什么优势。有可能25个学习者给出了很好的预测。

打造最后的合奏

由50名学习者组成最后的合奏。压缩集成,看看压缩后的版本是否节省了可观的内存。

实体= fitcensemble (X, Y,“方法”“子”“NumLearningCycles”, 50岁,...“学习者”学习者,“NPredToSample”5);岑=紧凑(ens);s1 =谁(“实体”);s2 =谁(“岑”);(s1。字节s2.bytes]%如果。Bytes = size,单位为字节
ans =1×21748675 1518820

紧凑的合奏比完整的合奏小10%左右。两者给出了相同的预测。

另请参阅

||||

相关的话题

Baidu
map