各位好,最近在了解xgboost的方法論,推導過程看得滿順暢的,唯有幾點不太清楚
望各位大神指點
從這張圖可以知道,cart與tree ensemble就是把每一個樣本特徵對應到每顆樹的節點分數加起來,就是預測結果
但是這個分數該怎麼轉化為分類?(應該或說每個分類的機率)
而且如果一直迭代出新樹,分數不就爆表了嗎?
感謝各位
2个回答
我回答下你最后一个问题。
而且如果一直迭代出新樹,分數不就爆表了嗎?
------
一直迭代出新树,训练误差当然会降低,但是测试误差(泛化误差)未必会降低,因为模型就overfit了。
所以我们需要控制树的最大深度(max_depth)。
gbdt类模型 都是回归树,对于二分类默认使用binary_logloss.怎么理解呢?对于正样本,损失函数就是ln(1+e(-x)) ,对于负样本,损失函数就是ln(1+e(x))。总之,对于负样本,预测值越负越好,正样本越大越好。
这样总损失就是ln(1.。*1.。*1.。……),一堆1+无穷小 相乘,还是1+无穷小 ,在ln一下,无穷小,美滋滋。
这样输出就是负无穷到正无穷。
那概率值则么来的呢?节点分数x, 模型会输出 1/(1+e(-x)) ,公式不太会,见谅。这个值是0到1的假概率值。
从损失函数就可以看出,模型只是一个负样本给负值,正样本给正值的游戏规则下,一种平衡状态的解,本来就不是预测概率值的,只是假概率值,忽悠一下外行的。所以本质上二分类binary_logloss是个排序模型,给出模型认为谁更有资格当正样本的回答,只不过恰好有资格当正样本,意味着正样本概率也高。
SofaSofa数据科学社区DS面试题库 DS面经