Main Content

回帰 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 であることがわかります。経過時間はオペレーティング システムによって変化する可能性があることに注意してください。

参考

(Parallel Computing Toolbox) | |

関連するトピック