这个例子展示了如何在不影响模型预测能力的情况下,通过移除预测器来创建一个更健壮、更简单的模型。当您的数据中有许多预测因素时,这一点尤其重要。线性判别分析使用两个正则化参数,γ和δ,以识别和去除多余的预测因子。的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);
完成交叉验证模型的构建。处理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”。)包含(的错误率) ylabel (预测的数量)
仔细检查图的左下部分。
轴([0 .1 0 1000])
在较低的预测数和较低的错误之间有一个明显的权衡。
多个双γ
和δ
值产生相同的最小错误。显示这些对的索引和它们的值。
首先,找出最小误差值。
minerr = min (min (err))
minerr = 0.0139
求的下标犯错
生产误差最小。
[p,q] = find(err < minerr + 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 (“伽马指数”) subplot(1,2,2) imagesc(numpred) colorbar title(“模型中预测因子的数量”)包含(“三角洲指数”) ylabel (“伽马指数”)
你会看到最好的分类错误δ
很小,但什么时候是最小的预测因素δ
很大。
[1] Guo Y., T. Hastie, R. Tibshirani。“正则化判别分析及其在芯片中的应用”。生物统计学,第8卷,第1期,86-100页,2007。