主要内容

正则化判别分析分类器

这个例子展示了如何在不损害模型预测能力的情况下删除预测器,从而创建一个更健壮、更简单的模型。当数据中有许多预测器时,这一点尤其重要。线性判别分析使用两个正则化参数,,以识别和删除冗余预测因子。的cvshrink方法帮助确定这些参数的适当设置。

加载数据并创建分类器。

创建一个线性判别分析分类器ovariancancer数据。设置SaveMemory而且FillCoeffs名称-值对参数,以保持结果模型相当小。为了便于计算,本例使用约三分之一的预测器的随机子集来训练分类器。

负载ovariancancerrng (1);%用于再现性numPred = size(obs,2);obs = obs(:,randsample(numPred,ceil(numPred/3)));Mdl = fitcdiscr(obs,grp,“SaveMemory”“上”“FillCoeffs”“关闭”);

交叉验证分类器。

使用25个关卡γ有25个等级δ寻找好的参数。这种搜索很耗时。集详细的1查看进度。

[err,gamma,delta,numpred] = cvshrink(Mdl,“NumGamma”, 24岁,“NumDelta”, 24岁,“详细”1);
完成交叉验证模型的构建。在25个步骤中处理第1步。在25个步骤中处理Gamma步骤2。在25个步骤中处理第3步。在25个步骤中处理第4步。处理25步中的第5步。处理25步中的第6步。在25个步骤中处理第7步。处理25步中的第8步。处理25步中的第9步。 Processing Gamma step 10 out of 25. Processing Gamma step 11 out of 25. Processing Gamma step 12 out of 25. Processing Gamma step 13 out of 25. Processing Gamma step 14 out of 25. Processing Gamma step 15 out of 25. Processing Gamma step 16 out of 25. Processing Gamma step 17 out of 25. Processing Gamma step 18 out of 25. Processing Gamma step 19 out of 25. Processing Gamma step 20 out of 25. Processing Gamma step 21 out of 25. Processing Gamma step 22 out of 25. Processing Gamma step 23 out of 25. Processing Gamma step 24 out of 25. Processing Gamma step 25 out of 25.

检查正则化分类器的质量。

把预测因子的数量和误差画出来。

情节(呃,numpred“k”。)包含(的错误率) ylabel (“预测因子的数量”)

图中包含一个轴对象。axis对象包含25个line类型的对象。

更仔细地检查图的左下角。

轴([0.1 0 1000])

图中包含一个轴对象。axis对象包含25个line类型的对象。

在较低数量的预测器和较低的误差之间有一个明显的权衡。

在模型大小和精度之间选择一个最佳的权衡。

多对γ而且δ值产生相同的最小误差。显示这些对的索引及其值。

首先,找到最小误差值。

miner = min(min(err))
米勒= 0.0139

找到的下标犯错产生最小的误差。

[p,q] = find(err < miner + 1e-4);

将下标转换为线性下标。

Idx = sub2ind(size(delta),p,q);

显示γ而且δ值。

(γδ(idx) (p))
ans =4×20.7202 0.1145 0.7602 0.1131 0.8001 0.1128 0.8001 0.1410

这些点在模型中只有29%的非零系数预测因子。

numpred (idx) /装天花板(numpred / 3) * 100
ans =4×139.8051 38.9805 36.8066 28.7856

为了进一步减少预测器的数量,您必须接受更大的错误率。例如,要选择γ而且δ在200个或更少的预测器下给出最低的错误率。

Low200 = min(min(err(numpred <= 200)));Lownum = min(min(numpred(err == low200)));[low200 lownum]
ans =1×20.0185 - 173.0000

您需要173个预测器才能实现0.0185的错误率,这是拥有200个或更少预测器的错误率中最低的。

显示γ而且δ实现了这个误差/数量的预测器。

(r, s) =找到((呃= = low200) & (numpred = = lownum));(γ(r);δ(r, s)]
ans =2×10.6403 - 0.2399

设置正则化参数。

的值来设置分类器γ而且δ,使用点表示法。

Mdl。Gamma = Gamma (r);Mdl。= (r,s);

热图情节

为了比较cvshrink郭、哈斯蒂和蒂布谢拉尼的计算[1],绘制误差热图和预测指标的数量γ的指数δ参数。(δ参数的范围取决于γ参数。要得到矩形图,使用δ索引,而不是参数本身。)

创建增量索引矩阵Indx = repmat(1:size(delta,2),size(delta,1),1);图subplot(1,2,1) imagesc(err) colorbar colormap(“喷气机”)标题(分类错误的)包含(“三角洲指数”) ylabel (“伽马指数”) subplot(1,2,2) imagesc(numpred) colorbar title(“模型中预测因子的数量”)包含(“三角洲指数”) ylabel (“伽马指数”)

图中包含2个轴对象。分类错误包含一个图像类型的对象。模型中预测器数量的坐标轴对象2包含一个image类型的对象。

当你看到最好的分类错误时δ是很小,但预测者最少的时候δ很大。

参考文献

[1]郭,Y., T.哈斯蒂,R.蒂布谢拉尼。正则化判别分析及其在微阵列中的应用生物统计学,第8卷第1期,86-100页,2007年。

另请参阅

功能

对象

相关的话题