主要内容

正则化判别分析分类器

此示例显示如何通过尝试删除预测器而不损害模型的预测力来进行更强大和更简单的模型。当您在数据中有许多预测器时,这尤其重要。线性判别分析使用两个正则化参数,γ和δ,以识别和去除多余的预测因子。的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种水平δ寻找好的参数。这种搜索是耗时的。集verb1查看进度。

(呃,γδ,numpred) = cvshrink (Mdl,...“NumGamma”, 24岁,'numdelta', 24岁,“详细”,1);
完成交叉验证模型的构建。处理Gamma步骤1 25。处理Gamma步骤2 25。处理Gamma步骤3 25。处理Gamma步骤4 25。处理Gamma步骤5 25。处理Gamma步骤6 25。处理Gamma步骤7 25。处理25步中的第8步。处理Gamma 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。')Xlabel('错误率')ylabel('预测器数量'

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

仔细检查图的左下部分。

轴([0 .1 0 1000])

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

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

在模型大小和准确性之间选择最佳权衡。

多个双伽玛δ值产生大约相同的误差。显示这些成对的索引及其值。

首先,找出最小误差值。

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

找到下标生产误差最小。

[p,q] =查找(错误
              

将下标转换为线性指标。

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

设置正则化参数。

用这些值设置分类器伽玛δ,使用dot表示法。

Mdl。γ=γ(r);Mdl。δ=δ(r, s);

热图情节

比较cvshrink郭、哈斯提和蒂布希拉尼都在计算这一点[1],绘制误差和预测数的热图伽玛和指数δ范围。(这δ参数范围取决于伽玛范围。所以要获得一个矩形绘图,请使用δ索引,而不是参数本身。)

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

图包含2个轴对象。带有标题分类错误的轴对象1包含类型图像的对象。轴对象2具有模型中的标题预测器的标题数包含类型图像的对象。

你会看到最好的分类错误δ很小,但什么时候是最小的预测因素δ很大。

参考

[1]郭,Y.,T. Hastie和R. Tibshirani。“正规化判别分析及其在微阵列中的应用。”生物统计学,第8卷,第1期,86-100页,2007。

另请参阅

功能

对象

相关话题