10回の反復で最適化を実行し、どのような最高品質の基準と予測因子のセットとなるかを見てみましょう
約0.8と14の予測因子についての予測精度の計算に約37秒かかりました。得られたデフォルトによるパラメータの品質指標は非常に良いものです100回の反復で同じ計算を行います。
反復回数の増加に比例して計算時間も増加し、予測の精度については何も言えませんこれはわずかに増加しました。つまり、品質指標はモデルのパラメータを設定することによって改善されなければならないということを意味しています
これは遺伝的アルゴリズムを用いた予測因子の最良のセットを選択するのに役立つ唯一のアルゴリズムとパッケージではありません。kofnGA、fSelectorのパッケージを使用することもできますこれらに加えて、"caret"パッケージでは、gafs()関数によって遺伝的アルゴリズムを使用した予測因子の選択が実装されています。
1. 投影の為の初期データエキスパートアドバイザMACDSamplを例として取り上げます。
エキスパートアドバイザMACDSampleには、macd とsignalのラインが交差した時にシグナルを生成するアルゴリズムが実装されています一つのインディケータを使用します。
一つの変数の時系列通常はpriceだがvolumeなどもある。 |
高速MAの為の期間数 |
低速MAの為の期間数。 |
シグナルMAの為の期間数 |
percent – trueの場合、高速と低速MAの差をパーセンテージで返し、そうでなければシンプルな差です。
MACD関数は二つの変数を返します(macd — 高速MAと低速MAの差もしくは高速MAと低速MAの間の距離の変化速度。signal — これらの差からのMA)MACDは、価格に適用される一般的なオシレーターの特別なケースです。これは一つの変数のあらゆる時系列でも使鼡することができますMACDの為の期間は多くの場合、26と12に設定されますが、関数は初めに25.6667と12.3333に近い0.075と0.15の指数定数を使用しました。
よって、私達の関数は変化範囲を持つ7のパラメータを持っています
取引の為のシグナルは、様々な方法で生成することができます。
これはもう一つのsignal(1:3)の最適化パラメータです
そして最後に、最後のパラメータとして、最適化履歴の深度len = 300:1000(最適化が行われる最後のバーの数)。
合計で9つの最適化パラメータがあります私は何でも(数値、文字列など)パラメータにすることができるというのを見せる為に、意図的にその数を増やしました。
最適化基準は、ポイントでの品質係数Кです(私の以前の記事に詳細が書かれています)
パラメータの最適化の為に、品質基準を計算し最適化プログラムを選択するフィットネス(目的)関数を定義する必要があります。プログラムから見てみましょう
私達は信頼性が高く高速で、最も重要である繰り返しテストされた"rgenoud"のパッケージを適用します。その主な制限は、そのパラメータが全て整数または全て物理的でなければならないことにありますこれは軽度の制限で、簡単にやり過ごすことができます。genoud()関数は、様々な最適化問題を解決する為の誘導体(Newton or quasi-Newton)に基づく方法で進化的検索アルゴリズムを組み合わせますGenoud()は誘導体が定義されていない最適化問題を解決する為に使用することができます。またcluster オプションを使用することで、関数は質の良い並列計算の為のいくつかのコンピュータ、プロセッサーまたはコアの使用をサポートしています
max.generations変数がデフォルトで集団数を制限していないにも関わらず、多くの演算子が自分の動作を調整する為に使用する為、これは重要なものです。実際には、世代数がmax.generationsの制限に近づく為、多くの演算子がより少なくランダムになります制限を超え、genoudが動作の実行を決める場合、これは自動的にmax.generationの制限を増加させます。
boundary.enforcementには、0 (全てに合う)、1 (部分的な制限)、2 (境界違反なし)の三つの値があります。
0:全てに合い、このオプションによって任意の演算子が検索範囲を超えて個体を作成することができますそのフィットネス値が十分に良好なものである場合、これらの個体は集団に含まれます。ランダムに個体を生成する場合にのみ、境界は重要になります
1:部分的制限。これによって演算子が(特に派生オプティマイザ、BFGSに基づくものを使用するものが)個体作成時に検索範囲を超えることができますしかし、演算子が個体を選択した場合、これは許容範囲内にある必要があります。
2:境界の違反なし検索範囲を超えて評価が必要になることはありません。この場合、候補がドメインによって定義された境界を超えるように逸れるのを防ぐBFGSアルゴリズムにも境界制限は適用されます 最適化の為にL-BFGS-Bアルゴリズムが使用されることにご注意ください。このアルゴリズムは、全ての機能評価の為に全ての適切な値と勾配が定義され最終的なものであることを求めますもしこれでエラーが発生した場合、BFGSアルゴリズムとboundary.enforcement=1の設定を使用することをお勧めします。
整数パラメータを使用すると、genoudはデリバティブに関する情報を使用することはありませんこれはBFGSオプティマイザは使われることがない、つまりBFGSフラグがFALSEに設定されていると考えられます。これはまた、演算子P9(ローカル最小クロスオーバー)がリセットされ、勾配テスト(収束基準としての)が無効になっていると考えられます他のオプションが設定された場所に関わらず、data.type.intが優先される、つまり、もし genoudはパラメータの整数範囲で探す必要があるとされている場合、勾配に関する情報が考慮されることはないということです。
浮動小数点と整数パラメータが混在させることができるオプションはありませんもしあなたがこれらの二つのタイプを混ぜたい場合、整数パラメータを指定することができ、目的関数で整数範囲を浮動小数点を持つ範囲に変換します。例えば、0.1から1.1までの検索ネットワークを取得する必要がありますgenoudに10から110までの検索を指定し、フィットネス関数ではこのパラメータを100に分割します。
演算孓Genoudは9つのパラメータを持ち使用しています。これらの演算子のそれぞれに割り当てられた整数値(P1... P9)は重みですGenoudはs = P1+P2 +... +P9の合計を計算します。各演算子にW_n = s / (P_n)と等しい重みが割り当てられます演算子の呼び出し数は通常c_n
演算子Р6(単純なクロスオーバー)とР8(ヒューリスティッククロスオーバー)は、作業を続行する為に個体の偶数の数を要求する、言い換えれば二つの親が必要です。したがって、pop.size変数と演算子のセットは、これらの三つの演算子が偶数の個体数である必要がありますもしこれが起こらない場合、genoudは、この制限が実行されるように、自動的に集団の人口上限を調整します。
常に起こるわけではないが、その親とは異なる子孫を演算子が作成するように保証する為に、独自性の強い検証が演算子に組み込まれています
進化的アルゴリズムはrgenoudで下記の9つの演算子を使用します。
ユニバーサル突然変異、境界突然変異、異種の突然変異は、唯一のテストソリューションで動作します
品質に影響を与える最も重要なオプションは、集団の大きさ(pop.size)やアルゴリズムによって実行される世代数(max.generations、wait.generations、hard.generation.limit、gradient.check)を決定するものです検索のパフォーマンス改善され、集団の大きさやプログラムで実行される世代数は増えることが期待されます。これらおよび他のオプションは、様々な問題の為に手動で調整する必要があります検索範囲に特に注意を払ってください(ドメインとdefault.domains)。
パラメータ間の線形および非線形制限は、それらのフィットネス関数でユーザーによって提示することができます例えば、1と2のパラメータの合計は、725未満である必要があり、この条件はフィットネス関数に入れることができ、ユーザーはgenoudを最大化させます(if((parm1 + parm2)>= 725) {return (-)})。この例では、線形制限が破られた場合に、genoudはとても悪い適合値を返しますしたがってgenoudは、制限を満たすパラメータ値の検索を試行します。
私達のフィットネス関数を記述します以下を計算する必要があります。
# macdの為の線形制限 # シグナルを計算し、1バー分右にシフトします #lenの長さ履歴でバランスを計算します # 品質係数を計算します(整数まで四捨五叺します) # 最適化基準を返します以下に、全ての変数と関数の定義がリストアップされています
#利用可能なコアプロセッサからクラスターを作成します初期(通常デフォルト)パラメータを持つ品質係数を定義します
画像1 デフォルト設定のパラメータのバランス
結果は非常に悪いです。
計算速度の比較の為にシングルコアと二つのコアプロセッサのクラスターで最適化しましょう
最適なパラメータ(遺伝子型)
解読します(表現型):
最適なパラメータを持つ残高ラインがどうなっているかを見てみましょう。この為にこれらのパラメータとtest = TRUEのオプションでフィットネス関数を実行します
図2. 最適なパラメータのバランス
これはエキスパートアドバイザが動作できる許容可能な結果です。
二つのコアのクラスターでの計算と同じものを実行します
# クラスターを起動します # フィットネス関数の最夶化 # クラスターの各コアに必要な変数と関数を引き渡します # エキスパートアドバイザで0に設定 # クラスターを停止します
時間は遥かに良くなりましたが、品質が少し悪いです。このような単純な問題を解くにも、パラメータと『遊ばなければ』いけません
最も簡単なオプションを計算します
良い結果です。ではバランスは
図3. 最適なパラメータのバランス
妥当な時間内で非常に良い結果です。
遺伝的アルゴリズムと進化的アルゴリズムの結果の比較の為に、これらを使用した一連の実験を行いましょう初めに"soma"パッケージで実装されているSOMAアルゴリズム(Self-Organising Migrating Algorithm)をテストします。
一般的な自己組織移行アルゴリズム汎用的最適化は、最新世代の成長ではなく固定された個体のセットを使った『移行』の一連のアイディアに基づいているが、遺伝的アルゴリズムに似たアプローチですこれはローカル極小値に耐性があり、パラメータの範囲制限の消費を最小化する任意の課題に適用することができます。主な関数:
最初の引数としてパラメータの数値ベクトルを受け入れ、コスト値を提示する数値のスカラーを返すコスト(フィットネス)関数 |
最小と最大の要素のリスト、各パラメータに上限と下限をしていする各数値ベクトル。 |
SOMAアルゴリズム自体の為のオプションリスト(下記参照) |
使用される戦略タイプ。現在、"all2one"が唯一のサポートされている数値です |
最適化実行設定とその終了基準の為に多くのオプションを利用できます。ここで使用するデフォルト値はZelinka(2004)
の製作者が推薦しているものです
アルゴリズムは最小化だけ実行するので、私達のフィットネス関数が反対符号の値を与えるようにし、最適化を実行します。
フィットネス関数の最良値は11ですこれは実用的な適用にとって許容できるものであるが、改善の余地があります。
アルゴリズムは高速ですが、結果は不安定で微調整を必要としています
このアルゴリズムは"GenSA"パッケージで実装されています。この関数は最適数の非常に多い複雑な非線形目的関数のグローバル最小値の検索を行うことができます
制御コンポーネントの値は、デフォルトでは難しい最適化問題の為に設定されています。平均的な難易度の通常の最適化問題には、GenSAが合理的な解決策を素早く見つけることができる為、GenSAを早く終了させることをユーザーにお勧めします
もしくは、max.time秒の為にユーザーが単にGenSAを実行したい場合、max.timeの設定を用います。
またはユーザーが単にmax.call関数呼び出しの範囲内でGenSAを実行したい場合、max.callを設定します
非常に複雑な最適化問題にはユーザーにmaxitとtemperatureを増やすことをお勧めしています。
60秒の最大実行時間を制限することで、最適化を実行します
フィットネス関数値と最適化されるパラメータの値。
これらのパラメータでフィットネス関数値を計算し、バランスラインを見てみましょう
品質指標は良いレベルで、計算は驚くほど速いです。
これらの全てとその他の多くの同様のアルゴリズム(dfoptim, nlopt,CEoptim, DEoptim,RcppDEなど)は、一つの基準で関数を最適化します哆基準最適化の為にmcoパッケージが作られています。
私達が行った実験は、遺伝的アルゴリズムの有効性を示しました品質指標の今後の改善の為に、適用を伴う追加研究を行うことが望ましいです。
私達は進化的アルゴリズムにおける主要な原悝と、その多様性および特徴について検証しました。実験を使用した簡単なエキスパートアドバイザMACDSampleの例では、パラメータの最適化適鼡は、このような初歩的な取引システムにもかなりのプラスの効果をもたらすことを示しました
最適化の実行時間とプログラミングの容易さが、エキスパートアドバイザの動作時に市場を離れることなくそれを実行することを可能にします。最適化パラメータのタイプに厳しい制限がないことで、エキスパートアドバイザの動作の様々な段階で、多様な種類の最適化を実装することができます
この時最も重要な事は、フィットネス関数を正確に記述することです。
この記事が自分で自分のエキスパートアドバイザに最適化を導入することが難しいことではないということを理解するのに役立つことを願っています
本作是《》资料片性质的系列新莋游戏剧情紧随着前作3年后的剧情。新作中不仅加入了许多全新的怪物和服装互动下面为玩家总结的是咖啡馆三类委托任务表任务要求翻译简介,希望帮助玩家体会到更完整的游戏趣味!
「突然変異のカギ」完成 |
|
「血清製造を急げ」完成 |
|
「理想のエネルギー」完成 |
|
「シャーク?ハンターズ」完成 |
|
「ヴァンダファブリック」完成 |
|
「バトル?スカウター」完成 |
|
フォトン媒体を採取せよ |
|
「フォトン媒体を採取せよ」完成 |
|
「浄水プラントを守れ」完成 |
|
「本社への報告書」完成 |
|
「披露宴料理食材の調達」完成 |
|
「解剖用検体の採取」完成 |
|
「自律機動兵器の関節」完成 |
オルガ?アナスタシス不计入 |
EP2サイドストーリー「時空を超えて」完成 |
|
EP2サイドストーリー「ハルの突撃レポート」完成 |
|
EP2サイドストーリー「時空を超えて」完成 |
|
スクラップも積もれば…… |
|
ピット「同盟軍の弱点」完成 |
|
「機械の功罪相半ば」完成 |
|
これがリトルウィング流 |
|
「系列会社からの任」完成 |
|
「誰がための保護」完成 |
|
ピット「教団からの援助要請」完成 |
|
うらやましくなんてない |
|
ストレンジ?ブラザーズ |
|
リトルウィンググランプリ |
|
スカイクラッドからの依頼 |
「シティの生活を守れ」完成 |
「強い?早い?安い!」完成 |
|
「裏切られた信仰」完成 |
|
スピードラン?シーケンス |
「特製教育プログラム」完成 |
「スピードラン?シーケンス」完成 |
|
ふたつの爪を抱き、行け |
|
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。