自从在2014年9月xgboost在kaggle夺得魁首后,xgboost在各种竞赛场合出现频率越来越多。之后将xgboost引入到电子商务的商品推荐算法中,建立分类预测模型,具有速度快、准确率高等优势。
xgboost本质上还是GBDT,但是xgboost对loss func做了二阶的泰勒展开,并在目标函数之外加入了正则项整体求最优解,用以权衡目标函数的下降和模型的复杂程度。
监督学习的概念说明
目标函数:
为training loss,用于衡量模型在数据集上的训练好坏程度。
为Regularization,用于衡量模型的复杂程度。
training loss:
- square loss :
- logistic loss :
regularization:
- L2 范数 :
2. L1 范数 :
Ridge Regression:
- Linear model, square loss, L2 regularization
Lasso:
- Linear model, square loss, L1 regularization
Logisit Regression:
- Linear model, logistic loss, L2 regularization
回归树和集成的学习过程
回归树(众所周知,回归树有分类和回归树。)
- 决策规则跟决策树的一样。
- 在每个叶子上都包含一个score值
通过输入年龄、性别、职业等等来进行树的学习,看看每个人喜欢电脑游戏的程度。每个叶子节点上都有一个预测score。
从上图可看到学习了两棵树,而对于每个样本来说,最后预测的score是每棵树上的叶子节点的score的和。
树集成方法
树集成的方法用的非常广泛,比如GBM,Random Forest ......
-
几乎一半的数据挖掘竞争都是通过使用树集成方法的变体
特征的缩放是恒定的,所以不需要仔细地去做特征规则化。
学习特征之间的高阶交互。
可扩展性好,可以用到工业智造中。
模型和参数
模型:
假设我们有K颗数,则有:
,
(F为包含所有回归树的函数空间)
我们可以将回归树看成是一个将属性映射到score的函数。
那么我们应该怎样学习这个函数呢?
- 定义目标函数(包含损失函数和正则项)然后优化它。
目标函数:
目标函数的第一部分为training loss,第二部分为树的复杂度。
那么定义的方法有哪些呢?
- 树中的节点数、深度
- 叶子权重的L2范数
- ......
当我们谈论决策树的时候我们可能会探索到很多
- 通过信息增益来划分
- 树的剪枝
- 树的最大深度
- 叶子节点的值更加平滑
其实很多的探索都会很好的映射到目标函数上
- 信息增益
training loss
- 树的剪枝
regularization defined by #nodes
- 最大深度
constraint on the function space
- 叶子值平滑度
L2 regularization on leaf weights
当我们谈论决策树的时候我们可能会探索到很多
- 通过信息增益来划分
- 树的剪枝
- 树的最大深度
- 叶子节点的值更加平滑
其实很多的探索都会很好的映射到目标函数上
梯度提升
上面的内容告诉我们我们要学习什么,但是这部分告诉我们我们应该怎样去做
,
Additive Training (Boosting)
首先,从常数来进行预测,每次都添加一个新的函数
...
那么目标函数为
我们的目的是从上面的目标函数中找到,使其最小化。
下面我们对目标函数思考用square loss ,则目标函数为
可以看到目标函数似乎还是挺复杂的,那么接下来就对目标函数进行泰勒展开。
也可以用square loss来对化简,可得到目标函数
上面我们得到的是目标函数,那么第二部分说的就是怎样去优化树。