对xgboost和lightgbm的理解及其调参应该关注的点
这两个算法都是集成学习了分类回归树模型,先讨论是怎么集成的。 集成的方法是 Gradient Boosting 比如我要拟合一个数据如下: 第一次建了一个模型如上图中的折线,效果不是很理想,然后要新建一个模型来综合一下结果,那么第二个模型如何建,我们将实际目标值和我们第一个模型的预测的差值 作为第二次模型的目标值如下图再建一个模型: 然后不断地新建新的模型,过程如下: 最后就能集成这些模型不断提升预测的精度。 步骤如下: 损失函数: 最小化目标: 对每一个基学习器求偏导: 这两个算法的基学习器都是分类回归树,也就是先分类然后回归的树,这里采用决策树来做特征分类。 建立决策树要考虑主要的问题是,我们如何找到合适的特征和合适的切分点来做数据集划分。判断标准是什么。 可以采用遍历的方式,遍历每一个特征的每一个数据,注意为了能够快速划分数据集,在分某一个特征的时候,就根据这个特征进行排序,这样切割数据集的时候就不要每一个数据重新进行和切分点的阈值进行比较。 划分依据是分类之后的数据集的目标值的方差和要下降的最多(对于目标值是连续值)。 假设下面代码中最后一列为目标值: def err_cnt(dataSet): '''回归树的划分指标 input: dataSet(list):训练数据 output: m*s^2(float):总方差 ''' data = np.mat(dataSet)