xgboost RパッケージのQuality
列がxgb.model.dt.tree
関数でどのように計算されるのか誰かが説明できますか?xgboostの品質はどのように計算されますか?
ドキュメントでは、Quality
は「この特定のノードの分割に関連する利益です」と記載しています。あなたはこの関数のxgboostのマニュアルの次のコードを実行すると、
、ツリー0のノード0のためのQuality
は4000.53で、まだ私は計算し、私はGain
が与えられていることを理解Gain
data(agaricus.train, package='xgboost')
train <- agarics.train
X = train$data
y = train$label
bst <- xgboost(data = train$data, label = train$label, max.depth = 2,
eta = 1, nthread = 2, nround = 2,objective = "binary:logistic")
xgb.model.dt.tree([email protected][[2]], model = bst)
p = rep(0.5,nrow(X))
L = which(X[,'odor=none']==0)
R = which(X[,'odor=none']==1)
pL = p[L]
pR = p[R]
yL = y[L]
yR = y[R]
GL = sum(pL-yL)
GR = sum(pR-yR)
G = sum(p-y)
HL = sum(pL*(1-pL))
HR = sum(pR*(1-pR))
H = sum(p*(1-p))
gain = 0.5 * (GL^2/HL+GR^2/HR-G^2/H)
gain
2002.848として我々は、ログ損失を使用しているので
、Gはp-y
の和であり、Hは、合計である:以下の式でp(1-p)
- この場合、ガンマとラムダは両方ともゼロです。
どこに間違っているのか誰でも確認できますか?
ありがとうございました
男これは私に少し迷惑をかけてきました。私はそれを通って作業するつもりですが、私は感心しています。あなたはooutの中でxgboostを学んでいるようですので、この質問を見てください。私はしばらく私を困らせていた.http://stackoverflow.com/questions/32950607/how-to-access-weighting-of-indiviual-decision-trees-in-xgboost –
私は、適用されるが、ソースコードのデフォルトを調べるべきである。よくやった! –
助けてくれてうれしい!それは驚異的なアルゴリズムなので、最初の原則から十分理解できる価値があります。 – dataShrimp