1.一种增量式的梯度提升决策树更新方法,其特征在于,依次包括以下步骤:
A:对增量数据集与原始数据集进行排序归并,形成合并了新的数据块后的当前最新有序数据集;
B:分别计算每个结点在当前最新有序数据集上的最新最佳分裂属性和分裂值;
C:对决策树中的每个结点,基于合并了新的数据块后的当前最新有序数据集,首先利用步骤B计算得到的最新最佳分裂属性,与新的数据块到来前该结点上最佳分裂属性进行对比;当最新最佳分裂属性和新的数据块到来前该结点上的最佳分裂属性相同时,仅更新该结点上该属性的分裂值,否则进一步判断该结点是决策树的中间结点还是根结点;如果该结点是决策树的中间结点,则基于CART决策树算法中构建二叉决策树的方法,使用前一棵决策树对应的最新残差,从该中间结点起重新训练一棵新的子树,替代原有的以该中间结点作为根结点的子树,若该结点所在决策树为第一棵决策树,则使用当前最新有序数据集中每一个实例目标列的值减去所有实例目标列的平均值作为最新残差;如果该结点是根结点,则基于CART决策树算法中构建二叉决策树的方法,使用前一棵决策树对应的最新残差,重新训练一个新的决策树,替代原有的当前根结点所在的整棵决策树,若该结点所在决策树为第一棵决策树,则使用当前最新有序数据集中每一个实例目标列的值减去所有实例目标列的平均值作为最新残差;每当更新完一个决策树,使用已更新完的决策树对新数据集的目标列进行残差更新,迭代地更新每一棵决策树及新数据集目标列的残差值,直到数据分类模型更新完毕。
2.根据权利要求1所述的增量式的梯度提升决策树更新方法,其特征在于,所述的步骤A包括以下步骤:
A1:在一个或多个新的数据块实时到达后,首先对新的数据块上的各个属性进行单独排序,然后为每个属性独立生成一个排序后的数据集;
A2:使用排序归并策略,依次将新的数据块上为每个属性独立生成的排序后的数据集和该属性原有的基于原始数据集排序的数据集进行合并。
3.根据权利要求2所述的增量式的梯度提升决策树更新方法,其特征在于,所述的步骤A2中合并方法如下:
步骤1:为每个属性原有的基于原始数据集排序的数据集OriDatai设置指针P1,为新的数据块上对该属性独立生成的排序后的数据集NewDatai设置指针P2;首先使用指针P2获得数据集NewDatai中的第一个值V2,并与指针P1所指向的数据集OriDatai中的第一个值V1进行比较:如果V2大于V1,则指针P1向前移动,指向数据集OriDatai的下一个值,直到P1所指向的值大于或等于V2,此时将指针P2获得的数据集NewDatai中的当前值V2即新属性值,插入数据集OriDatai中P1所指向的位置上,即指针P1指向插入的新属性值,然后指针P2向前移动指向数据集NewDatai的下一个值;
如果V2小于或等于V1,则将指针P2获得的数据集NewDatai中的当前值V2即新属性值,直接插入到数据集OriDatai中P1所指向的位置之前,指针P1位置不变即指针P1仍指向原属性值V1,且数据集NewDatai上的指针P2向前移动指向数据集NewDatai中的下一个值;
步骤2:迭代执行步骤1,直到数据集NewDatai中的值完全插入数据集OriDatai中,即新的数据集NewDatai与原数据集OriDatai的合并完成,最后得到的数据集OriDatai即为该属性Ti对应的最新有序数据集OriDatai’。
4.根据权利要求1所述的增量式的梯度提升决策树更新方法,其特征在于,所述的步骤B包括以下具体步骤:
B1:对每个属性,在根据步骤A得到属性所对应的最新有序数据集后,利用基于CART决策树算法中构建二叉决策树的方法,计算每个属性在最新有序数据集的最佳分裂值;
B2:从所有属性中,挑选出最大损失值对应的属性作为根结点上的最佳分裂属性,若多个属性所对应的损失值大小一致,则任选其中一个属性作为根结点上的最佳分裂属性;使用最佳分裂属性及其对应的分裂值,在根结点上水平分裂该最大损失值对应的属性所对应的经排序归并后的最新有序数据集,完成对当前结点上最新最佳分裂属性的计算;
B3:使用步骤B1和B2所述的方法,按照深度优先或广度优先的策略,继续分别在父结点的左子结点和右子结点所对应的数据集上计算最新最佳分裂属性和分裂值,直到满足自定义的分裂停止条件为止,使用深度优先所对应的分裂停止条件为自定义的树的深度,使用广度优先策略所对应的分裂停止条件为自定义的叶子节点数。
5.根据权利要求4所述的增量式的梯度提升决策树更新方法,其特征在于,所述的步骤B1包括以下步骤:
b11:对于每个属性Ti,从最新有序数据集OriDatai’的第1个属性值V开始,按照第1个属性值V将最新有序数据集OriDatai’进行水平分裂,将最新有序数据集OriDatai’中在Ti属性上的取值小于或等于V的实例分裂到左侧的子结点,形成左子结点对应的数据集nodeDatal’,下角标l为left的首字母;将最新有序数据集OriDatai’中在Ti属性上的取值大于V的实例划分到右侧的子结点,形成右子结点对应的数据集nodeDatar’,下角标r为right的首字母;然后通过下述公式(1)计算此时的损失值,记为Fi1,表示按照第i个属性Ti的第1个属性值分裂后计算得到的损失值;
其中,μl为左子结点中的所有实例在目标列的取值的平均值,下角标l为left的首字母;
L表示父结点按照所选取的属性值分裂后,分裂到左子结点中实例的个数;μr为右子结点中的所有实例在目标列的取值的平均值,下角标r为right的首字母;R表示父结点按照所选取的属性值分裂后,分裂到右子结点中实例的个数;μ表示父结点中所有实例在目标列的取值的平均值,N表示父结点中所有实例的个数;
b12:对于每个属性Ti,按照步骤b11的方法使用属性Ti的第2个属性值对最新有序数据集OriDatai’进行水平分裂,通过水平分裂得到左侧的子结点和右侧的子结点,再通过公式(1)再次计算损失值,记为Fi2,表示按照第i个属性Ti的第2个属性值分裂后计算得到的损失值;
b13:以此类推,依次计算按照属性Ti的其它属性值水平分裂最新有序数据集OriDatai’后的对应的损失值,分别对应记为Fi3,Fi4,……,Fin;
b14:从Fi1,Fi2Fi3,Fi4,……,Fin中选择其中最大的损失值,记为Fik,1≤k≤n,并记录下Fik对应的分裂值。
6.根据权利要求1所述的增量式的梯度提升决策树更新方法,其特征在于,所述的步骤C包括以下具体步骤:
C1:对单棵决策树进行更新,具体方法如下:
对该决策树的根结点,利用步骤B计算得到该结点在当前最新有序数据集上的最新最佳分裂属性进行判断:
如果决策树中根结点上的最新最佳分裂属性与原有的分裂属性相同,则仅更新根结点上该属性的分裂值;然后,对根结点的左子结点和右子结点,按照步骤B分别计算子结点上的最新最佳分裂属性,如果该子结点上的最新最佳分裂属性和该子结点上原有的分裂属性相同,则仅更新该子结点上该属性的分裂值;依次类推,按照深度优先或广度优先的策略,递归地更新每一个子结点,直到所有结点更新完成,最终对一棵决策树完成快速更新;
如果决策树中某结点的最新最佳分裂属性和原有的分裂属性不相同,则进一步判断该结点是中间结点还是根结点,如果该结点是决策树的中间结点,则基于CART决策树算法中构建二叉决策树的方法,使用前一棵决策树对应的最新残差,从该中间结点起重新训练一棵新的子树,替代原有的以该中间结点作为根结点的子树,若该结点所在决策树为第一棵决策树,则使用当前最新有序数据集中每一个实例目标列的值减去所有实例目标列的平均值作为最新残差;如果该结点是根结点,则基于CART决策树算法中构建二叉决策树的方法,使用前一棵决策树对应的最新残差,重新训练一个新的决策树,替代原有的当前根结点所在的整棵决策树,若该结点所在决策树为第一棵决策树,则使用当前最新有序数据集中每一个实例目标列的值减去所有实例目标列的平均值作为最新残差;然后,对于剩余的每棵决策树,结合前一棵决策树对应的最新残差,重新训练一棵新的决策树,替代当前的整棵决策树;
C2:计算最新残差,最新残差的具体计算方法如下:
基于梯度提升决策树算法中决策树的集成方法,对新的数据块到达后已更新过的所有决策树进行集成,使用该集成模型对合并了新的数据块后的当前数据集中的每一个实例的目标列的值进行预测,得到的预测值与该实例在目标列上的真实值相减,得到该实例对应的残差值;所有实例的残差值计算完毕后,这些最新的残差值的集合即为最新残差;
其中,梯度提升决策树算法中决策树的集成方法如下:
某个实例的预测结果=第1棵决策树对该实例的预测结果+第2棵决策树对该实例的预测结果*学习率+第3棵决策树对该实例的预测结果*学习率+…+最新更新过的决策树对该实例的预测结果*学习率;
其中,学习率是由用户定义的用于控制分类模型的收敛速度的一个数值型参数,学习率的取值范围是(0,1];
C3:按照步骤C1依次对剩余的每棵决策树进行更新,每更新完一棵决策树后,都按照步骤C2计算最新残差,并将得到的该最新残差作为下一棵决策树的预测目标;以此类推,迭代地对每棵决策树进行更新,直到所有决策树都更新完成,最终完成对数据分类模型的更新。