質問: pythonでxgboostを使用しているのですが、高速化させたいです。 なのでマルチコアにして高速化しようとしたのですが、高速化できません。 xgbのパラメータでnthread=-1にすればPCの最大コア数で動作してくれると思ったのですが、動作しません。シングルコアでしか動きません。 どのようにすればマルチコアで動かすことができますか? ご教授お願いします。
回答: 勾配ブースティングについてざっくりと説明する の記事に説明がありますが、xgboostは学習が逐次的に行われる(並列化できない)勾配ブースティングの高速なC++実装。並列化できないプログラムは単一スレッドで実行するしかありませんので、マルチコアによる高速化(並列化)はできません。 マルチコアを活用してマルチスレッド実行がしたいのであれば、ランダムフォレストかバギングを使いましょう。 pythonでランダムフォレストまとめ の記事には、用語解説やコード例があるので参考になるかと思います。