OSSを紹介する本連載第3回はTPOTを解説します。Programming)」と呼ばれる手法を適用し、効率的なパイプラインの最適化を目指しています。八木真理奈,共著]この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。本記事で紹介したノートブックはGitHubにて公開しています。実行できますので、ぜひご利用ください。OSS(オープンソースソフトウェア)の老舗ともいえる「auto-sklearn」を紹介しました。OSSの「TPOT」を紹介します。Laboratoryが中心となって開発しているAutoML機能を提供するOSSです。optimization」で発表されました。なる機械学習の処理を「パイプライン」と呼びます。パイプラインを構成する各処理やハイパーパラメーターのさまざまな組み合わせを探索し、最適なパイプラインの発見を目指します。TPOTは複数のPythonライブラリを利用して実装されており、パイプラインを構成する各処理を実現するためにscikit-learnやXGBoostを、パイプラインの最適化手法である遺伝的プログラミングを実現するためにDEAPを利用しています。主な特徴TPOTは、AutoMLができる他のOSSと比較して次のような特徴があります。木構造のパイプラインも含めた最適化パイプラインで利用するオペレーターの柔軟な拡張それぞれの特徴をもう少し詳しく見ていきましょう。APIのパラメーターを見ると、generations(世代数)、population_size(個体数)、mutation_rate(変異率)、crossover_rate(交叉率)といった、他のAutoMLではあまり見慣れないものが並んでいます。これはTPOTが遺伝的プログラミングを最適化の手法として採用しているためです。遺伝的プログラミングでは、生物の進化の仕組みを模倣して最適なパイプラインを探索します。遺伝的プログラミングの詳しい説明は省略しますが、始めにランダムで生成したパイプライン群を生物の個体群と見なし、世代ごとにこれらの掛け合わせ(交叉)や突然変異を適用して進化させていくことで最適解を探します。優秀な個体(=精度の良いパイプライン)を中心に次の世代へと進化を続けることにより、ランダムな探索と比較して効率的に最適解にたどり着くことが期待できます。以下に遺伝的プログラミングに関連するTPOTのパラメーターの一部を紹介します。表で示した以外のパラメーターもありますが、遺伝的プログラミングの考え方をよく理解しない限りはデフォルト値のままで使用することが推奨されています。パイプラインの最適化を実行する試行回数に相当する。世代ごとに保持するパイプライン数。遺伝的プログラミングに関連するTPOTのパラメーター例population_sizeと異なる値をoffspring_sizeに指定した場合、初期のパイプライン数はpopulation_size、それ以降の各世代で生成されるパイプライン数はoffspring_sizeで決まることになります。従って、TPOTが探索するパイプラインの総数は以下の通りです。一般に遺伝的プログラミングは、木構造(ツリー構造)の個体を扱うことができる特徴を持ちます。遺伝的プログラミングをパイプラインの最適化に適用したTPOTにおいても、直列的なパイプラインだけでなく、図1に示すような出力結果を根ノードとする木構造のパイプラインの探索が可能です。Tool)にも表れています。図1で示した例を見てみましょう。)を、下段ではPCA(主成分分析で得られた特徴量抽出処理)を行い、この2つを組み合わせることで分類モデルの入力を作っています。このように複数の前処理結果を組み合わせて利用することで、より最適なパイプラインが生成できる可能性があります。複雑な構造のパイプラインはそれだけ組み合わせの数も増え、計算負荷も高くなるため、解探索の時間が長くかかってしまいます。処理時間が長くなりすぎないよう、学習時のパラメーターとしてmax_eval_time_mins(1パイプラインごとの所要時間上限)を短く設定したりtemplate(パイプラインの構造)を固定したりすることも合わせて検討しましょう。パイプラインで利用するオペレーターの柔軟な拡張TPOTではパイプラインを構成する各処理を「オペレーター」と呼んでいます。オペレーターにはPreprocessors(前処理)、Selectors(特徴量選択)、Classifiers(分類器)といったものがあり、これらを部品として組み合わせることでパイプラインを構成します。図1で示した例で説明すると、以下のようになります。Classifier」で分類する分類モデル向けのデフォルトの設定は表3で示す通り、Preprocessorsとして14種類、Selectorsとして5種類、Classifiersとして13種類のオペレーターが用意されています。デフォルトの設定ではなく事前に用意された複数パターンから引数config_dictで選択することもできます。後述しますが利用する処理やパラメーターをユーザー自らが指定して利用することも可能です。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。