BRT 分析を使用してモデルを適合およびテストしようとしていますが、完全な分離のエラーが発生し続けます。この問題を克服するために複数の方法を試みましたが、役に立ちませんでした。私は、logestf によるペナルティ付き回帰の形式を利用し、モデルにベイジアン プライオリティを配置し、オーバーフィッティングの原因と思われる変数を省略し、log1p を使用してすべての歪んだ予測変数を変換し、2013 年の Coadou に従って完全に無視しました ( http:// www.epj-conferences.org/articles/epjconf/pdf/2013/16/epjconf_sos2012_02004.pdf ) は、BRT トレーニング モデルのオーバーフィッティングは大きな問題にはならないという提案をしています。
彼女の記事では、トレーニング データの完全な適合につながるツリーは、テスト サンプルの最終的なブースティング出力にほとんど寄与していないと述べています。ただし、完全な分離を無視して評価データを予測しようとしても (モデルを 2000 ポイントに適合させ、残りの 11,141 ポイントでテストしようとしています)、プロットが空白になります (Elith et al の図 2)。 . 2008)。
私が読んだ記事の中で、特に BRT での完全な分離を克服するための解決策について議論しているものはありません。そのため、私が気付いていないこの問題に対する別の解決策があるのではないかと思います。
バイナリ応答変数と 16 の共変量を持つ非常に大きなデータセット (13,141 ポイント) があります。また、共変量を 5 つだけ使用してモデルを適合させようとしたところ、同じ問題が発生しました。どんな助けでも大歓迎です。アイデアを提供するために、データの先頭を添付しました。
Hotspot_Resp Dist_Build Dist_River Dist_Road Dist_Underpro Aspect
0 935 1074 18396 335 303.69
0 893 1112 18355 299 176.50
0 884 1133 18335 298 176.50
0 849 1208 18261 297 175.10
0 856 1216 18254 310 175.10
0 1212 1501 18021 827 215.54
Soil_Type OPP_Class Elevation Dist_Forest Build_Density Dist_Fence
2 1 3.218876 5.659482 9.360116 8.180601
2 1 2.995732 5.673323 9.360116 8.179480
2 1 2.995732 5.730100 9.360116 8.174985
2 1 2.079442 5.908083 9.360116 8.161090
2 1 2.079442 5.945421 9.360116 8.156797
2 1 2.564949 6.523562 9.254766 7.988204
DistGC Dist_Clear Slope Canopy_Cov No_Canopy
5.424950 0 1.0152307 0 3
5.204007 0 1.4678743 0 3
5.117994 0 1.4678743 0 3
4.753590 0 1.5748465 0 3
4.804021 0 1.5748465 0 3
5.863631 0 0.9895412 0 3
うるさい変数名を許してください!私の応答変数 'Hotspot_Resp' はバイナリです。「Canopy_Cov」、「No_Canopy」、「Soil_Type」、「OPP_Class」はカテゴリ変数です。これらの変数の多くは log1p または log 変換されていますが、簡単にするために、ここでは元の列名を保持しています。
何をしようとしても、次のモデルを当てはめようとするたびに:
gbm.step(data=training.model1, gbm.x=2:16, gbm.y=1,
family="bernoulli", tree.complexity=5, learning.rate=0.01,
bag.fraction=0.5)
交差検証プロセスを実行しますが、次のようになります。
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
注意: Elith らによる最初のステップの 1 つ。BRT の 2008 年のチュートリアルでは、応答変数の合計を確認します。これを実現する唯一の方法は、Hotspot_Resp を数値に設定し、中間ステップで文字に設定することでした。Hotspot_Resp が数値に設定されている場合、モデルのフィッティングを正常に実行できます (ただし、完全に分離されています)。ただし、factor に設定すると、次のように表示されます。
Error in while (delta.deviance > tolerance.test & n.fitted < max.trees) { :
missing value where TRUE/FALSE needed
In addition: There were 44 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In mean.default(y.data) : argument is not numeric or logical: returning NA
2: In Ops.factor(y.data, site.weights) : '*' not meaningful for factors
もう一度、あなたが提供できる助けや洞察を前もってどうもありがとうございました!!