Xgboost算法详解
因为Xgboost算法常常用于有监督学习,关于有监督学习我们在前面已经介绍过来,但是有监督学习的要素有哪些呢?Xgboost算法为什么经常用于有监督学习呢?
有监督学习的要素包含两大块:
模型和参数
模型通常是给定输入Xi,找出和输出y之间的关系,如线性模型
参数通常是我们需要从数据中学习的未确定部分。在线性回归模型中,参数是系数Wj。
损失函数和正则化
我们在对数据进行训练的时候,总是要有一个评价指标,判断训练的好坏程度,这时候就引入了目标函数的概念,其中:
目标函数=损失函数L(θ)+正则化Ω(θ)
损失函数
损失函数L(θ)是描述预测值和真实值的偏差有多少,衡量我们的数据对训练数据的预测性,数学表达式用l(Y-Yi)来表示,其中l(x)可以是均方误差,逻辑回归损失。
正则化
正则化Ω(θ)控制模型的复杂性,这有助于避免过拟合。
简单来说就是损失函数判断模型的好坏,正则化判断模型的复杂程度,我们当然需要一个既简单又可以预测的模型。如果数据量无限多的话,训练最好的情况下此时的模型拟合误差记为bias。如果在有限数据量的条件下进行拟合的话,那么此时的误差记为variance。
树集成
现在有五个人,要研究的是他们去打电脑游戏的可能性,最后的结果越大表明去打游戏的可能性也就越大。
如果只用上图左边根据性别和年龄来进行分类的话,采用的是单棵树。如果加上上图右边的树将使用电脑频率进行分类的话,两棵树的结果相加最后得到每个人会去打电脑游戏的可能性,这样的方法称为树集成。而Xgboost本质上就是树集成。
有了上面的基础之后,我们再来讨论,当我们既有了一棵树,我们还得添加哪些树?添加多少树呢?
添加哪些树?
Xgboost里面的树是一个一个添加的,每一个树都可以看作是一个函数
所以我们添加的树必须要保证预测效果是比不加树之前的效果要好的。
添加多少树?
有可能到最后树的性能是提升了,但是提升的增益很小,甚至会带来过拟合情况的产生。这个时候就引入了惩罚函数比如
对目标函数进行优化
利用均方误差对目标函数进行展开之后
将均方误差的泰勒展示式展开到二阶之后
因为损失函数最后是一个具体的值,和输入xi没有什么关系,所以除去损失函数和常量的值
其中
在二次函数的基础上满足以下条件可以使得目标函数最小,
信息增益:
对于每次扩展,我们依旧要枚举所有可能的方案。对于某个特定的分割,我们要计算出这个分割的左子树的导数和和右子数导数和之和,然后和划分前的进行比较(基于损失,看分割后的损失和分割前的损失有没有发生变化,变化了多少)。遍历所有分割,选择变化最大的作为最合适的分割。