回帰 TreeBagger
ワークフローに対する並列処理の使用
この例では、以下の方法について説明します。
バギング回帰木のアンサンブルを使用して、特徴量の重要度を推定する。
並列計算を使用して計算速度を向上させる。
標本データは 1985 年の車両輸入に関するデータベースで、205 個の観測値、25 個の予測子、および 1 つの応答として保険リスク ランク付け (つまり "シンボル化") が含まれています。最初の 15 個の変数は数値で、最後の 10 個は categorical です。シンボル インデックスは、-3 ~ 3 の整数です。
標本データを読み込み、予測子の配列と応答の配列に分割します。
load imports-85;
Y = X(:,1);
X = X(:,2:end);
既定の数のワーカーを使用するように並列環境を設定します。この例を作成したコンピューターのコアは 6 つです。
mypool = parpool
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). mypool = ProcessPool with properties: Connected: true NumWorkers: 6 Cluster: local AttachedFiles: {} AutoAddClientPath: true IdleTimeout: 30 minutes (30 minutes remaining) SpmdEnabled: true
並列処理を使用するようにオプションを設定します。
paroptions = statset('UseParallel',true);
リーフ サイズ 1
および 5000
ツリーを並列で使用して特徴量の重要度を推定します。比較のため、関数の実行時間を測定します。
tic b = TreeBagger(5000,X,Y,'Method','r','OOBVarImp','on', ... 'cat',16:25,'MinLeafSize',1,'Options',paroptions); toc
Elapsed time is 9.873065 seconds.
時間を比較するため、同じ計算を逐次的に実行します。
tic b = TreeBagger(5000,X,Y,'Method','r','OOBVarImp','on', ... 'cat',16:25,'MinLeafSize',1); toc
Elapsed time is 28.092654 seconds.
この結果から、並列計算にかかる時間が逐次計算にかかる時間の数分の 1 であることがわかります。経過時間はオペレーティング システムによって変化する可能性があることに注意してください。
参考
parpool
(Parallel Computing Toolbox) | statset
| TreeBagger