bugfix> featuretools > 投稿

featuretoolsのディープフィーチャ合成に渡すプリミティブのリストをどのように決定しますか?

回答 1 件
  • それを行うには、2つの包括的な方法があります

    計算上の制約がある場合は、いくつかのプリミティブから始めて、最終的なプリミティブセットに向かってビルドします。

    データセットが小さい場合(対象のコンピューターに比べて)、多くのプリミティブを選択して開始し、ハイパーパラメーターの最適化と特徴選択に頼って、結果の特徴マトリックスを整理できます。

    積み上げ

    データセットが大きい場合、DFSをパーソナルコンピューターで実行するのに時間がかかることがあります。にとって毎回 追加するプリミティブは、すべての有効な関係のすべての有効な列に適用されます。

    その場合、他の方法よりも慎重にプリミティブを追加すると便利です。すべての追加プリミティブが最終計算に顕著な時間を追加する場合、プリミティブが意味のある重要な機能を作成していることを確認することが特に重要です。

    構築するときは、おおよそ次の手順に従います

    エンティティセットの小さなサブセットでのみDFSを使用して、結果をすばやく確認できるようにします

    生成されたフィーチャを視覚的に検査して、それらが意味を持ち、計算していると思われるものを計算していることを確認します

    希望する特定の機能が生成されていることを確認してください

    モデルを使用し、検証セットでより多くの行を持つ機能マトリックスをスコアリングして、どの機能が有望であるかを確認します

    プリミティブの追加と削除、繰り返し

    この痕跡は、predict-remaining-useful-lifeデモで見ることができます。各ノートブックには、数回の反復後に見つかった3つのプリミティブのみが表示されます。このデモの2番目のノートブックでは、3つのプリミティブ 'last' の1つを交換します   'complexity' の  tsfreshから)302の機能を生成します。ザ・ 'complexity'  プリミティブは、最終モデルの最も重要な5つの機能のうち3つを作成します。これは、元のモデルよりもかなり正確です。

    この方法により、完全なデータセットで不要なプリミティブを使用して計算コストを節約できます。欠点は、結果が特に主観的であることです。どのレベルでも、好きなプリミティブと機能を選択します。これは、個人的な偏見と、最終的なモデルの成功を制限する事例証拠につながります。それを回避するには、より多くの計算リソースを使用する必要があります。

    大きくなり剪定

    計算時間が許す場合の代替アプローチは、大きな特徴行列から始めて、そこから作業することです。このパラダイムでは、必要なすべてのプリミティブを含めます。そこから:

    多くのプリミティブで完全な機能マトリックスを構築

    さまざまな機能選択アルゴリズムの結果をテストする

    特に良い機能と特に悪い機能を視覚的に検査して、何も問題がないことを確認する

    結果に基づいてカスタムプリミティブを追加する

    繰り返す

    このアプローチの結果は、predict-next-purchaseデモで確認できます。そこで、デフォルトのプリミティブセットを使用して、12列のデータフレームに対して161個のフィーチャを生成します。これらの機能から、完全なデータセットで使用するお気に入りの20を選択します。

    これには時間がかかりますが、機能空間をよりプログラマティックで再現可能な方法で探索できます。最終結果のフィーチャの数が非常に多いため、プリミティブを選択する際の注意はあまり必要ありませんが、フィーチャの選択方法に重点が置かれます。

    最後に、Featuretoolsに渡すプリミティブの最適なリストを見つけることは、非常に難しい質問-「機能を選択する最善の方法は何ですか?」から1ステップ削除されることに注意してください。ディープフィーチャ合成、一連の集約 そして変換する プリミティブは一連の機能を決定論的に生成します。あなたが求めた場合ベスト これらの機能のサブセットでは、尋ねた人に応じて異なる回答が得られます。答えは次のように制約されます(ここに特定の順序はありません)。

    どのアルゴリズムが選択に使用されているか、

    機能の解釈可能性への欲求、および

    最適化しようとしているメトリックとモデル。

あなたの答え