JiaxiangBU / tutoring2

The collection of Python and R code scripts to tutor others.
https://jiaxiangbu.github.io/tutoring2/
Other
8 stars 7 forks source link

NLP XGBoost 不适应的情况 #6

Closed JiaxiangBU closed 4 years ago

JiaxiangBU commented 5 years ago

逻辑回归牺牲效率,降低了过拟合的风险。

JiaxiangBU commented 5 years ago

比较LR和GBDT,说说什么情景下GBDT不如LR

假设一个二分类问题,label为0和1,特征有100维,如果有1w个样本,但其中只要10个正样本1,而这些样本的特征 f1的值为全为1,而其余9990条样本的f1特征都为0(在高维稀疏的情况下这种情况很常见)。

我们都知道在这种情况下,树模型很容易优化出一个使用f1特征作为重要分裂节点的树,因为这个结点直接能够将训练数据划分的很好,但是当测试的时候,却会发现效果很差,因为这个特征f1只是刚好偶然间跟y拟合到了这个规律,这也是我们常说的过拟合。

那么这种情况下,如果采用LR的话,应该也会出现类似过拟合的情况呀:y = W1f1 + Wifi+….,其中 W1特别大以拟合这10个样本。为什么此时树模型就过拟合的更严重呢?

仔细想想发现,因为现在的模型普遍都会带着正则项,而 LR 等线性模型的正则项是对权重的惩罚,也就是 W1一旦过大,惩罚就会很大,进一步压缩 W1的值,使他不至于过大。但是,树模型则不一样,树模型的惩罚项通常为叶子节点数和深度等,而我们都知道,对于上面这种 case,树只需要一个节点就可以完美分割9990和10个样本,一个结点,最终产生的惩罚项极其之小。

对于稀疏变量的处理,正则化如果是通过树的深度来惩罚的话,就基本效果很差了。

JiaxiangBU commented 5 years ago

一般来说,图像、NLP等样本量远远小于特征数量的样本,XGBoost 都不适用。 (Fogelson 2019)

样本量远远小于特征数量=>本身就是过拟合的特征,会出现一个特征偶然的和 y 变量拟合得很好。 那么一般来说,CTR我们现在做的 XGB 效果好,就是因为样本量很大而已。

Fogelson, Sergey. 2019. “Extreme Gradient Boosting with Xgboost.” DataCamp. 2019. https://www.datacamp.com/courses/extreme-gradient-boosting-with-xgboost.