欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種增量式的梯度提升決策樹(shù)更新方法與流程

文檔序號(hào):12272350閱讀:626來(lái)源:國(guó)知局
一種增量式的梯度提升決策樹(shù)更新方法與流程
本發(fā)明涉及一種數(shù)據(jù)分類模型的更新方法,尤其涉及一種增量式的梯度提升決策樹(shù)更新方法。
背景技術(shù)
:近年來(lái),人們逐漸意識(shí)到數(shù)據(jù)分析的重要性,開(kāi)始著手對(duì)數(shù)據(jù)進(jìn)行分析和挖掘,發(fā)現(xiàn)數(shù)據(jù)潛在的價(jià)值。越來(lái)越多的領(lǐng)域如金融、電商、醫(yī)療和教育等已經(jīng)開(kāi)始使用數(shù)據(jù)挖掘技術(shù)來(lái)獲得數(shù)據(jù)的潛在價(jià)值。在這些應(yīng)用和服務(wù)中,較為常見(jiàn)的需求是數(shù)據(jù)分類。在數(shù)據(jù)分類問(wèn)題中,如何快速更新已有的數(shù)據(jù)分類模型,是一項(xiàng)重要的研究課題,也是當(dāng)前很多需要實(shí)時(shí)處理數(shù)據(jù)的應(yīng)用所面臨的重要挑戰(zhàn)。因?yàn)椋聰?shù)據(jù)到來(lái)后,如果重新建立一個(gè)新的數(shù)據(jù)分類模型,將耗費(fèi)大量的時(shí)間。梯度提升決策樹(shù),即GradientBoostingDecisionTree,是具有較高準(zhǔn)確率的數(shù)據(jù)分類算法。梯度提升決策樹(shù)的思想使其具有天然優(yōu)勢(shì)可以發(fā)現(xiàn)多種有區(qū)分性的模型以及模型組合。業(yè)界中,F(xiàn)acebook使用其來(lái)自動(dòng)發(fā)現(xiàn)有效的模型、特征模型,來(lái)作為邏輯回歸模型中的模型,以提高點(diǎn)擊率預(yù)估的準(zhǔn)確性。但是當(dāng)新數(shù)據(jù)到來(lái)后,現(xiàn)有的梯度提升決策樹(shù)需要在所有的數(shù)據(jù)集上重新訓(xùn)練一個(gè)數(shù)據(jù)分類模型,并沒(méi)有充分利用在原始數(shù)據(jù)集上已建立的數(shù)據(jù)分類模型,對(duì)此,我們?cè)O(shè)計(jì)了一個(gè)增量式的梯度提升決策樹(shù)方法,在新數(shù)據(jù)集到來(lái)時(shí),快速更新在原始數(shù)據(jù)集上已建立的數(shù)據(jù)分類模型。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種增量式的梯度提升決策樹(shù)更新方法,能夠在一個(gè)或多個(gè)新的數(shù)據(jù)塊實(shí)時(shí)到達(dá)后,直接在已有的基于梯度提升決策樹(shù)算法的數(shù)據(jù)分類模型上進(jìn)行快速更新,極大地減少了建立數(shù)據(jù)分類模型的時(shí)間,提高了更新效率。本發(fā)明采用下述技術(shù)方案:一種增量式的梯度提升決策樹(shù)更新方法,依次包括以下步驟:A:對(duì)增量數(shù)據(jù)集與原始數(shù)據(jù)集進(jìn)行排序歸并,形成合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集;B:分別計(jì)算每個(gè)結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性和分裂值;C:對(duì)決策樹(shù)中的每個(gè)結(jié)點(diǎn),基于合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集,首先利用步驟B計(jì)算得到的最新最佳分裂屬性,與新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上最佳分裂屬性進(jìn)行對(duì)比;當(dāng)最新最佳分裂屬性和新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上的最佳分裂屬性相同時(shí),僅更新該結(jié)點(diǎn)上該屬性的分裂值,否則進(jìn)一步判斷該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn)還是根結(jié)點(diǎn);如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;然后,對(duì)于剩余的每棵決策樹(shù),結(jié)合前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一棵新的決策樹(shù),替代當(dāng)前的整棵決策樹(shù);每當(dāng)更新完一個(gè)決策樹(shù),使用已更新完的決策樹(shù)對(duì)新數(shù)據(jù)集的目標(biāo)列進(jìn)行殘差更新,迭代地更新每一棵決策樹(shù)及新數(shù)據(jù)集目標(biāo)列的殘差值,直到數(shù)據(jù)分類模型更新完畢。所述的步驟A包括以下步驟:A1:在一個(gè)或多個(gè)新的數(shù)據(jù)塊實(shí)時(shí)到達(dá)后,首先對(duì)新的數(shù)據(jù)塊上的各個(gè)屬性進(jìn)行單獨(dú)排序,然后為每個(gè)屬性獨(dú)立生成一個(gè)排序后的數(shù)據(jù)集;A2:使用排序歸并策略,依次將新的數(shù)據(jù)塊上為每個(gè)屬性獨(dú)立生成的排序后的數(shù)據(jù)集和該屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集進(jìn)行合并。所述的步驟A2中合并方法如下:為每個(gè)屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集OriDatai設(shè)置指針P1,為新的數(shù)據(jù)塊上對(duì)該屬性獨(dú)立生成的排序后的數(shù)據(jù)集NewDatai設(shè)置指針P2;首先使用指針P2獲得數(shù)據(jù)集NewDatai中的第一個(gè)值V2,并與指針P1所指向的數(shù)據(jù)集OriDatai中的第一個(gè)值V1進(jìn)行比較:如果V2大于V1,則指針P1向前移動(dòng),指向數(shù)據(jù)集OriDatai的下一個(gè)值,直到P1所指向的值大于或等于V2,此時(shí)將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值,插入數(shù)據(jù)集OriDatai中P1所指向的位置上,即指針P1指向插入的新屬性值,然后指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai的下一個(gè)值;如果V2小于或等于V1,則將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值,直接插入到數(shù)據(jù)集OriDatai中P1所指向的位置之前,指針P1位置不變即指針P1仍指向原屬性值V1,且數(shù)據(jù)集NewDatai上的指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai中的下一個(gè)值;迭代執(zhí)行上述過(guò)程,直到數(shù)據(jù)集NewDatai中的值完全插入數(shù)據(jù)集OriDatai中,即新的數(shù)據(jù)集NewDatai與原數(shù)據(jù)集OriDatai的合并完成,最后得到的數(shù)據(jù)集OriDatai即為該屬性Ti對(duì)應(yīng)的最新有序數(shù)據(jù)集OriDatai’。所述的步驟B包括以下具體步驟:B1:對(duì)每個(gè)屬性,在根據(jù)步驟A得到屬性所對(duì)應(yīng)的最新有序數(shù)據(jù)集后,利用基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,計(jì)算每個(gè)屬性在最新有序數(shù)據(jù)集的最佳分裂值;B2:從所有屬性中,挑選出最大損失值對(duì)應(yīng)的屬性作為根結(jié)點(diǎn)上的最佳分裂屬性,若多個(gè)屬性所對(duì)應(yīng)的損失值大小一致,則任選其中一個(gè)屬性作為根結(jié)點(diǎn)上的最佳分裂屬性;使用最佳分裂屬性及其對(duì)應(yīng)的分裂值,在根結(jié)點(diǎn)上水平分裂該最大損失值對(duì)應(yīng)的屬性所對(duì)應(yīng)的經(jīng)排序歸并后的最新有序數(shù)據(jù)集,完成對(duì)當(dāng)前結(jié)點(diǎn)上最新最佳分裂屬性的計(jì)算;B3:使用步驟B1和B2所述的方法,按照深度優(yōu)先或廣度優(yōu)先的策略,繼續(xù)分別在父結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集上計(jì)算最新最佳分裂屬性和分裂值,直到滿足自定義的分裂停止條件為止,使用深度優(yōu)先所對(duì)應(yīng)的分裂停止條件為自定義的樹(shù)的深度,使用廣度優(yōu)先策略所對(duì)應(yīng)的分裂停止條件為自定義的葉子節(jié)點(diǎn)數(shù)。所述的步驟B1包括以下步驟:b11:對(duì)于每個(gè)屬性Ti,從最新有序數(shù)據(jù)集OriDatai’的第1個(gè)屬性值V開(kāi)始,按照第1個(gè)屬性值V將最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值小于或等于V的實(shí)例分裂到左側(cè)的子結(jié)點(diǎn),形成左子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatal’,下角標(biāo)l為left的首字母;將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值大于V的實(shí)例劃分到右側(cè)的子結(jié)點(diǎn),形成右子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatar’,下角標(biāo)r為right的首字母;然后通過(guò)公式(1)計(jì)算此時(shí)的損失值,記為Fi1,表示按照第i個(gè)屬性Ti的第1個(gè)屬性值分裂后計(jì)算得到的損失值其中,μl為左子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)l為left的首字母;L表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到左子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μr為右子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)r為right的首字母;R表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到右子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μ表示父結(jié)點(diǎn)中所有實(shí)例在目標(biāo)列的取值的平均值,N表示父結(jié)點(diǎn)中所有實(shí)例的個(gè)數(shù);b12:對(duì)于每個(gè)屬性Ti,按照步驟b11的方法使用屬性Ti的第2個(gè)屬性值對(duì)最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,通過(guò)水平分裂得到左側(cè)的子結(jié)點(diǎn)和右側(cè)的子結(jié)點(diǎn),再通過(guò)公式(1)再次計(jì)算損失值,記為Fi2,表示按照第i個(gè)屬性Ti的第2個(gè)屬性值分裂后計(jì)算得到的損失值;b13:以此類推,依次計(jì)算按照屬性Ti的其它屬性值水平分裂最新有序數(shù)據(jù)集OriDatai’后的對(duì)應(yīng)的損失值,分別對(duì)應(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對(duì)應(yīng)的分裂值。所述的步驟C包括以下具體步驟:C1:對(duì)單棵決策樹(shù)進(jìn)行更新,具體方法如下:對(duì)該決策樹(shù)的根結(jié)點(diǎn),利用步驟B計(jì)算得到該結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性進(jìn)行判斷:如果決策樹(shù)中根結(jié)點(diǎn)上的最新最佳分裂屬性與原有的分裂屬性相同,則僅更新根結(jié)點(diǎn)上該屬性的分裂值;然后,對(duì)根結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn),按照步驟B分別計(jì)算子結(jié)點(diǎn)上的最新最佳分裂屬性,如果該子結(jié)點(diǎn)上的最新最佳分裂屬性和該子結(jié)點(diǎn)上原有的分裂屬性相同,則僅更新該子結(jié)點(diǎn)上該屬性的分裂值;依次類推,按照深度優(yōu)先或廣度優(yōu)先的策略,遞歸地更新每一個(gè)子結(jié)點(diǎn),直到所有結(jié)點(diǎn)更新完成,最終對(duì)一棵決策樹(shù)完成快速更新;如果決策樹(shù)中某結(jié)點(diǎn)的最新最佳分裂屬性和原有的分裂屬性不相同,則進(jìn)一步判斷該結(jié)點(diǎn)是中間結(jié)點(diǎn)還是根結(jié)點(diǎn),如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;C2:計(jì)算最新殘差,最新殘差的具體計(jì)算方法如下:基于梯度提升決策樹(shù)算法中決策樹(shù)的集成方法,對(duì)新的數(shù)據(jù)塊到達(dá)后已更新過(guò)的所有決策樹(shù)進(jìn)行集成,使用該集成模型對(duì)合并了新的數(shù)據(jù)塊后的當(dāng)前數(shù)據(jù)集中的每一個(gè)實(shí)例的目標(biāo)列的值進(jìn)行預(yù)測(cè),得到的預(yù)測(cè)值與該實(shí)例在目標(biāo)列上的真實(shí)值相減,得到該實(shí)例對(duì)應(yīng)的殘差值;所有實(shí)例的殘差值計(jì)算完畢后,這些最新的殘差值的集合即為最新殘差;其中,梯度提升決策樹(shù)算法中決策樹(shù)的集成方法如下:某個(gè)實(shí)例的預(yù)測(cè)結(jié)果=第1棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果+第2棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+第3棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+…+最新更新過(guò)的決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率;其中,學(xué)習(xí)率是由用戶定義的用于控制分類模型的收斂速度的一個(gè)數(shù)值型參數(shù),學(xué)習(xí)率的取值范圍是(0,1];C3:按照步驟C1依次對(duì)剩余的每棵決策樹(shù)進(jìn)行更新,每更新完一棵決策樹(shù)后,都按照步驟C2計(jì)算最新殘差,并將得到的該最新殘差作為下一棵決策樹(shù)的預(yù)測(cè)目標(biāo);以此類推,迭代地對(duì)每棵決策樹(shù)進(jìn)行更新,直到所有決策樹(shù)都更新完成,最終完成對(duì)數(shù)據(jù)分類模型的更新。本發(fā)明通過(guò)設(shè)置排序歸并增量數(shù)據(jù)集、查找最佳分裂屬性和分裂值以及更新數(shù)據(jù)分類模型三個(gè)步驟,能夠在新數(shù)據(jù)集批量到來(lái)的情況下,以增量式的方法快速更新已有數(shù)據(jù)分類模型。當(dāng)一個(gè)新的數(shù)據(jù)塊到達(dá)后,本方法不需要重新訓(xùn)練一個(gè)新的梯度提升決策樹(shù)分類模型,而是在現(xiàn)有模型的基礎(chǔ)上進(jìn)行更新,從而極大地減少了建立數(shù)據(jù)分類模型的時(shí)間,提高了模型的訓(xùn)練速度,節(jié)約了大量的時(shí)間成本。本發(fā)明可廣泛應(yīng)用于需要對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)分類的諸多應(yīng)用領(lǐng)域。附圖說(shuō)明圖1為本發(fā)明的流程示意圖;圖2為實(shí)施例中使用排序歸并策略進(jìn)行合并過(guò)程的示意圖。具體實(shí)施方式以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作以詳細(xì)的描述:如圖1所示,本發(fā)明所述的增量式的梯度提升決策樹(shù)更新方法,包括以下步驟:A:對(duì)增量數(shù)據(jù)集與原始數(shù)據(jù)集進(jìn)行排序歸并,形成合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集。步驟A包含以下具體步驟:A1:在一個(gè)或多個(gè)新的數(shù)據(jù)塊實(shí)時(shí)到達(dá)后,首先對(duì)新的數(shù)據(jù)塊上的各個(gè)屬性進(jìn)行單獨(dú)排序,然后為每個(gè)屬性獨(dú)立生成一個(gè)排序后的數(shù)據(jù)集;A2:使用排序歸并策略,依次將新的數(shù)據(jù)塊上為每個(gè)屬性獨(dú)立生成的排序后的數(shù)據(jù)集和該屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集進(jìn)行合并,合并方法如下:為每個(gè)屬性Ti原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集OriDatai設(shè)置指針P1,為新的數(shù)據(jù)塊上對(duì)該屬性獨(dú)立生成的排序后的數(shù)據(jù)集NewDatai設(shè)置指針P2。首先使用指針P2獲得數(shù)據(jù)集NewDatai中的第一個(gè)值V2,并與指針P1所指向的數(shù)據(jù)集OriDatai中的第一個(gè)值V1進(jìn)行比較:如果V2大于V1,則指針P1向前移動(dòng),指向數(shù)據(jù)集OriDatai的下一個(gè)值,直到P1所指向的值大于或等于V2,此時(shí)將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值插入數(shù)據(jù)集OriDatai中P1所指向的位置上,即指針P1指向插入的新屬性值,然后指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai的下一個(gè)值;如果V2小于或等于V1,則將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值,直接插入到數(shù)據(jù)集OriDatai中P1所指向的位置之前,指針P1位置不變即指針P1仍指向原屬性值V1,且數(shù)據(jù)集NewDatai上的指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai中的下一個(gè)值。迭代執(zhí)行上述過(guò)程,直到數(shù)據(jù)集NewDatai中的值完全插入數(shù)據(jù)集OriDatai中,這樣,新的數(shù)據(jù)集NewDatai與原數(shù)據(jù)集OriDatai的合并完成,最后得到的數(shù)據(jù)集OriDatai即為該屬性Ti對(duì)應(yīng)的最新有序數(shù)據(jù)集OriDatai’。B:分別計(jì)算每個(gè)結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性和分裂值。計(jì)算最新最佳分裂屬性和分裂值的過(guò)程,是對(duì)結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集進(jìn)行嘗試水平分裂,使其分裂后具有最小的損失值。由于在進(jìn)行排序歸并前,新的數(shù)據(jù)塊上為每個(gè)屬性獨(dú)立生成的排序后的數(shù)據(jù)集和該屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集均為根節(jié)點(diǎn)的數(shù)據(jù)集,因此最新有序數(shù)據(jù)集OriDatai’對(duì)應(yīng)每棵決策樹(shù)的根結(jié)點(diǎn),并且最新有序數(shù)據(jù)集OriDatai’目標(biāo)列的數(shù)值會(huì)通過(guò)步驟C不斷地更新為最新的殘差值。在數(shù)據(jù)挖掘應(yīng)用中,目標(biāo)列指的是一個(gè)數(shù)據(jù)集中,最終需要預(yù)測(cè)其取值或類別的一個(gè)屬性。通常使用部分或全部非目標(biāo)列的屬性,來(lái)預(yù)測(cè)目標(biāo)列屬性的取值或類別。目標(biāo)列為本領(lǐng)域現(xiàn)有專業(yè)名詞,屬于本領(lǐng)域公知技術(shù),在此不再贅述。步驟B包括以下具體步驟:B1:對(duì)每個(gè)屬性Ti,在根據(jù)步驟A得到屬性Ti所對(duì)應(yīng)的最新有序數(shù)據(jù)集OriDatai’后,利用基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,計(jì)算每個(gè)屬性Ti在最新有序數(shù)據(jù)集OriDatai’的最佳分裂值,具體方法如下:b11:對(duì)于每個(gè)屬性Ti,從最新有序數(shù)據(jù)集OriDatai’的第1個(gè)屬性值V開(kāi)始,按照第1個(gè)屬性值V將最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值小于或等于V的實(shí)例分裂到左側(cè)的子結(jié)點(diǎn),形成左子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatal’,下角標(biāo)l為left的首字母;將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值大于V的實(shí)例劃分到右側(cè)的子結(jié)點(diǎn),形成右子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatar’,下角標(biāo)r為right的首字母;然后通過(guò)公式(1)計(jì)算此時(shí)的損失值,記為Fi1,表示按照第i個(gè)屬性Ti的第1個(gè)屬性值分裂后計(jì)算得到的損失值。損失值是指分裂后,數(shù)據(jù)被劃分到更準(zhǔn)確類別的一種度量,損失值越大表示實(shí)例被劃分到更加準(zhǔn)確的類別,損失值越小表示實(shí)例被劃分到錯(cuò)誤的類別。其中,μl為左子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)l為left的首字母;L表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到左子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μr為右子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)r為right的首字母;R表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到右子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μ表示父結(jié)點(diǎn)中所有實(shí)例在目標(biāo)列的取值的平均值,N表示父結(jié)點(diǎn)中所有實(shí)例的個(gè)數(shù)。b12:對(duì)于每個(gè)屬性Ti,按照步驟b11的方法使用屬性Ti的第2個(gè)屬性值對(duì)最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,通過(guò)水平分裂得到左側(cè)的子結(jié)點(diǎn)和右側(cè)的子結(jié)點(diǎn),再通過(guò)公式(1)再次計(jì)算損失值,記為Fi2,表示按照第i個(gè)屬性Ti的第2個(gè)屬性值分裂后計(jì)算得到的損失值;b13:以此類推,依次計(jì)算按照屬性Ti的其它屬性值水平分裂最新有序數(shù)據(jù)集OriDatai’后的對(duì)應(yīng)的損失值,分別對(duì)應(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對(duì)應(yīng)的分裂值。B2:從所有屬性中,挑選出最大損失值對(duì)應(yīng)的屬性Tj,Tj即為根結(jié)點(diǎn)上的最佳分裂屬性,若多個(gè)屬性所對(duì)應(yīng)的損失值大小一致,則任選其中一個(gè)屬性作為根結(jié)點(diǎn)上的最佳分裂屬性;使用屬性Tj及其對(duì)應(yīng)的分裂值,在根結(jié)點(diǎn)上水平分裂對(duì)應(yīng)的數(shù)據(jù)集OriDataj’,完成對(duì)當(dāng)前結(jié)點(diǎn)上最新最佳分裂屬性的計(jì)算,數(shù)據(jù)集OriDataj’為屬性Tj所對(duì)應(yīng)的經(jīng)排序歸并后的最新有序數(shù)據(jù)集。B3:使用步驟B1和B2所述的方法,按照深度優(yōu)先或廣度優(yōu)先的策略,繼續(xù)分別在父結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn)所對(duì)應(yīng)的數(shù)據(jù)集nodeDatal’及nodeDatar’上計(jì)算最新最佳分裂屬性和分裂值,直到滿足自定義的分裂停止條件為止,使用深度優(yōu)先所對(duì)應(yīng)的分裂停止條件為自定義的樹(shù)的深度,使用廣度優(yōu)先策略所對(duì)應(yīng)的分裂停止條件為自定義的葉子節(jié)點(diǎn)數(shù)。C:更新數(shù)據(jù)分類模型。對(duì)決策樹(shù)中的每個(gè)結(jié)點(diǎn),基于合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集,首先利用步驟B計(jì)算得到的最新最佳分裂屬性,與新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上最佳分裂屬性進(jìn)行對(duì)比;當(dāng)最新最佳分裂屬性和新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上的最佳分裂屬性相同時(shí),僅更新該結(jié)點(diǎn)上該屬性的分裂值,否則進(jìn)一步判斷該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn)還是根結(jié)點(diǎn);如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;然后,對(duì)于剩余的每棵決策樹(shù),結(jié)合前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一棵新的決策樹(shù),替代當(dāng)前的整棵決策樹(shù);每當(dāng)更新完一個(gè)決策樹(shù),使用已更新完的決策樹(shù)對(duì)新數(shù)據(jù)集的目標(biāo)列進(jìn)行殘差更新,迭代地更新每一棵決策樹(shù)及新數(shù)據(jù)集目標(biāo)列的殘差值,直到數(shù)據(jù)分類模型更新完畢。步驟C包括以下具體步驟:C1:對(duì)單棵決策樹(shù)進(jìn)行更新;具體方法如下:首先,對(duì)該決策樹(shù)的根結(jié)點(diǎn),利用步驟B計(jì)算得到該結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性進(jìn)行判斷:如果決策樹(shù)中根結(jié)點(diǎn)上的最新最佳分裂屬性與原有的分裂屬性相同,則僅更新根結(jié)點(diǎn)上該屬性的分裂值;然后,對(duì)根結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn),按照步驟B分別計(jì)算子結(jié)點(diǎn)上的最新最佳分裂屬性,如果該子結(jié)點(diǎn)上的最新最佳分裂屬性和該子結(jié)點(diǎn)上原有的分裂屬性相同,則僅更新該子結(jié)點(diǎn)上該屬性的分裂值;依次類推,按照深度優(yōu)先或廣度優(yōu)先的策略,遞歸地更新每一個(gè)子結(jié)點(diǎn),直到所有結(jié)點(diǎn)更新完成,最終對(duì)一棵決策樹(shù)完成快速更新;此種情況下,僅僅對(duì)結(jié)點(diǎn)的分裂值進(jìn)行更新,與原有的梯度提升決策樹(shù)相比,省去了重新建立決策樹(shù)的過(guò)程,加快了最新決策樹(shù)的建立,整體上促進(jìn)了數(shù)據(jù)分類模型的建立速度。如果決策樹(shù)中某結(jié)點(diǎn)的最新最佳分裂屬性和原有的分裂屬性不相同,則進(jìn)一步判斷該結(jié)點(diǎn)是中間結(jié)點(diǎn)還是根結(jié)點(diǎn),如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;然后,對(duì)于剩余的每棵決策樹(shù),結(jié)合前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一棵新的決策樹(shù),替代當(dāng)前的整棵決策樹(shù)。C2:計(jì)算最新殘差,最新殘差的具體計(jì)算方法如下:基于梯度提升決策樹(shù)算法中決策樹(shù)的集成方法,對(duì)新的數(shù)據(jù)塊到達(dá)后已更新過(guò)的所有決策樹(shù)進(jìn)行集成,使用該集成模型對(duì)合并了新的數(shù)據(jù)塊后的當(dāng)前數(shù)據(jù)集中的每一個(gè)實(shí)例的目標(biāo)列的值進(jìn)行預(yù)測(cè),得到的預(yù)測(cè)值與該實(shí)例在目標(biāo)列上的真實(shí)值相減,得到該實(shí)例對(duì)應(yīng)的殘差值。所有實(shí)例的殘差值計(jì)算完畢后,這些最新的殘差值的集合即為最新殘差。其中,梯度提升決策樹(shù)算法中決策樹(shù)的集成方法如下:某個(gè)實(shí)例的預(yù)測(cè)結(jié)果=第1棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果+第2棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+第3棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+…+最新更新過(guò)的決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率。上述方法中,學(xué)習(xí)率是由用戶定義的用于控制分類模型的收斂速度的一個(gè)數(shù)值型參數(shù),學(xué)習(xí)率的取值范圍是(0,1]。C3:按照步驟C1依次對(duì)剩余的每棵決策樹(shù)進(jìn)行更新,每更新完一棵決策樹(shù)后,都按照步驟C2計(jì)算最新殘差,并將得到的該最新殘差作為下一棵決策樹(shù)的預(yù)測(cè)目標(biāo);以此類推,迭代地對(duì)每棵決策樹(shù)進(jìn)行更新,直到所有決策樹(shù)都更新完成,最終完成對(duì)數(shù)據(jù)分類模型的更新。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明所述的增量式的梯度提升決策樹(shù)更新方法進(jìn)行進(jìn)一步闡釋:假定在初始訓(xùn)練數(shù)據(jù)集上,基于梯度提升決策樹(shù)算法,已經(jīng)建立了一個(gè)數(shù)據(jù)分類模型,如表1所示,所有已排序?qū)傩詫?duì)應(yīng)的初始數(shù)據(jù)集中的一個(gè)初始數(shù)據(jù)集Dold,其中屬性“onlinetime”表示每天上網(wǎng)時(shí)長(zhǎng),并且其所有屬性值已排序;屬性“playtime”表示每天玩游戲時(shí)長(zhǎng);屬性“income”表示月收入;屬性“age”表示年齡,且屬性“age”為需要預(yù)測(cè)的目標(biāo)列。每當(dāng)新的數(shù)據(jù)塊到來(lái)時(shí),使用增量式的梯度提升決策樹(shù)算法,快速更新一個(gè)已有數(shù)據(jù)分類模型。表1A:對(duì)增量數(shù)據(jù)集與原始數(shù)據(jù)集進(jìn)行排序歸并,形成合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集。步驟A包含以下具體步驟:A1:在一個(gè)或多個(gè)新的數(shù)據(jù)塊實(shí)時(shí)到達(dá)后,首先對(duì)新的數(shù)據(jù)塊上的各個(gè)屬性進(jìn)行單獨(dú)排序,然后為每個(gè)屬性獨(dú)立生成一個(gè)排序后的數(shù)據(jù)集;如表2所示,是對(duì)屬性“onlinetime”排序后對(duì)應(yīng)的新數(shù)據(jù)集Dnew。使用此種策略便于后續(xù)步驟中利用多線程或并行的方法同時(shí)對(duì)多個(gè)屬性進(jìn)行最佳分裂值的計(jì)算,以加快最佳分裂屬性和分裂值的計(jì)算速度。OnlinetimePlaytimeincomeage0.5020007020.545003041380025表2A2:使用排序歸并策略,依次將新的數(shù)據(jù)塊上為每個(gè)屬性獨(dú)立生成的排序后的數(shù)據(jù)集和該屬性原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集進(jìn)行合并,合并方法如下:為每個(gè)屬性Ti原有的基于原始數(shù)據(jù)集排序的數(shù)據(jù)集OriDatai設(shè)置指針P1,為新的數(shù)據(jù)塊上對(duì)該屬性獨(dú)立生成的排序后的數(shù)據(jù)集NewDatai設(shè)置指針P2。首先使用指針P2獲得數(shù)據(jù)集NewDatai中的第一個(gè)值V2,并與指針P1所指向的數(shù)據(jù)集OriDatai中的第一個(gè)值V1進(jìn)行比較:如果V2大于V1,則指針P1向前移動(dòng),指向數(shù)據(jù)集OriDatai的下一個(gè)值,直到P1所指向的值大于或等于V2,此時(shí)將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值,插入數(shù)據(jù)集OriDatai中P1所指向的位置上,即指針P1指向插入的新屬性值,然后指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai的下一個(gè)值;如果V2小于或等于V1,則將指針P2獲得的數(shù)據(jù)集NewDatai中的當(dāng)前值V2即新屬性值,直接插入到數(shù)據(jù)集OriDatai中P1所指向的位置之前,指針P1位置不變即指針P1仍指向原屬性值V1,且數(shù)據(jù)集NewDatai上的指針P2向前移動(dòng)指向數(shù)據(jù)集NewDatai中的下一個(gè)值。迭代執(zhí)行上述過(guò)程,直到數(shù)據(jù)集NewDatai中的值完全插入數(shù)據(jù)集OriDatai中,這樣,新的數(shù)據(jù)集NewDatai與原數(shù)據(jù)集OriDatai的合并完成,最后得到的數(shù)據(jù)集OriDatai即為該屬性Ti對(duì)應(yīng)的最新有序數(shù)據(jù)集OriDatai’。本實(shí)施例中,將屬性“onlinetime”已排序的數(shù)據(jù)集Dnew和數(shù)據(jù)集Dold按照排序歸并策略進(jìn)行合并。排序歸并策略如圖2所示,其中M1表示數(shù)據(jù)集Dold中已排序的初始屬性值,M2表示數(shù)據(jù)集Dnew中已排過(guò)序的新屬性值,P1為指向M1的指針,P2為指向M2的指針;首先使用P2指向M2的第一個(gè)屬性值0.5,與M1的屬性值從頭開(kāi)始(此時(shí)屬性值為1)進(jìn)行比較,此時(shí)P2指向的屬性值0.5小于P1所指向的屬性值1,則將P2指向的屬性值0.5,直接插入P1所指向的屬性值1的位置之前,指針P1位置不變,即指針P1仍指向原屬性值1,然后指針P2向前移動(dòng)指向數(shù)據(jù)集Dnew的下一個(gè)屬性值2,此時(shí)P1所指向的屬性值為1;由于此時(shí)指針P2指向的屬性值2大于P1指向的屬性值1,因此指針P1向前移動(dòng),指向下一個(gè)屬性值3;此時(shí)指針P2指向的屬性值2小于P1所指向的屬性值3,則將P2指向的屬性值2插入P1所指向的屬性值3的位置之前,指針P1位置不變,即P1仍指向原有屬性值3,然后指針P2向前移動(dòng)指向數(shù)據(jù)集Dnew的下一個(gè)屬性值4,此時(shí)P1所指向的屬性值為3;由于此時(shí)指針P2指向的屬性值4大于P1指向的屬性值3,因此指針P1向前移動(dòng),指向下一個(gè)屬性值3;由于此時(shí)指針P2指向的屬性值4仍然大于P1指向的屬性值3,因此指針P1繼續(xù)向前移動(dòng),指向下一個(gè)屬性值5;由于此時(shí)指針P2指向的屬性值4小于P1所指向的屬性值5,因此將P2指向的屬性值4直接插入到P1所指向的屬性值5的位置上,指針P1指向最新屬性值4的位置。由于此時(shí)M2中的屬性值已經(jīng)完全插入M1中,最后得到的數(shù)據(jù)集M1即為合并后的數(shù)據(jù)集,如表3所示,記為Dall。OnlinetimePlaytimeincomeage0.502000701030006320.545003030500050316000324138002552400028表3B:分別計(jì)算每個(gè)結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性和分裂值。步驟B包括以下具體步驟:B1:對(duì)每個(gè)屬性Ti,在根據(jù)步驟A得到屬性Ti所對(duì)應(yīng)的最新有序數(shù)據(jù)集OriDatai’后,利用基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,計(jì)算每個(gè)屬性Ti在最新有序數(shù)據(jù)集OriDatai’的最佳分裂值,具體方法如下:b11:對(duì)于每個(gè)屬性Ti,從最新有序數(shù)據(jù)集OriDatai’的第1個(gè)屬性值V開(kāi)始,按照第1個(gè)屬性值V將最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值小于或等于V的行分裂到左側(cè)的子結(jié)點(diǎn),形成左子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatal’,下角標(biāo)l為left的首字母;將最新有序數(shù)據(jù)集OriDatai’中在Ti屬性上的取值大于V的行劃分到右側(cè)的子結(jié)點(diǎn),形成右子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集nodeDatar’,下角標(biāo)r為right的首字母;然后通過(guò)公式(1)計(jì)算此時(shí)的損失值,記為Fi1,表示按照第i個(gè)屬性Ti的第1個(gè)屬性值分裂后計(jì)算得到的損失值。損失值是指分裂后,數(shù)據(jù)被劃分到更準(zhǔn)確類別的一種度量,損失值越大表示實(shí)例被劃分到更加準(zhǔn)確的類別,損失值越小表示實(shí)例被劃分到錯(cuò)誤的類別。其中,μl為左子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)l為left的首字母;L表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到左子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μr為右子結(jié)點(diǎn)中的所有實(shí)例在目標(biāo)列的取值的平均值,下角標(biāo)r為right的首字母;R表示父結(jié)點(diǎn)按照所選取的屬性值分裂后,分裂到右子結(jié)點(diǎn)中實(shí)例的個(gè)數(shù);μ表示父結(jié)點(diǎn)中所有實(shí)例在目標(biāo)列的取值的平均值,N表示父結(jié)點(diǎn)中所有實(shí)例的個(gè)數(shù)。b12:對(duì)于每個(gè)屬性Ti,按照步驟b11的方法使用屬性Ti的第2個(gè)屬性值對(duì)最新有序數(shù)據(jù)集OriDatai’進(jìn)行水平分裂,通過(guò)水平分裂得到左側(cè)的子結(jié)點(diǎn)和右側(cè)的子結(jié)點(diǎn),再通過(guò)公式(1)再次計(jì)算損失值,記為Fi2,表示按照第i個(gè)屬性Ti的第2個(gè)屬性值分裂后計(jì)算得到的損失值;b13:以此類推,依次計(jì)算按照屬性Ti的其它屬性值水平分裂最新有序數(shù)據(jù)集OriDatai’后的對(duì)應(yīng)的損失值,分別對(duì)應(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對(duì)應(yīng)的分裂值。本實(shí)施例中,對(duì)數(shù)據(jù)集Dall中屬性“onlinetime”計(jì)算其最佳分裂值,其依據(jù)是按照該屬性的某個(gè)值分裂后具有最大損失值。首先父結(jié)點(diǎn)包含數(shù)據(jù)集Dall的所有實(shí)例,則父結(jié)點(diǎn)中實(shí)例的個(gè)數(shù)為7,其所有實(shí)例中,位于目標(biāo)列數(shù)值的平均值為42.57。若父結(jié)點(diǎn)嘗試按照屬性“onlinetime”的第一個(gè)值嘗試分裂,則實(shí)例(0.5,0,2000,70)被水平分割到左子結(jié)點(diǎn),左子結(jié)點(diǎn)中所有實(shí)例目標(biāo)列的平均值為70,實(shí)例(1,0,3000,63),(2,0.5,4500,30),(3,0,5000,50),(3,1,6000,32),(4,1,3800,25)和(5,2,4000,28)共6個(gè)實(shí)例被水平分割到右子結(jié)點(diǎn),右子結(jié)點(diǎn)中所有實(shí)例目標(biāo)列的平均值是38。根據(jù)公式(1),此時(shí)的損失值為(1×702+6×382)-7×42.572=878.5657;若父結(jié)點(diǎn)按照屬性“onlinetime”的第2個(gè)值嘗試分裂,則實(shí)例(0.5,0,2000,70),(1,0,3000,63)被水平分割到左子結(jié)點(diǎn),左子結(jié)點(diǎn)中所有實(shí)例目標(biāo)列的平均值為66.5,實(shí)例(2,0.5,4500,30),(3,0,5000,50),(3,1,6000,32),(4,1,3800,25),(5,2,4000,28)共5個(gè)實(shí)例被水平分割到右子結(jié)點(diǎn),右子結(jié)點(diǎn)中所有實(shí)例目標(biāo)值的平均值是33。根據(jù)公式(1),此時(shí)的損失值為(2×66.52+5×332)-7×382=4181.5。按照此方法嘗試對(duì)屬性“onlinetime”的其他值分裂,分裂后得到的損失值分別為3304.58,3642.58,3301.5,2826.0,2578.29。最后選取最大損失值4181.5對(duì)應(yīng)的值1為屬性“onlinetime”的最佳分裂值。對(duì)數(shù)據(jù)集Dall其他屬性,按照步驟B1計(jì)算各個(gè)屬性最大損失值及對(duì)應(yīng)的分裂值。按照公式(1)計(jì)算其他屬性的最大損失值,屬性“playtime”的最大損失值為4181.5,此時(shí)對(duì)應(yīng)的分裂值為0,屬性“income”的最大損失值為4181.5,此時(shí)對(duì)應(yīng)的分裂值為3000。B2:從所有屬性中,挑選出最大損失值對(duì)應(yīng)的屬性Tj,Tj即為根結(jié)點(diǎn)上的最佳分裂屬性,若多個(gè)屬性所對(duì)應(yīng)的損失值大小一致,則任選其中一個(gè)屬性作為根結(jié)點(diǎn)上的最佳分裂屬性;使用屬性Tj及其對(duì)應(yīng)的分裂值,在根結(jié)點(diǎn)上水平分裂對(duì)應(yīng)的數(shù)據(jù)集OriDataj’,完成對(duì)當(dāng)前結(jié)點(diǎn)上最新最佳分裂屬性的計(jì)算,數(shù)據(jù)集OriDataj’為屬性Tj所對(duì)應(yīng)的經(jīng)排序歸并后的最新有序數(shù)據(jù)集。B3:使用步驟B1和B2所述的方法,按照深度優(yōu)先或廣度優(yōu)先的策略,繼續(xù)對(duì)父結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn)分別計(jì)算最新最佳分裂屬性和分裂值,直到滿足自定義的分裂停止條件為止,使用深度優(yōu)先所對(duì)應(yīng)的分裂停止條件為自定義的樹(shù)的深度,使用廣度優(yōu)先策略所對(duì)應(yīng)的分裂停止條件為自定義的葉子節(jié)點(diǎn)數(shù)。本實(shí)施例中,對(duì)數(shù)據(jù)集Dall其他屬性,按照步驟B1計(jì)算各個(gè)屬性最大損失值及對(duì)應(yīng)的分裂值。按照公式(1)計(jì)算其他屬性的最大損失值,屬性“playtime”的最大損失值為4181.5,此時(shí)對(duì)應(yīng)的分裂值為0,屬性“income”的最大損失值為4181.5,此時(shí)對(duì)應(yīng)的分裂值為3000。通過(guò)比較3個(gè)屬性對(duì)應(yīng)的最大損失值可知,3個(gè)屬性的最大損失值相等,則隨機(jī)挑選其中一個(gè)屬性為最佳分裂屬性即可,如選擇最佳分裂屬性是“income”,最佳分裂值為3000,即對(duì)應(yīng)的分裂實(shí)例是(1,0,3000,63)。C:更新數(shù)據(jù)分類模型。對(duì)決策樹(shù)中的每個(gè)結(jié)點(diǎn),基于合并了新的數(shù)據(jù)塊后的當(dāng)前最新有序數(shù)據(jù)集,首先利用步驟B計(jì)算得到的最新最佳分裂屬性,與新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上最佳分裂屬性進(jìn)行對(duì)比;當(dāng)最新最佳分裂屬性和新的數(shù)據(jù)塊到來(lái)前該結(jié)點(diǎn)上的最佳分裂屬性相同時(shí),僅更新該結(jié)點(diǎn)上該屬性的分裂值,否則進(jìn)一步判斷該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn)還是根結(jié)點(diǎn);如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;每當(dāng)更新完一個(gè)決策樹(shù),使用已更新完的決策樹(shù)對(duì)新數(shù)據(jù)集的目標(biāo)列進(jìn)行殘差更新,迭代地更新每一棵決策樹(shù)及新數(shù)據(jù)集目標(biāo)列的殘差值,直到數(shù)據(jù)分類模型更新完畢。步驟C包括以下具體步驟:C1:對(duì)單棵決策樹(shù)進(jìn)行更新;具體方法如下:首先,對(duì)該決策樹(shù)的根結(jié)點(diǎn),利用步驟B計(jì)算得到該結(jié)點(diǎn)在當(dāng)前最新有序數(shù)據(jù)集上的最新最佳分裂屬性進(jìn)行判斷:如果決策樹(shù)中根結(jié)點(diǎn)上的最新最佳分裂屬性與原有的分裂屬性相同,則僅更新根結(jié)點(diǎn)上該屬性的分裂值;然后,對(duì)根結(jié)點(diǎn)的左子結(jié)點(diǎn)和右子結(jié)點(diǎn),按照步驟B分別計(jì)算子結(jié)點(diǎn)上的最新最佳分裂屬性,如果該子結(jié)點(diǎn)上的最新最佳分裂屬性和該子結(jié)點(diǎn)上原有的分裂屬性相同,則僅更新該子結(jié)點(diǎn)上該屬性的分裂值;依次類推,按照深度優(yōu)先或廣度優(yōu)先的策略,遞歸地更新每一個(gè)子結(jié)點(diǎn),直到所有結(jié)點(diǎn)更新完成,最終對(duì)一棵決策樹(shù)完成快速更新;此種情況下,僅僅對(duì)結(jié)點(diǎn)的分裂值進(jìn)行更新,與原有的梯度提升決策樹(shù)相比,省去了重新建立決策樹(shù)的過(guò)程,加快了最新決策樹(shù)的建立,整體上促進(jìn)了數(shù)據(jù)分類模型的建立速度。如果決策樹(shù)中某結(jié)點(diǎn)的最新最佳分裂屬性和原有的分裂屬性不相同,則進(jìn)一步判斷該結(jié)點(diǎn)是中間結(jié)點(diǎn)還是根結(jié)點(diǎn),如果該結(jié)點(diǎn)是決策樹(shù)的中間結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,從該中間結(jié)點(diǎn)起重新訓(xùn)練一棵新的子樹(shù),替代原有的以該中間結(jié)點(diǎn)作為根結(jié)點(diǎn)的子樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;如果該結(jié)點(diǎn)是根結(jié)點(diǎn),則基于CART決策樹(shù)算法中構(gòu)建二叉決策樹(shù)的方法,使用前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一個(gè)新的決策樹(shù),替代原有的、當(dāng)前根結(jié)點(diǎn)所在的整棵決策樹(shù),若該結(jié)點(diǎn)所在決策樹(shù)為第一棵決策樹(shù),則使用當(dāng)前最新有序數(shù)據(jù)集中每一個(gè)實(shí)例目標(biāo)列的值減去所有實(shí)例目標(biāo)列的平均值作為最新殘差;然后,對(duì)于剩余的每棵決策樹(shù),結(jié)合前一棵決策樹(shù)對(duì)應(yīng)的最新殘差,重新訓(xùn)練一棵新的決策樹(shù),替代當(dāng)前的整棵決策樹(shù)。此種情況下,原有的梯度提升決策樹(shù)相比,減少了重新建立決策樹(shù)的深度或個(gè)數(shù),同樣加快了整體數(shù)據(jù)分類模型的建立速度。C2:計(jì)算最新殘差,最新殘差的具體計(jì)算方法如下:基于梯度提升決策樹(shù)算法中決策樹(shù)的集成方法,對(duì)新的數(shù)據(jù)塊到達(dá)后已更新過(guò)的所有決策樹(shù)進(jìn)行集成,使用該集成模型對(duì)合并了新的數(shù)據(jù)塊后的當(dāng)前數(shù)據(jù)集中的每一個(gè)實(shí)例的目標(biāo)列的值進(jìn)行預(yù)測(cè),得到的預(yù)測(cè)值與該實(shí)例在目標(biāo)列上的真實(shí)值相減,得到該實(shí)例對(duì)應(yīng)的殘差值。所有實(shí)例的殘差值計(jì)算完畢后,這些最新的殘差值的集合即為最新殘差。其中,梯度提升決策樹(shù)算法中決策樹(shù)的集成方法如下:某個(gè)實(shí)例的預(yù)測(cè)結(jié)果=第1棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果+第2棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+第3棵決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率+…+最新更新過(guò)的決策樹(shù)對(duì)該實(shí)例的預(yù)測(cè)結(jié)果*學(xué)習(xí)率。上述方法中,學(xué)習(xí)率是由用戶定義的用于控制分類模型的收斂速度的一個(gè)數(shù)值型參數(shù),學(xué)習(xí)率的取值范圍是(0,1]。C3:按照步驟C1依次對(duì)剩余的每棵決策樹(shù)進(jìn)行更新,每更新完一棵決策樹(shù)后,都按照步驟C2計(jì)算最新殘差,并將得到的該最新殘差作為下一棵決策樹(shù)的預(yù)測(cè)目標(biāo);以此類推,迭代地對(duì)每棵決策樹(shù)進(jìn)行更新,直到所有決策樹(shù)都更新完成,最終完成對(duì)數(shù)據(jù)分類模型的更新。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
门源| 青海省| 大英县| 中阳县| 和静县| 新邵县| 民勤县| 福建省| 寻乌县| 成安县| 潞城市| 朝阳区| 朝阳市| 通辽市| 西乌珠穆沁旗| 南康市| 太仆寺旗| 静海县| 广安市| 临西县| 临颍县| 依兰县| 裕民县| 衡南县| 若羌县| 临沭县| 九寨沟县| 杭锦后旗| 民县| 关岭| 托克逊县| 雷波县| 农安县| 广安市| 进贤县| 志丹县| 井陉县| 乌兰察布市| 浑源县| 岳普湖县| 荥经县|