このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
TreeBagger
Bootstrap聚集(バギング)
统计和机器学习工具箱™には分类木ののののののバギングバギングををする,,,TreeBagger
を使用て作成されるTreeBagger
およびfitcensemble
を使用て作成されるClassificationBaggedEnsemble
2つのつのがあります。TreeBagger
とClassificationBaggedEnsemble
の违いについて,TreeBagger とバギング アンサンブルの比較を参照してください。
この例では、TreeBagger
のみの機能を使用する分類のワークフローを示します。
351个値ととと个のがれて,电离层ののデータデータををを使用しますます応答応答応答変数変数変数2
'g'
はレーダー反射が良好であることを表します。'b'
はレーダーがであることを表し。。
目標は、34 回の測定のセットを使用して、反射の良し悪しを予測することです。
初期乱数シードを固定し、50 本のツリーを成長させ、アンサンブル誤差がツリーの累積と交替する様子を調べ、特徴量の重要度を推定します。分類するための最良の方法は、最小のリーフ サイズを 1 に設定し、無作為に分割した決定ごとに特徴量の総数の平方根を選択することです。これらの設定は、分類に使用するTreeBagger
の既定の設定です。
loadionosphererng(1945,'twister') b = TreeBagger (50,X,Y,“ oobpredictorimportance','On');图图(ooberror(b))xlabel(“成年树的数量”)ylabel('Out-of-Bag Classification Error')
こので,するツリーがほとんどほとんどほとんどが学习学习されれ。。。すべてののツリーツリーツリーに対してに対してに対して観测観测観测ははははははははははははははははははであり,TreeBagger
は分类最もクラスを返し,に标本平均を返し。DefaultyFit
プロパティを使用して、in-bag 観測用に返される既定値を変更することができます。分類用の既定値を空の文字ベクトルに設定すると、out-of-bag 誤差の計算から in-bag の観測値が除外されます。この例では、ツリーの数が少ないと、曲線はより可変になります。理由は、観測によっては out-of-bag にならないこと (そのため除外されること)、または、ツリーの存在なしに予測するからです。
b.DefaultYfit ='';图图(ooberror(b))xlabel(“成年树的数量”)ylabel('Out-of-Bag Error Excluding In-Bag Observations')
TreeBagger
のOOBIndices
プロパティは、どの観測がどのツリーの out-of-bag であるかを追跡します。このプロパティを使用して、すべてのツリーにまとめられた学習データの観測比率を監視することができます。曲線は約 2/3 の地点 (1 つのブートストラップ複製により選択された固有の観測の比率) で開始し、約 10 本のツリーの地点で 0 に下がります。
finbag =零(1,b.numtrees);fort=1:b.NTrees finbag(t) = sum(all(~b.OOBIndices(:,1:t),2));endfinbag = finbag / size(x,1);图图(FinBag)Xlabel(“成年树的数量”)ylabel('Fraction of In-Bag Observations')
特徴量の重要度を推定します。
figure bar(b.OOBPermutedPredictorDeltaError) xlabel('Feature Index')ylabel('Out-of-Bag Feature Importance')
重要度が 0.75 より大きくなる特徴量を選択します。このしきい値は任意に選択したものです。
idxvar = find(b.oobpermuded predictordeltaerror> 0.75)
idxvar =1×53 5 7 8 27
最も重要な特徴量を選択したので、縮小した特徴セットで、より大きなアンサンブルを成長させます。制限した特徴セットでは、out-of-bag 観測を変換せずに特徴量の重要度の新しい推定を取得することにより、時間を節約します (Oobvarimp
を'离开'
に设定)。分类のののの推定推定することにOOBPred
を'on'
に设定)。
b5v = TreeBagger(100,X(:,idxvar),Y,“ oobpredictorimportance','离开','OOBPrediction','on');figure plot(oobError(b5v)) xlabel(“成年树的数量”)ylabel('Out-of-Bag Classification Error')
アンサンブル分类は分类(误っ误っさのの比率比率)にににてて,分类マージンをを监视监视するすることこともmarginは真クラススコアおよびツリーが予测する他の最大最大スコアスコアのの差差差としてとして定义されれますます。。累积累积分类分类マージンマージンははすべてすべてののののツリー全体平均スコアスコアスコアスコア全体の累积マージンです。“累积”
(既定の設定) に設定された'模式'
引数をもつoobMeanMargin
メソッドは、アンサンブルが成長するにつれて平均累積マージンが変わる様子を示します。返された配列内のすべての新要素は、新しいツリーをアンサンブルに含めることにより得た累積マージンを表します。学習が成功すると、平均分類マージンのゆるやかな増加が見えるはずです。
こので,するツリーがほとんどほとんどほとんどが学习学习されれ。。。すべてののツリーツリーツリーに対してに対してに対して観测観测観测ははははははははははははははははははであり,TreeBagger
は分类最もクラスを返し,に标本平均を返し。
木の分类スコアは,ツリーリーフにおけるクラスクラス観测観测するする际际のののの确率确率です。。。たとえば,,成长成长ししした决定决定决定木木の'好的'
と3つの'坏的'
をもつ場合は、このリーフになるすべての観測に対してこの決定木が返すスコアは、'好的'
クラスの 5/8 と'坏的'
3/8ですですこれらのはは“得分”
と呼ば返さたのにに解釈ない,他の分类分类器とのの整合性をを
图图(oobmeanmargin(b5v));Xlabel(“成年树的数量”)ylabel('Out-of-Bag Mean Classification Margin')
近接行列を計算し、外れ値の尺度の分布を調べます。回帰と異なり、アンサンブル分類用の外れ値の測定は、各クラス内で別々に計算されます。
b5v = fillProximities(b5v); figure histogram(b5v.OutlierMeasure) xlabel(“离群量度”)ylabel('Number of Observations')
极端なのクラスを。。
Extremeoutliers =b5v.Y(b5v.OutlierMeasure>40)
Extremeoutliers =6x1单元{'g'} {'g'} {'g'} {'g'} {'g'} {'g'}
percengood = 100*sum(strcmp(ExtremeOutliers,'g'))/numel(extremeOutliers)
百分比= 100
すべての極端な外れ値に'好的'
というラベルが付けられています。
回帰については、mdsProx
の 'Colors' 名前と値のペア引数を使用して、異なる色で 2 クラスを表示し、スケーリングした座標をプロットすることができます。この引数は文字ベクトルを取り、すべての文字は色を表します。クラス名のランク付けはされません。そのため、アンサンブル内のClassNames
プロパティにおけるクラスの位置を特定することが推奨されます。
gPosition = find(strcmp('g',b5v.ClassNames))
gposition = 2
'坏的'
クラスが 1 つ目で'好的'
クラスが 2 つ目です。'坏的'
クラスでは赤、'好的'
クラスでを値にしてスケーリングさた座标を表示します。
figure [s,e] = mdsProx(b5v,'颜色','rb');Xlabel('First Scaled Coordinate')ylabel(“第二缩放坐标”)
スケーリングにより取得した最初の 20 個の固有値をプロットします。最初の固有値が明らかに優勢であり、最初にスケーリングされた座標が最も重要です。
figure bar(e(1:20)) xlabel(“缩放坐标索引”)ylabel('Eigenvalue')
アンサンブルの探究するもうもうもうもうつのつのつの方法受信者受信者特性(ROC)曲线曲线曲线曲线曲线または现在のののの课题课题课题にににに适する适する别别のの性能性能性能性能性能曲线曲线をアンサンブル分类の,oobPredict
メソッドは、最初の出力引数として分類ラベルの cell 配列を返し、2 つ目の出力引数としてスコアの数値配列を返します。返されたステレオの配列はクラスごとに 1 列、合計 2 列になります。この場合、1 列目が'坏的'
クラスで2列目列目が'好的'
クラスです。スコア行列内の列の 1 つは冗長です。その理由は、スコアがツリーのリーフ内のクラス確率と合計 1 になる定義によるクラス確率を表すからです。
[Yfit,Sfit] = oobPredict(b5v);
perfcurve
を使用性能曲线计算します既定设定设定はは,perfcurve
は标准のの(真阳性率伪阳性)をを。perfcurve
は、入力用に真のクラス ラベル、スコア、および陽性のクラス ラベルを必要とします。この例では、'好的'
クラスをとして选択し。。
[fpr,tpr] = perfcurve(b5v.y,sfit(:,gposition),'g');figure plot(fpr,tpr) xlabel(“误报率”)ylabel(“真正的正率”)
标准のroc曲线曲线代わりに,,,'好的'
クラスのためのスコアにアンサンブル精度対しきい値の座標をプロットするとよいでしょう。perfcurve
のycrit
入力引数により、y
軸の基準を指定することができます。perfcurve
の 3 つ目の出力引数は、陽性のクラス スコアのためのしきい値の配列を返します。精度は正しく分類された観測の比率か、1 マイナス分類誤差と同じです。
[fpr,accu,thre] = perfcurve(b5v.Y,Sfit(:,gPosition),'g','ycrit','Accu');图(20)图(Thre,Accu)Xlabel(“良好”的阈值)ylabel(“分类准确性”)
曲線は、0.2 ~ 0.6 のしきい値が妥当な選択であることを示す平らな領域を示します。既定の設定では、perfcurve
は、2 クラスの間で境界として 0.5 を使用し、分類ラベルを割り当てます。これがどの精度に対応するのかを正確に見つけることができます。
accu(abs(thre-0.5)
ANS = 0.9316
最大限の精度は既定の精度よりやや高めです。
[maxaccu,iaccu] = max(accu)
maxaccu = 0.9345
iaccu = 99
したがって、最適なしきい値は、以下のようになります。
thre(iaccu)
ANS = 0.5278
参考
TreeBagger
|袖珍的
|oobError
|mdsprox
|oobMeanMargin
|oobPredict
|perfcurve
|fitcensemble