私はPythonで訓練されたXGBoostバイナリクラシファイアモデルを持っています。XGBoostライブラリなしでXGBoost出力を生成する方法は?
純粋な数学演算を使用し、XGBoostライブラリ(.predict)を使用せずに、別のスクリプト環境(MQL4)で新しい入力データ用の出力を作成したいと考えています。
誰でも式やアルゴリズムを手助けできますか?
私はPythonで訓練されたXGBoostバイナリクラシファイアモデルを持っています。XGBoostライブラリなしでXGBoost出力を生成する方法は?
純粋な数学演算を使用し、XGBoostライブラリ(.predict)を使用せずに、別のスクリプト環境(MQL4)で新しい入力データ用の出力を作成したいと考えています。
誰でも式やアルゴリズムを手助けできますか?
いくつかのリバースエンジニアリングの後、モデルが訓練されてから最初のテキストファイルにあなたのモデルをダンプ:
num_round = 3
bst = xgb.train(param, dtrain, num_round, watchlist)
bst.dump_model('D:/Python/classifyproduct.raw.txt')
次に、各ブースターの入力機能セットのための葉の確率を見つけます。すべてのこれらの確率を合計し、我々の場合には、バイナリロジスティック関数に送り込ま:
1/(1+exp(-sum))
これは、与えられた入力機能セットのためのxgboost訓練されたモデルの出力確率です。たとえば、2つの入力(aとb)のテキストファイルを含むサンプルダンプは、
booster[0]:
0:[b<-1] yes=1,no=2,missing=1
1:[a<0] yes=3,no=4,missing=3
3:[a<-2] yes=7,no=8,missing=7
7:leaf=0.522581
8:[b<-3] yes=13,no=14,missing=13
13:leaf=0.428571
14:leaf=-0.333333
4:leaf=-0.54
2:[a<2] yes=5,no=6,missing=5
5:[a<-8] yes=9,no=10,missing=9
9:leaf=-0.12
10:leaf=-0.56129
6:[b<2] yes=11,no=12,missing=11
11:leaf=-0.495652
12:[a<4] yes=15,no=16,missing=15
15:[b<7] yes=17,no=18,missing=17
17:leaf=-0.333333
18:leaf=0.333333
16:leaf=0.456
booster[1]:
0:[b<-1] yes=1,no=2,missing=1
1:[a<0] yes=3,no=4,missing=3
3:[b<-3] yes=7,no=8,missing=7
7:leaf=0.418665
8:[a<-3] yes=13,no=14,missing=13
13:leaf=0.334676
14:leaf=-0.282568
4:leaf=-0.424174
2:[a<2] yes=5,no=6,missing=5
5:[b<0] yes=9,no=10,missing=9
9:leaf=-0.048659
10:leaf=-0.445149
6:[b<2] yes=11,no=12,missing=11
11:leaf=-0.394495
12:[a<5] yes=15,no=16,missing=15
15:[b<7] yes=17,no=18,missing=17
17:leaf=-0.330064
18:leaf=0.333063
16:leaf=0.392826
booster[2]:
0:[b<-1] yes=1,no=2,missing=1
1:[a<0] yes=3,no=4,missing=3
3:[b<-3] yes=7,no=8,missing=7
7:leaf=0.356906
8:[a<-3] yes=13,no=14,missing=13
13:leaf=0.289085
14:leaf=-0.245992
4:leaf=-0.363819
2:[a<4] yes=5,no=6,missing=5
5:[a<2] yes=9,no=10,missing=9
9:[b<0] yes=15,no=16,missing=15
15:leaf=-0.0403689
16:leaf=-0.381402
10:[b<7] yes=17,no=18,missing=17
17:leaf=-0.307704
18:leaf=0.239974
6:[b<2] yes=11,no=12,missing=11
11:leaf=-0.308265
12:leaf=0.302142
です。入力として2つの機能があります。入力として[4,9]があるとしましょう。ブースター確率は次のように計算できます。
booster0 : 0.456
booster1 : 0.333063
booster2 : 0.302142
sum = 1.091205
1/(1+exp(-sum)) = 0.748608563
これだけです。
勇敢なアイデア。はい、** 'xgboost' **は最近人気が高まっている「セクシー」タグ付きエンジンです。だから**あなたはこれまでに何を試しました**そして**あなたのモデル統合はどのようにMQL4で動作しましたか?**あなたは既にMQL4がスクリプト環境ではなく**動的にリンクされたライブラリに依存するコード実行。 – user3666197
MQL4で動作するANNモデルがあり、まだXGBoostを統合できませんでした。私はANNといくつかの専門知識を持っていますが、XGBoostではそれほど優れていません。私はこれが4つの算術演算と、すべてのプラットフォームが持ついくつかの追加の数学関数を使って行うことができると信じています。 –
Pythonのxgboost-native環境から 'aTrainedXgbMODEL'をMQL4コードに移植する際に、モデルの実行について疑問はありません(MQL4側で' aClassXgbGUESS = aTrainedXgbMODEL.predict(aFeatureVEC);の形式) (オンライン学習機能拡張を実行しているモデルの必要性については言及していません)。したがって、プロダクショングレードのシステムは、「4つの算術演算」または「数式および/またはアルゴリズム」の観点からではなく、分散アーキテクチャの観点からは非常に要求されます。 – user3666197