このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,モデルの予測力を損なわずに予測子の削除を試行して,よりロバストで簡潔なモデルを作成する方法を示します。これは,データに多数の予測子が含まれる場合に特に重要です。線形判別分析では2つの正則化パラメーター(ガンマとデルタ)を使用して冗長な予測子を特定および削除します。cvshrink
メソッドはこれらのパラメーターの適切な設定の識別に役立ちます。
データovariancancer
の線形判別分析分類器を作成します。結果のモデルを適度に小さく維持するためにSaveMemory
とFillcoeffs.
名前と値のペアの引数を設定します。計算を容易にするため,この例では予測子の約1/3が含まれている無作為なサブセットを使用して分類器に学習させています。
负载ovariancancerRNG(1);再现性的百分比numpred = size(obs,2);OBS = OBS(:,RandSample(Numpred,CEIL(NUMPRED / 3))));mdl = fitcdiscr(obs,grp,“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。')Xlabel('错误率')ylabel(预测的数量)
プロットの左下の部分をより詳しく調べます。
轴([0 .1 0 1000])
予測子の数が少ないことと誤差が少ないことは明らかにトレードオフの関係にあります。
伽玛
およびδ
の値のペアには,ほぼ同じ最小誤差になるものが複数あります。このようなペアのインデックスと値を表示します。
まず,最小誤差値を見つけます。
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
予测子の数号さらにには,より大厦误差率受け入れなければません。たとえば,予测子のがんたとえばばのがんたとえば以でで误差率がが最と伽玛
およびδ
を選択するには,次のようにします。
Low200 = min(min(err(numpred <= 200)));Lownum = min(min(numpred(err == low200)));[low200 lownum]
ans =1×20.0185 173.0000
0.0185の誤差率を得るには,173の予測子が必要ですが,これは200以下の予測子をもつ誤差率の中で最小です。
この误差/予测子数号なる伽玛
とδ
を表示します。
(r, s) =找到((呃= = low200) & (numpred = = lownum));(γ(r);δ(r, s)]
ans =2×10.6403 - 0.2399
伽玛
およびδ
のこれらの値をもつ分類器を設定するには,ドット表記を使用します。
Mdl。γ=γ(r);Mdl。δ=δ(r, s);
cvshrink
の計算を郭,HastieおよびTibshiraniの計算[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(“伽马指数”)
分類誤差はδ
が小さい場合に最適になりますが,予測子の数はδ
が大きいときが最も少なくなります。
[1] Guo Y., T. Hastie, R. Tibshirani。“正则化判别分析及其在芯片中的应用”。生物统计学,Vol. 8, No. 1, pp. 86 - 100,2007。