Optimize Weights (Evolutionary)
概要
この演算子は、進化的アプローチを使用して、指定されたExampleSetの属性の関連性を計算します。属性の重みは、遺伝的アルゴリズムを使用して計算されます。
詳細
重みの最適化(進化)演算子はネストされた演算子です。つまり、サブプロセスがあります。重みの最適化(進化)演算子のサブプロセスは、常にパフォーマンスベクトルを返す必要があります。サブプロセスに関する詳細については、サブプロセス演算子をご覧ください。重みの最適化(進化)演算子は、遺伝的アルゴリズムを使用して、指定されたExampleSetの属性の重みを計算します。属性の重みが大きいほど、より関連性が高いと見なされます。
遺伝的アルゴリズム(GA)は、自然進化のプロセスを模倣する検索ヒューリスティックです。このヒューリスティックは、最適化と検索の問題に対する有用なソリューションを生成するために日常的に使用されます。遺伝的アルゴリズムは、より大きなクラスの進化的アルゴリズム(EA)に属し、継承、突然変異、選択、クロスオーバーなどの自然進化にヒントを得た手法を使用して、最適化問題の解決策を生成します。
遺伝的アルゴリズムでは、「突然変異」は機能のオンとオフを切り替えることを意味し、「クロスオーバー」は使用された機能を交換することを意味します。選択は、 選択スキームパラメータによって選択される指定された選択スキームによって行われます。遺伝的アルゴリズムは次のように機能します。
p個の個人で構成される初期集団を生成します。数pは、 母集団サイズパラメーターによって調整できます。
母集団のすべての個人に対して突然変異を実行します。つまり、使用される属性を確率p_mで未使用に設定します。逆も同様です。確率p_mは、対応するパラメーターによって調整できます。母集団から2人の個人を選択し、確率p_cでクロスオーバーを実行します。確率p_cは、 p crossoverパラメーターによって調整できます。クロスオーバーのタイプは、 クロスオーバータイプパラメーターによって選択できます。選択を実行し、フィットネスに応じてすべての個体をマッピングし、確率に応じてp個の個体をランダムに描画します。pは、個体数パラメーターで調整できる個体数です。フィットネスが改善する限り、ステップ2に進みます。
ExampleSetにブロック番号付きの値シリーズ属性が含まれている場合、ブロック全体のオンとオフが切り替わります。テストする組み合わせの属性の正確な数、最小数、または最大数は、適切なパラメーターで指定できます。この演算子では、他の多くのオプションも利用できます。詳細については、パラメータのセクションをご覧ください。
入力
- 設定された例(IOObject)この入力ポートには、ExampleSetが必要です。このExampleSetは、サブプロセスで処理するために、ネストされたチェーンの最初のポート(サブプロセス内)で使用できます。
- (平均ベクトル)の 属性の重みこのポートは属性の重みを想定しています。このポートを使用することは必須ではありません。
- スルー (IOObject)このオペレーターは複数のスルーポートを持つことができます。 1つの入力がスルーポートに接続されると、別のスルーポートが使用可能になり、別の入力(ある場合)を受け入れる準備が整います。入力の順序は同じままです。この演算子の最初のスルーポートで提供されるオブジェクトは、ネストされたチェーンの最初のスルーポート(サブプロセス内)で利用できます。すべての入力を正しい順序で接続することを忘れないでください。サブプロセスレベルで適切な数のポートが接続されていることを確認してください。
出力
- 設定例(IOObject)遺伝的アルゴリズムは、入力ExampleSetに適用されます。縮小された属性を持つ結果のExampleSetは、このポート経由で配信されます。
- 重み(平均ベクトル)属性の重みは、このポートを介して配信されます。
- パフォーマンス(パフォーマンスベクトル)このポートは、選択した属性のパフォーマンスベクトルを提供します。パフォーマンスベクトルは、パフォーマンス基準値のリストです。
パラメーター
- population_sizeこのパラメータは、母集団のサイズ、つまり世代ごとの個体数を指定します。 範囲:整数
- maximum_number_of_generationsこのパラメーターは、アルゴリズムを終了するまでの世代数を指定します。 範囲:整数
- use_early_stoppingこのパラメーターは、早期停止を有効にします。 trueに設定されていない場合、常に最大世代数が実行されます。 範囲:ブール
- generations_without_improvalこのパラメーターは、 早期停止パラメーターの使用がtrueに設定されている場合にのみ使用できます。このパラメーターは、早期停止の停止基準を指定します。つまり、パフォーマンスを改善せずにn世代後に停止します。 nはこのパラメーターで指定されます。 範囲:整数
- normalize_weightsこのパラメーターは、最終的な重みを正規化する必要があるかどうかを示します。 trueに設定すると、最大の重みが1、最小の重みが0になるように最終的な重みが正規化されます。 範囲:ブール値
- use_local_random_seedこのパラメーターは、ランダム化にローカルランダムシードを使用する必要があるかどうかを示します。同じ値のローカルランダムシードを使用すると、同じランダム化が生成されます。 範囲:ブール
- local_random_seedこのパラメータは、 ローカルランダムシードを指定します。このパラメーターは、 ローカルシードの使用パラメーターがtrueに設定されている場合にのみ使用できます。 範囲:整数
- show_stop_dialogこのパラメーターは、最適な機能スペースの検索を停止する停止ボタンのあるダイアログを表示するかどうかを決定します。最適なフィーチャスペースの検索が停止されると、それまでに見つかった最適な個人が返されます。 範囲:ブール
- user_result_individual_selectionこのパラメーターがtrueに設定されている場合、ユーザーは最後の母集団から最終結果の個人を選択できます。 範囲:ブール
- show_population_plotterこのパラメーターは、現在の人口をパフォーマンススペースに表示するかどうかを決定します。 範囲:ブール
- population_criteria_data_fileこのパラメーターは、最終母集団の基準データを保存するファイルへのパスを指定します。 範囲:ファイル名
- maximal_fitnessこのパラメーターは、最大適合度を指定します。適合度がこの値に達すると、最適化は停止します。 範囲:実数
- selection_schemeこのパラメーターは、この進化的アルゴリズムの選択スキームを指定します。 範囲:選択
- tournament_sizeこのパラメーターは、 選択スキームパラメーターが「トーナメント」に設定されている場合にのみ使用できます。トーナメントメンバーとして使用される現在の人口の割合を指定します。 範囲:実数
- start_temperatureこのパラメーターは、 選択スキームパラメーターが ‘Boltzmann’に設定されている場合にのみ使用できます。スケーリング温度を指定します。 範囲:実数
- dynamic_selection_pressureこのパラメーターは、 選択スキームパラメーターが「Boltzmann」または「tournament」に設定されている場合にのみ使用できます。 trueに設定すると、完全な最適化の実行中に選択圧力が最大に増加します。 範囲:ブール
- keep_best_individual trueに設定すると、各世代の最高の個人が次の世代に選択されることが保証されます。 範囲:ブール
- save_intermediate_weightsこのパラメーターは、中間の最良の結果を保存する必要があるかどうかを決定します。 範囲:ブール
- intermediate_weights_generationsこのパラメーターは、 save intermediate weightsパラメーターがtrueに設定されている場合にのみ使用できます。中間の最良の結果は、 k世代ごとに保存され、 kはこのパラメーターで指定されます。 範囲:整数
- intermediate_weights_fileこのパラメーターは、中間の重みを保存するファイルを指定します。 範囲:ファイル名
- mutation_varianceこのパラメーターは、各突然変異の(初期)分散を指定します。 範囲:実数
- 1_5_ruleこのパラメーターは、分散適応に1/5ルールを使用するかどうかを決定します。 範囲:ブール
- bounded_mutationこのパラメーターがtrueに設定されている場合、重みは0〜1の範囲に制限されます。 範囲:ブール
- p_crossover個人がクロスオーバーのために選択される確率は、このパラメーターによって指定されます。 範囲:実数
- crossover_typeこのパラメーターにより、クロスオーバーのタイプを選択できます。 範囲:選択
- use_default_mutation_rateこのパラメーターは、名目上の属性にデフォルトの突然変異率を使用するかどうかを決定します。 範囲:ブール
- nominal_mutation_rateこのパラメーターは、ノミナル属性を0と1の間で切り替える確率を指定します。 範囲:実数
- initialize_with_input_weightsこのパラメーターは、このオペレーターが指定された入力で属性の重みを探し、それらを最適化の開始点として使用するかどうかを示します。 範囲:ブール
チュートリアルプロセス
多項式データセットの属性の重みを計算する
「多項式」データセットは、Retrieve演算子を使用してロードされます。 ExampleSetを見ることができるように、ブレークポイントがここに挿入されます。 ExampleSetには、label属性以外に5つの通常の属性があることがわかります。重みの最適化(進化)演算子は、ネストされた演算子であるExampleSetに適用されます。つまり、サブプロセスがあります。サブプロセスがパフォーマンスベクトルを提供する必要があります。このパフォーマンスベクトルは、基になる遺伝的アルゴリズムによって使用されます。この演算子のサブプロセスを見てください。そこでは、分割検証演算子が使用されており、それ自体がネストされた演算子です。 Split Validationオペレーターのサブプロセスをご覧ください。 SVMオペレーターは、モデルをトレーニングするための「トレーニング」サブプロセスで使用されます。トレーニング済みモデルは、「テスト」サブプロセスの「モデルの適用」演算子を使用して適用されます。パフォーマンスは、Performanceオペレーターを介して測定され、結果のパフォーマンスベクトルは、基礎となるアルゴリズムによって使用されます。プロセスを実行し、結果ワークスペースに切り替えます。 5つの属性を持っていたExampleSetが2つの属性に削減されていることがわかります。また、結果ワークスペースで属性の重みを確認します。 2つの属性の重みは1で、残りの属性の重みは0であることがわかります。