1

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

もう一度、あなたが提供できる助けや洞察を前もってどうもありがとうございました!!

4

0 に答える 0