Optimize by Generation (YAGGA2)
概要
この演算子は、元の属性セットから一部の属性を選択する場合があり、元の属性セットから新しい属性を生成する場合もあります。 YAGGA2(Yet Another Generation Genetic Algorithm 2)は、属性の追加または削除(または両方)がより良い適合性を証明しない限り、属性の元の数を変更しません。このアルゴリズムは、YAGGAの改良版です。
詳細
機能の選択だけでは不十分な場合があります。これらの場合、機能空間の他の変換を実行する必要があります。指定された属性から新しい属性を生成すると、機能空間が拡張されます。おそらく、拡張機能空間で仮説を簡単に見つけることができます。この演算子は、属性選択手順と属性生成手順を組み合わせたものと考えることができます。元の属性セットから一部の属性を選択し、元の属性から新しい属性を生成することもあります。 (生成)突然変異は、さまざまな確率で以下のいずれかを実行できます。
- 確率p / 4:新しく生成された属性を特徴ベクトルに追加します。
- 確率p / 4:ランダムに選択された元の属性を特徴ベクトルに追加します。
- 確率p / 2:ランダムに選択された属性を特徴ベクトルから削除します。
したがって、特徴ベクトルの長さが拡大および縮小できることが保証されます。より長いまたはより短い人がより良いフィットネスを持っていることが証明されない限り、平均して元の長さを維持します。
通常のYAGGAオペレーターに加えて、このオペレーターはより多くの機能ジェネレーターを許可し、冗長性防止のためのいくつかのテクニックを提供します。これにより、冗長性の少ない機能を含む小さなExampleSetが作成されます。
遺伝的アルゴリズム(GA)は、自然進化のプロセスを模倣する検索ヒューリスティックです。このヒューリスティックは、最適化と検索の問題に対する有用なソリューションを生成するために日常的に使用されます。遺伝的アルゴリズムは、より大きなクラスの進化的アルゴリズム(EA)に属し、継承、突然変異、選択、クロスオーバーなどの自然進化にヒントを得た手法を使用して、最適化問題の解決策を生成します。遺伝的アルゴリズムの基本的なアルゴリズムを学習するには、最適化選択(進化)演算子の説明を学習してください。
この演算子はネストされた演算子です。つまり、サブプロセスがあります。サブプロセスはパフォーマンスベクトルを返す必要があります。この演算子を適用するには、サブプロセスの基本的な理解が必要です。サブプロセスの基本的な理解については、サブプロセス演算子のドキュメントをご覧ください。
分化
Optimize by Generation (YAGGA)
YAGGA2オペレーターは、通常のYAGGAオペレーターの改良版です。このオペレーターは、より多くの機能ジェネレーターを許可し、冗長性防止のためのいくつかの手法を提供します。これにより、冗長性の少ない機能を含む小さなExampleSetが作成されます。
入力
- 設定された例(IOObject)この入力ポートには、ExampleSetが必要です。このExampleSetは、サブプロセスで処理するために、ネストされたチェーンの最初のポート(サブプロセス内)で使用できます。
出力
- 設定例(IOObject)遺伝的アルゴリズムは、入力ExampleSetに適用されます。結果のExampleSetは、このポートを介して配信されます。
- 属性の重み(平均ベクトル)属性の重みは、このポートを介して配信されます。
- パフォーマンスアウト(パフォーマンスベクトル)このポートは、選択した属性のパフォーマンスベクトルを提供します。パフォーマンスベクトルは、パフォーマンス基準値のリストです。
パラメーター
- limit_max_total_number_of_attributesこのパラメーターは、すべての世代の属性の総数を制限する必要があるかどうかを示します。 trueに設定すると、最大数は属性パラメーターの最大合計数によって指定されます。 範囲:ブール
- max_total_number_of_attributesこのパラメーターは、「属性の最大数の制限の最大数」パラメーターがtrueに設定されている場合にのみ使用可能です。このパラメーターは、すべての世代の属性の最大総数を指定します。 範囲:整数
- use_local_random_seedこのパラメーターは、ランダム化にローカルランダムシードを使用する必要があるかどうかを示します。同じ値のローカルランダムシードを使用すると、同じランダム化が生成されます。 範囲:ブール
- local_random_seedこのパラメータは、 ローカルランダムシードを指定します。このパラメーターは、 ローカルシードの使用パラメーターがtrueに設定されている場合にのみ使用できます。 範囲:整数
- show_stop_dialogこのパラメーターは、最適な機能スペースの検索を停止する停止ボタンのあるダイアログを表示するかどうかを決定します。最適なフィーチャスペースの検索が停止されると、それまでに見つかった最適な個人が返されます。 範囲:ブール
- maximal_fitnessこのパラメーターは、最大適合度を指定します。適合度がこの値に達すると、最適化は停止します。 範囲:実数
- population_sizeこのパラメータは、母集団のサイズ、つまり世代ごとの個体数を指定します。 範囲:整数
- maximum_number_of_generationsこのパラメーターは、アルゴリズムを終了するまでの世代数を指定します。 範囲:整数
- use_plusこのパラメーターは、新しい属性の生成に加算関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_diffこのパラメーターは、新しい属性の生成に差分関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_multこのパラメーターは、新しい属性の生成に乗算関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_divこのパラメータは、除算関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- reciprocal_valueこのパラメーターは、新しい属性の生成に逆関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_early_stoppingこのパラメーターは、早期停止を有効にします。 trueに設定されていない場合、常に最大世代数が実行されます。 範囲:ブール
- generations_without_improvalこのパラメーターは、 早期停止パラメーターの使用がtrueに設定されている場合にのみ使用できます。このパラメーターは、早期停止の停止基準を指定します。つまり、パフォーマンスを改善せずにn世代後に停止します。 nはこのパラメーターで指定されます。 範囲:整数
- tournament_sizeこのパラメーターは、トーナメントメンバーとして使用される現在の人口の割合を指定します。 範囲:実数
- start_temperatureこのパラメーターは、スケーリング温度を指定します。 範囲:実数
- dynamic_selection_pressureこのパラメーターをtrueに設定すると、完全な最適化の実行中に選択圧力が最大に増加します。 範囲:ブール
- keep_best_individual trueに設定されている場合、各世代の最高の個人が次の世代に選択されることが保証されます。 範囲:ブール
- p_initialize属性がオンになる初期確率は、このパラメーターによって指定されます。 範囲:実数
- p_crossover個人が交差のために選択される確率は、このパラメーターによって指定されます。 範囲:実数
- crossover_typeこのパラメーターにより、クロスオーバーのタイプを選択できます。 範囲:選択
- use_heuristic_mutation_probabilityこのパラメーターがtrueに設定されている場合、突然変異の確率は1 / n ( nは属性の数)として選択されます。それ以外の場合、突然変異の確率は、 p突然変異パラメーターRange:booleanで指定する必要があります
- p_mutation属性が変更される確率は、このパラメーターで指定されます。 -1に設定すると、確率は1 / nに設定されます。nは属性の総数です。 範囲:実数
- use_square_rootsこのパラメーターは、平方根関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_power_functionsこのパラメーターは、(ある属性から別の属性への)電力関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_sinこのパラメーターは、新しい属性の生成にサイン関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_cosこのパラメーターは、新しい属性の生成にコサイン関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_tanこのパラメーターは、タンジェント関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_atanこのパラメーターは、新しい属性の生成に逆正接関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_expこのパラメーターは、指数関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_logこのパラメーターは、対数関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_absolute_valuesこのパラメーターは、新しい属性の生成に絶対関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_minこのパラメータは、新しい属性の生成に最小関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_maxこのパラメーターは、新しい属性の生成に最大関数を適用する必要があるかどうかを示します。 範囲:ブール
- use_sgnこのパラメーターは、signum関数を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- use_floor_ceil_functionsこのパラメーターは、床と天井の機能を新しい属性の生成に適用する必要があるかどうかを示します。 範囲:ブール
- restrictive_selectionこのパラメーターは、制限ジェネレーター選択を使用する必要があるかどうかを示します。このパラメーターがtrueに設定されている場合、通常実行は高速です。 範囲:ブール
- remove_uselessこのパラメーターは、 不要な属性を削除する必要があるかどうかを示します。 範囲:ブール
- remove_equivalentこのパラメーターは、同等の属性を削除する必要があるかどうかを示します。 範囲:ブール
- equivalence_samples n個のサンプルがチェックされ、同等性が証明されます。nはこのパラメーターの値です。 範囲:整数
- equivalence_epsilon 2つの属性は、それらの差がイプシロンより大きくない場合、同等と見なされます。 範囲:実数
- equivalence_use_statisticsこのパラメーターをtrueに設定すると、等価チェックの前に属性統計が再計算されます。 範囲:ブール
- used_functionsこのパラメーターは、属性構築の引数で許可されていない関数のスペース区切りリストを指定します。 範囲:文字列
- constant_generation_probこのパラメーターは、ランダム定数属性が生成される確率を指定します。 範囲:実数
- associative_attribute_mergingこのパラメーターは、クロスオーバー後に後処理を実行するかどうかを指定します。ジェネレーターが1つしかない場合にのみ実行できます。 範囲:ブール
チュートリアルプロセス
多項式データセットにYAGGA2を適用する
「多項式」データセットは、Retrieve演算子を使用してロードされます。 ExampleSetを見ることができるように、ブレークポイントがここに挿入されます。 ExampleSetには、label属性以外に5つの通常の属性があることがわかります。世代別最適化(YAGGA2)演算子は、ExampleSetに適用されます。これはネストされた演算子です。つまり、サブプロセスがあります。サブプロセスは、基礎となる遺伝的アルゴリズムで使用されるパフォーマンスベクトルを提供する必要があります。この演算子のサブプロセスを見てください。そこでは、それ自体がネストされた演算子である分割検証演算子が使用されます。 Split Validationオペレーターのサブプロセスをご覧ください。線形回帰演算子は、モデルをトレーニングするために「トレーニング」サブプロセスで使用されます。トレーニング済みモデルは、「テスト」サブプロセスの「モデルの適用」演算子を使用して適用されます。パフォーマンスは、パフォーマンス(回帰)演算子を使用して測定され、結果のパフォーマンスベクトルは、基になるアルゴリズムによって使用されます。プロセスを実行し、結果ワークスペースに切り替えます。 5つの属性を持っていたExampleSetが7つの属性を持っていることがわかります。すべての属性は元の属性セットから選択され、属性「gensym5」および「gensym6」が生成されました。 YAGGA2は属性削減演算子ではないため、結果の属性の数は元の属性の数より少なくなりません。より良い適合性があることが証明されたものに応じて、属性の数を増減する場合があります(またはしない場合があります)。