20個の特徴と約300,000個の観測値で構成されるデータセットがあります。私はキャレットを使用して、doParallelと4つのコアを使用してモデルをトレーニングしています。私が試した方法(rf、nnet、adabag、svmPoly)では、データの10%のトレーニングでさえ8時間以上かかります。ブートストラップを3回使用してリサンプリングしていて、tuneLengthは5です。この非常に遅いプロセスを高速化するためにできることはありますか?基盤となるライブラリを使用すると、プロセスを10倍も高速化できると誰かが提案しましたが、そのルートを進む前に、他に選択肢がないことを確認したいと思います。
phiver
は頭に釘を打ちますが、この状況では、いくつかの提案があります。
マックス
基礎となるモデルとキャレットの使用を比較するときに人々が忘れているのは、キャレットには多くの余分なことが起こっているということです。
ランダムフォレストを例にとってみましょう。したがって、ブートストラップ、番号3、およびtuneLength5です。したがって、3回リサンプリングし、tuneLengthがあるため、mtryに適した値を見つけようとします。合計で15のランダムフォレストを実行し、これらを比較して最終モデルに最適なフォレストを取得します。これに対して、基本的なランダムフォレストモデルを使用する場合は1つだけです。
また、4つのコアで並列実行しており、ランダムフォレストには利用可能なすべての観測値が必要であるため、すべてのトレーニング観測値はメモリ内で4回実行されます。おそらく、モデルをトレーニングするためのメモリがあまり残っていません。
私のアドバイスは、bootstrap numberを1に設定し、長さをデフォルトの3に戻すなど、速度を上げることができるかどうかを確認するためにスケールダウンを開始することです。または、traincontrolメソッドを「none」に設定することもできます。 "、モデルが最小設定でリサンプリングなしでどれだけ高速であるかを知るためだけに。
@phiverと@topepoによる素晴らしいインプット。同様の問題について行ったSO投稿検索)の少しから収集したいくつかのポイントを要約して追加しようと思います。