2016-03-27 3 views
0

最近、mboostを使用して、大量の独立変数を取り、有用な予測変数を特定しています。例えば:私はそれを理解するようR mboostの独立変数の相互作用を測定する

library(mboost) 
xx=glmboost(data=mtcars,mpg~.) 

、アルゴリズムは、別々に各従属変数を扱うと、勾配プロセスを通じて、重要な予測因子を特定しようとします。

しかし、多少複雑な相互作用があります。おそらくcylの効果は、wtが増加するので、それほど重要ではありません。それは直感的に理解できます。 12サイクルの小型車はスポーツカーのようなもので、その時点での非効率なmpgのドライバーはcylです。しかし、トラックのために、それは本当に低mpgのドライバーである体重です。

mboostやその他のブースティングアルゴリズムを使用するときに、変数の(多分非線形の)相互作用効果をどのように扱いますか?

説明できないNNモデルまたはフォレストモデルへの道のりを望んでいません。これを処理するより良い方法はありますか?

私はブースティングアプローチが本当に好きです。その上の論文は読みやすく、結果は正常な人間にとって理解できるようです。しかし、あなたは相互作用があるときに完璧ではないフィット感が得られるようです。

おかげで、ジョシュ

+0

(おそらく手の込んだ?)を確認してください、これは具体的な実装の問題ではなく、方法論であること。 –

+0

まあ、私はそれぞれの少しを推測します。たぶん私はそれが間違っている? – JoshK

+0

GBMまたはXGBoostパッケージを見ましたか?基本学習者にGLMを使用する必要がありますか?木は非常に柔軟です。 – Zelazny7

答えて

1

はちょうどそうのようなすべての2次までの交互作用を検討するために式を教えて:

library(mboost) 
xx=glmboost(data=mtcars,mpg~.*.) 

> xx 

    Generalized Linear Models Fitted via Gradient Boosting 

Call: 
glmboost.formula(formula = mpg ~ . * ., data = mtcars) 


    Squared Error (Regression) 

Loss function: (y - f)^2 


Number of boosting iterations: mstop = 100 
Step size: 0.1 
Offset: 20.09062 

Coefficients: 
    (Intercept)   wt  cyl:wt  disp:am  hp:drat  hp:qsec   hp:vs  drat:wt 
5.4682615930 -0.7166140321 -0.1962980466 -0.0016453733 -0.0002571366 -0.0010587752 -0.0099340044 -0.0889320001 
    drat:qsec  drat:carb  qsec:gear  qsec:carb   vs:am 
0.0332626627 -0.0333151844 0.0450134161 -0.0026624244 3.1278334260 
attr(,"offset") 
[1] 20.09062 
+0

共線性の潜在的な問題を減らすために、これを行う前に変数をセンタリングすることを検討してください。 –

+0

ありがとうございます。私はそれが何か簡単でなければならないことを知っていた。さて、あなたは双方向のやりとりをしたら、どうやって動くのですか? 'cyl:wt'と同様に、式の観点からはどういう意味ですか? 'cyl'が6、' wt'が3000の場合、-1.19629は実際に式を使用するときに何倍になりますか? – JoshK

+0

私はドキュメントの中で、デフォルトのブーストコントロールがlibにあなたのためにデータを集中させると思っていましたが、それは間違っていますか? – JoshK

関連する問題