主要内容

分位数誤差とベ@ @ズ最適化の使用によるランダムフォレストの調整

この例では,分位数誤差を使用して回帰木のランダムフォレストのハイパーパラメーターを調整するベイズ最適化を実装する方法を示します。条件付き平均ではなく条件付き分位を予測するモデルを使用する場合,モデルの調整には平均二乗誤差よりも分位数誤差の使用が適切です。

デ,タの読み込みと前処理

carsmallデ,タセットを読み込みます。与えられた加速,気筒数,エンジン排気量,馬力,製造業者,モデル年および重量に対して自動車の燃費の中央値を予測するモデルを考えます。气缸制造行业およびModel_Yearはカテゴリカル変数であるとします。

负载carsmall圆柱=分类(圆柱);Mfg = categorical(cellstr(Mfg));Model_Year = categorical(Model_Year);X =表(加速度,气缸,排量,马力,制造,...Model_Year、重量、MPG);rng (“默认”);%用于再现性

調整パラメ,タ,の指定

以下の調整を考えます。

  • 森の木の複雑度(深さ)。深い木は過適合に,浅い木は適合不足になりがです。したがって,各葉における観測値の最小数が20以下になるように指定します。

  • 木を成長させるときに各ノ,ドで抽出する予測子の数。1から全予測子の範囲で抽出するよう指定します。

ベ@ @ズ最適化を実装する関数bayesoptには,これらの指定をoptimizableVariableオブジェクトとして渡す必要があります。

maxMinLS = 20;minLS = optimizableVariable(“minLS”(1, maxMinLS),“类型”“整数”);numPTS = optimizableVariable(“numPTS”,(1,尺寸(X, 2) 1),“类型”“整数”);hyperparametersRF = [minLS;numPTS];

hyperparametersRFは2行1列のOptimizableVariableオブジェクトの配列です。

アンサンブル内の木の本数を調整することを検討する必要もあります。学習器の数が多いほどアンサンブルの精度が向上するので,bayesoptは多くの木が含まれているランダムフォレストを選択する傾向にあります。利用可能な計算リソースが検討対象であり,木の本数が少ないアンサンブルが好ましい場合,他のパラメーターとは関係なく木の本数を調整するか,学習器の数が多いモデルにペナルティを課すことを検討します。

目的関数の定義

ベ@ @ズ最適化アルゴリズムで最適化を行う目的関数を定義します。この関数は以下を行う必要があります。

  • 調整するパラメ,タ,を入力として受け入れる。

  • TreeBaggerを使用してランダムフォレストに学習をさせる。TreeBaggerを呼び出すときに,調整するパラメーターを指定し,out-of-bagインデックスを返すように指定する。

  • 中央値に基づいてout-of-bag分位数誤差を推定する。

  • Out-of-bag分位数誤差を返す

函数oobErr = oobErrRF(参数,X)训练随机森林并估计袋外分位数误差% oobErr训练一个包含300棵回归树的随机森林%预测器数据在X和参数规范在params,然后%返回基于中位数的袋外分位数错误。X是一个表%和params是一个OptimizableVariable对象数组,对应于%每个节点上要采样的最小叶大小和预测因子数量。randomForest = TreeBagger(300,X,“英里”“方法”“回归”...“OOBPrediction”“上”“MinLeafSize”params.minLS,...“NumPredictorstoSample”, params.numPTS);oobErr = oobQuantileError(randomForest);结束

ベ@ @ズ最適化の使用による目的関数の最小化

ベイズ最適化を使用して,木の複雑度および各ノードで抽出する予測子の数に関して,ペナルティを課した最小のout-of-bag分位数誤差を達成するモデルを求めます。期待改善量プラスの関数を獲得関数として指定し,最適化情報の出力を抑制します。

results = bayesopt(@(params)oobErrRF(params,X),hyperparametersRF,...“AcquisitionFunctionName”“expected-improvement-plus”“详细”, 0);

结果は,目的関数の最小値や最適化されたハイパーパラメーターの値などが格納されているBayesianOptimizationオブジェクトです。

観測された目的関数の最小値と最適化されたハパパラメタの値を表示します。

bestOOBErr =结果。MinObjective bestHyperparameters =结果。XAtMinObjective
bestthyperparameters = 1×2 table minLS numPTS _____ ______ 7

最適化されたハパパラメタの使用によるモデルの学習

データセット全体と最適化されたハイパーパラメーターの値を使用してランダムフォレストに学習をさせます。

Mdl = TreeBagger(300,X,“英里”“方法”“回归”...“MinLeafSize”bestHyperparameters.minLS,...“NumPredictorstoSample”, bestHyperparameters.numPTS);

Mdlは,中央値の予測に対して最適化されたTreeBaggerオブジェクトです。Mdlと新しいデ,タをquantilePredictに渡すことにより,与えられた予測子デ,タに対する燃費の中央値を予測できます。

参考

||||

関連するトピック