1.一種增量式的梯度提升決策樹更新方法,其特征在于,依次包括以下步驟:
A:對增量數(shù)據(jù)集與原始數(shù)據(jù)集進行排序歸并,形成合并了新的數(shù)據(jù)塊后的當前最新有序數(shù)據(jù)集;
B:分別計算每個結(jié)點在當前最新有序數(shù)據(jù)集上的最新最佳分裂屬性和分裂值;
C:對決策樹中的每個結(jié)點,基于合并了新的數(shù)據(jù)塊后的當前最新有序數(shù)據(jù)集,首先利用步驟B計算得到的最新最佳分裂屬性,與新的數(shù)據(jù)塊到來前該結(jié)點上最佳分裂屬性進行對比;當最新最佳分裂屬性和新的數(shù)據(jù)塊到來前該結(jié)點上的最佳分裂屬性相同時,僅更新該結(jié)點上該屬性的分裂值,否則進一步判斷該結(jié)點是決策樹的中間結(jié)點還是根結(jié)點;如果該結(jié)點是決策樹的中間結(jié)點,則基于CART決策樹算法中構(gòu)建二叉決策樹的方法,使用前一棵決策樹對應(yīng)的最新殘差,從該中間結(jié)點起重新訓練一棵新的子樹,替代原有的以該中間結(jié)點作為根結(jié)點的子樹,若該結(jié)點所在決策樹為第一棵決策樹,則使用當前最新有序數(shù)據(jù)集中每一個實例目標列的值減去所有實例目標列的平均值作為最新殘差;如果該結(jié)點是根結(jié)點,則基于CART決策樹算法中構(gòu)建二叉決策樹的方法,使用前一棵決策樹對應(yīng)的最新殘差,重新訓練一個新的決策樹,替代原有的、當前根結(jié)點所在的整棵決策樹,若該結(jié)點所在決策樹為第一棵決策樹,則使用當前最新有序數(shù)據(jù)集中每一個實例目標列的值減去所有實例目標列的平均值作為最新殘差;每當更新完一個決策樹,使用已更新完的決策樹對新數(shù)據(jù)集的目標列進行殘差更新,迭代地更新每一棵決策樹及新數(shù)據(jù)集目標列的殘差值,直到數(shù)據(jù)分類模型更新完畢。
2.根據(jù)權(quán)利要求1所述的增量式的梯度提升決策樹更新方法,其特征在于,所述的步驟A包括以下步驟:
A1:在一個或多個新的數(shù)據(jù)塊實時到達后,首先對新的數(shù)據(jù)塊上的各個屬性進行單獨排序,然后為每個屬性獨立生成一個排序后的數(shù)據(jù)集;
A2:使用排序歸并策略,依次將新的數(shù)據(jù)塊上為每個屬性獨立生成的排序后的數(shù)據(jù)集和該屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集進行合并。
3.根據(jù)權(quán)利要求2所述的增量式的梯度提升決策樹更新方法,其特征在于,所述的步驟A2中合并方法如下:
為每個屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集OriDatai設(shè)置指針P1,為新的數(shù)據(jù)塊上對該屬性獨立生成的排序后的數(shù)據(jù)集NewDatai設(shè)置指針P2;首先使用指針P2獲得數(shù)據(jù)集NewDatai中的第一個值V2,并與指針P1所指向的數(shù)據(jù)集OriDatai中的第一個值V1進行比較:
如果V2大于V1,則指針P1向前移動,指向數(shù)據(jù)集OriDatai的下一個值,直到P1所指向的值大于或等于V2,此時將指針P2獲得的數(shù)據(jù)集NewDatai中的當前值V2即新屬性值,插入數(shù)據(jù)集OriDatai中P1所指向的位置上,即指針P1指向插入的新屬性值,然后指針P2向前移動指向數(shù)據(jù)集NewDatai的下一個值;
如果V2小于或等于V1,則將指針P2獲得的數(shù)據(jù)集NewDatai中的當前值V2即新屬性值,直接插入到數(shù)據(jù)集OriDatai中P1所指向的位置之前,指針P1位置不變即指針P1仍指向原屬性值V1,且數(shù)據(jù)集NewDatai上的指針P2向前移動指向數(shù)據(jù)集NewDatai中的下一個值;
迭代執(zhí)行上述過程,直到數(shù)據(jù)集NewDatai中的值完全插入數(shù)據(jù)集OriDatai中,即新的數(shù)據(jù)集NewDatai與原數(shù)據(jù)集OriDatai的合并完成,最后得到的數(shù)據(jù)集OriDatai即為該屬性Ti對應(yīng)的最新有序數(shù)據(jù)集OriDatai’。
4.根據(jù)權(quán)利要求1所述的增量式的梯度提升決策樹更新方法,其特征在于,所述的步驟B包括以下具體步驟:
B1:對每個屬性,在根據(jù)步驟A得到屬性所對應(yīng)的最新有序數(shù)據(jù)集后,利用基于CART決策樹算法中構(gòu)建二叉決策樹的方法,計算每個屬性在最新有序數(shù)據(jù)集的最佳分裂值;
B2:從所有屬性中,挑選出最大損失值對應(yīng)的屬性作為根結(jié)點上的最佳分裂屬性,若多個屬性所對應(yīng)的損失值大小一致,則任選其中一個屬性作為根結(jié)點上的最佳分裂屬性;使用最佳分裂屬性及其對應(yīng)的分裂值,在根結(jié)點上水平分裂該最大損失值對應(yīng)的屬性所對應(yīng)的經(jīng)排序歸并后的最新有序數(shù)據(jù)集,完成對當前結(jié)點上最新最佳分裂屬性的計算;
B3:使用步驟B1和B2所述的方法,按照深度優(yōu)先或廣度優(yōu)先的策略,繼續(xù)分別在父結(jié)點的左子結(jié)點和右子結(jié)點所對應(yīng)的數(shù)據(jù)集上計算最新最佳分裂屬性和分裂值,直到滿足自定義的分裂停止條件為止,使用深度優(yōu)先所對應(yīng)的分裂停止條件為自定義的樹的深度,使用廣度優(yōu)先策略所對應(yīng)的分裂停止條件為自定義的葉子節(jié)點數(shù)。
5.根據(jù)權(quán)利要求4所述的增量式的梯度提升決策樹更新方法,其特征在于,所述的步驟B1包括以下步驟:
b11:對于每個屬性Ti,從最新有序數(shù)據(jù)集OriDatai’的第1個屬性值V開始,按照第1個屬性值V將最新有序數(shù)據(jù)集OriDatai’進行水平分裂,將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值小于或等于V的實例分裂到左側(cè)的子結(jié)點,形成左子結(jié)點對應(yīng)的數(shù)據(jù)集nodeDatal’,下角標l為left的首字母;將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值大于V的實例劃分到右側(cè)的子結(jié)點,形成右子結(jié)點對應(yīng)的數(shù)據(jù)集nodeDatar’,下角標r為right的首字母;然后通過下述公式(1)計算此時的損失值,記為Fi1,表示按照第i個屬性Ti的第1個屬性值分裂后計算得到的損失值;
其中,μl為左子結(jié)點中的所有實例在目標列的取值的平均值,下角標l為left的首字母;L表示父結(jié)點按照所選取的屬性值分裂后,分裂到左子結(jié)點中實例的個數(shù);μr為右子結(jié)點中的所有實例在目標列的取值的平均值,下角標r為right的首字母;R表示父結(jié)點按照所選取的屬性值分裂后,分裂到右子結(jié)點中實例的個數(shù);μ表示父結(jié)點中所有實例在目標列的取值的平均值,N表示父結(jié)點中所有實例的個數(shù);
b12:對于每個屬性Ti,按照步驟b11的方法使用屬性Ti的第2個屬性值對最新有序數(shù)據(jù)集OriDatai’進行水平分裂,通過水平分裂得到左側(cè)的子結(jié)點和右側(cè)的子結(jié)點,再通過公式(1)再次計算損失值,記為Fi2,表示按照第i個屬性Ti的第2個屬性值分裂后計算得到的損失值;
b13:以此類推,依次計算按照屬性Ti的其它屬性值水平分裂最新有序數(shù)據(jù)集OriDatai’后的對應(yīng)的損失值,分別對應(yīng)記為Fi3,F(xiàn)i4,……,F(xiàn)in;
b14:從Fi1,F(xiàn)i2Fi3,F(xiàn)i4,……,F(xiàn)in中選擇其中最大的損失值,記為Fik,1≤k≤n,并記錄下Fik對應(yīng)的分裂值。
6.根據(jù)權(quán)利要求1所述的增量式的梯度提升決策樹更新方法,其特征在于,所述的步驟C包括以下具體步驟:
C1:對單棵決策樹進行更新,具體方法如下:
對該決策樹的根結(jié)點,利用步驟B計算得到該結(jié)點在當前最新有序數(shù)據(jù)集上的最新最佳分裂屬性進行判斷:
如果決策樹中根結(jié)點上的最新最佳分裂屬性與原有的分裂屬性相同,則僅更新根結(jié)點上該屬性的分裂值;然后,對根結(jié)點的左子結(jié)點和右子結(jié)點,按照步驟B分別計算子結(jié)點上的最新最佳分裂屬性,如果該子結(jié)點上的最新最佳分裂屬性和該子結(jié)點上原有的分裂屬性相同,則僅更新該子結(jié)點上該屬性的分裂值;依次類推,按照深度優(yōu)先或廣度優(yōu)先的策略,遞歸地更新每一個子結(jié)點,直到所有結(jié)點更新完成,最終對一棵決策樹完成快速更新;
如果決策樹中某結(jié)點的最新最佳分裂屬性和原有的分裂屬性不相同,則進一步判斷該結(jié)點是中間結(jié)點還是根結(jié)點,如果該結(jié)點是決策樹的中間結(jié)點,則基于CART決策樹算法中構(gòu)建二叉決策樹的方法,使用前一棵決策樹對應(yīng)的最新殘差,從該中間結(jié)點起重新訓練一棵新的子樹,替代原有的以該中間結(jié)點作為根結(jié)點的子樹,若該結(jié)點所在決策樹為第一棵決策樹,則使用當前最新有序數(shù)據(jù)集中每一個實例目標列的值減去所有實例目標列的平均值作為最新殘差;如果該結(jié)點是根結(jié)點,則基于CART決策樹算法中構(gòu)建二叉決策樹的方法,使用前一棵決策樹對應(yīng)的最新殘差,重新訓練一個新的決策樹,替代原有的、當前根結(jié)點所在的整棵決策樹,若該結(jié)點所在決策樹為第一棵決策樹,則使用當前最新有序數(shù)據(jù)集中每一個實例目標列的值減去所有實例目標列的平均值作為最新殘差;然后,對于剩余的每棵決策樹,結(jié)合前一棵決策樹對應(yīng)的最新殘差,重新訓練一棵新的決策樹,替代當前的整棵決策樹;
C2:計算最新殘差,最新殘差的具體計算方法如下:
基于梯度提升決策樹算法中決策樹的集成方法,對新的數(shù)據(jù)塊到達后已更新過的所有決策樹進行集成,使用該集成模型對合并了新的數(shù)據(jù)塊后的當前數(shù)據(jù)集中的每一個實例的目標列的值進行預測,得到的預測值與該實例在目標列上的真實值相減,得到該實例對應(yīng)的殘差值;所有實例的殘差值計算完畢后,這些最新的殘差值的集合即為最新殘差;
其中,梯度提升決策樹算法中決策樹的集成方法如下:
某個實例的預測結(jié)果=第1棵決策樹對該實例的預測結(jié)果+第2棵決策樹對該實例的預測結(jié)果*學習率+第3棵決策樹對該實例的預測結(jié)果*學習率+…+最新更新過的決策樹對該實例的預測結(jié)果*學習率;
其中,學習率是由用戶定義的用于控制分類模型的收斂速度的一個數(shù)值型參數(shù),學習率的取值范圍是(0,1];
C3:按照步驟C1依次對剩余的每棵決策樹進行更新,每更新完一棵決策樹后,都按照步驟C2計算最新殘差,并將得到的該最新殘差作為下一棵決策樹的預測目標;以此類推,迭代地對每棵決策樹進行更新,直到所有決策樹都更新完成,最終完成對數(shù)據(jù)分類模型的更新。