主要内容

正则化判别分析分类器

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

加载数据并创建分类器。

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

负载ovariancancerrng (1);%的再现性numPred =大小(奥林匹克广播服务公司,2);奥林匹克广播服务公司=突发交换(:,randsample (numPred装天花板(numPred / 3)));grp Mdl = fitcdiscr(奥林匹克广播服务公司,“SaveMemory”“上”“FillCoeffs”“关闭”);

交叉验证分类器。

使用25个级别的γ和25个级别的δ寻找好的参数。这种搜索非常耗时。集详细的1查看进度。

(呃,γδ,numpred) = cvshrink (Mdl,...“NumGamma”, 24岁,“NumDelta”, 24岁,“详细”1);
完成构建交叉验证模型。处理25步中的第1步。处理25步中的第二步。处理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 (预测的数量

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

仔细看看图的左下部分。

轴([0.1 0 1000])

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

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

在模型大小和精度之间选择一个最佳的折衷方案。

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

首先,找到最小误差值。

minerr = min (min (err))
minerr = 0.0139

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

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

将下标转换为线性下标。

idx = sub2ind(大小(δ),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。γ=γ(r);Mdl。δ=δ(r, s);

热图情节

比较cvshrink郭、黑斯蒂和提布希拉尼的计算[1],绘制误差的热图和预测因素的数量γ的索引δ参数。(δ参数的取值范围取决于γ参数。要得到一个矩形图,用δ索引,而不是参数本身。)

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

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

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

参考文献

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

另请参阅

功能

对象

相关的话题

Baidu
map