win 10安装:conda install py-xgboost
每一次保留原来的模型不变,加入一个新的函数f到模型中。将前面所有的函数合起来看成一个y_hat
怎么构造新加进来的模型?
树模型结构:
会对树模型做一个惩罚,不让树模型过于庞大:
1.叶子个数限制
2.权重正则化
例如:
所以得到xgboost目标函数为:
一方面要保证预测值和真实值之间的差异最小
另一方面要让树模型更精简
用泰勒展开来近似原来的目标
相比于经典的GBDT,xgboost做了一些改进,从而在效果和性能上有明显的提升(划重点面试常考)。
第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。
第二,GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。
第三,xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。
第四,xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。
此外,xgboost还支持候选分位点切割,特征并行等,可以提升性能。