史 偉 李超群
(中國地質(zhì)大學(xué)(武漢)數(shù)學(xué)與物理學(xué)院 湖北 武漢 430074)
為了獲得實例的集成標(biāo)簽,最簡單的方法就是Ipeirotis等[2]提出的眾數(shù)投票法(Majority Voting,MV),即將實例xi的多標(biāo)簽集的多數(shù)類賦予該實例。但是MV比較粗糙,為了獲得更高質(zhì)量的集成標(biāo)簽,很多研究者致力于設(shè)計新的標(biāo)簽真值推理算法。例如Raykar等[3]提出RY,Demartini等[4]提出ZC,Sheng[5]提出MV的兩種變形MV-Freq和MV-Beta,Tian等[6]提出的M3V,Zhang等[7]提出的DEWMV。
毫無疑問,無論使用哪一種真值推理算法,集成標(biāo)簽中仍存在一定程度的噪聲。這里噪聲是指與專家標(biāo)簽不同的集成標(biāo)簽,集成標(biāo)簽為噪聲的實例本文稱為噪聲實例。在監(jiān)督學(xué)習(xí)中,訓(xùn)練數(shù)據(jù)集的標(biāo)簽質(zhì)量對于模型的構(gòu)建至關(guān)重要。因為錯誤標(biāo)注的數(shù)據(jù)可能會降低目標(biāo)分類器的性能,同時增加模型訓(xùn)練的復(fù)雜度,所以噪聲處理是十分有必要的。在信號處理領(lǐng)域,噪聲處理是一個相對成熟的問題。雖然大多數(shù)工作可以直接用于集成標(biāo)簽進行噪聲過濾或糾正,但這些工作不是針對眾包數(shù)據(jù)設(shè)計的,不能有效利用眾包系統(tǒng)所產(chǎn)生的信息?,F(xiàn)有文獻(xiàn)中,將眾包噪聲處理與機器學(xué)習(xí)結(jié)合的研究并不多。另外,雖然很多噪聲過濾方法可以有效地過濾集成標(biāo)簽中的噪聲數(shù)據(jù),但是簡單拋棄一部分實例無疑是一種數(shù)據(jù)浪費,而標(biāo)簽糾正技術(shù)可以減少這一浪費?;谝陨蟽牲c,本文致力于眾包數(shù)據(jù)的標(biāo)簽噪聲糾正技術(shù),利用實例多標(biāo)簽集中的信息,提出一個新的標(biāo)簽噪聲糾正方法,稱為修改的基于聚類的噪聲糾正算法(MCNC)。多標(biāo)簽集中的信息用于監(jiān)督標(biāo)簽噪聲糾正過程。在若干數(shù)據(jù)集上的實驗結(jié)果表明,對比其他標(biāo)簽噪聲糾正方法,該方法可以更有效地提高數(shù)據(jù)質(zhì)量和目標(biāo)模型質(zhì)量。
面向眾包機器學(xué)習(xí),研究者們展開了很多工作。其中主要的工作集中在真值推理算法的改進。還有的工作是將眾包學(xué)習(xí)和主動學(xué)習(xí)結(jié)合,這個方向的核心觀點是如何選擇最不確定的實例[8-9]進行標(biāo)注;也有一部分工作是將眾包生成的多標(biāo)簽集和專家標(biāo)簽結(jié)合[10-12],通過引入小部分專家標(biāo)簽(黃金數(shù)據(jù))來提升集成標(biāo)簽的質(zhì)量,本質(zhì)上仍屬于標(biāo)簽真值推理的范疇。盡管在提升集成標(biāo)簽質(zhì)量方面研究者們做了很大的努力,一個在若干個實際眾包數(shù)據(jù)集上的實證研究表明這些算法的表現(xiàn)沒有顯著差異[13]。為了進一步提升集成標(biāo)簽的質(zhì)量,進行標(biāo)簽噪聲處理是十分有必要的。
一份關(guān)于標(biāo)簽噪聲的綜述[14]回顧了標(biāo)簽噪聲魯棒、標(biāo)簽噪聲清理和標(biāo)簽噪聲容忍模型。而標(biāo)簽噪聲清理往往比建立噪聲容忍學(xué)習(xí)模型[15-17]更加有效。存在很多可行的噪聲清理方法,例如,基于度量和閾值的方法[18]通過一種特殊的度量評價了每一個實例,如果某個實例在某方面的度量超過預(yù)定閾值,則這個實例將被視為噪聲被去除。K近鄰(KNN)的方法使用了KNN分類器對標(biāo)簽噪聲敏感的特點;基于KNN的方法移除被其他實例認(rèn)為是噪聲的實例?;谀P陀绊懞蛢?nèi)省的方法[19-20],通過分析錯誤標(biāo)記實例對模型的影響來檢測錯誤標(biāo)記實例。一種更通用的噪聲過濾的方法是基于模型預(yù)測的過濾,其通過訓(xùn)練一個學(xué)習(xí)模型去分類實例并發(fā)現(xiàn)噪聲,例如,classification filtering(CF)、voting filtering(VF)和partition filtering(PF)[21]。實際上,很少有研究專門針對眾包領(lǐng)域的噪聲處理。Li等[22]驗證了通過噪聲過濾技術(shù)可以提高眾包數(shù)據(jù)的集成標(biāo)簽質(zhì)量和目標(biāo)分類器的性能。
相比噪聲過濾,標(biāo)簽噪聲糾正的算法要少一些。盡管噪聲過濾器是有效的處理噪聲的方法,但可能會過濾過多實例[14],使得剩余的實例不足以訓(xùn)練一個好的分類器,并且對于數(shù)據(jù)資源是一種極大的浪費。因此,本文致力于通過噪聲糾正技術(shù)提升眾包學(xué)習(xí)的性能。下面將回顧現(xiàn)有文獻(xiàn)中的噪聲糾正技術(shù)。
Nicholson等[23]提到了三種標(biāo)簽噪聲糾正方法:Polishing Labels(PL)、Self-Training Correction(STC)和Cluster-based Correction(CC)。PL是由Teng[24]中Polishing方法改進而來,將其從關(guān)注屬性噪聲的糾正更改為關(guān)注標(biāo)簽噪聲的糾正。該方法首先將數(shù)據(jù)集分成十個部分,然后用單一的分類算法在每一個部分上建立一個模型,用十個模型對數(shù)據(jù)集中每一個實例進行分類,得票多的標(biāo)簽被賦予這個實例。STC靈感來源于Triguero等[25]的自訓(xùn)練,具體而言,STC首先在數(shù)據(jù)集上使用一個噪聲過濾器生成一個干凈數(shù)據(jù)集和噪聲數(shù)據(jù)集,然后在干凈數(shù)據(jù)集上訓(xùn)練一個模型用于計算噪聲數(shù)據(jù)集中每個實例是某個標(biāo)簽的置信度,置信度最高的標(biāo)簽被賦予這個實例,并將這個實例加入到干凈數(shù)據(jù)集中。重復(fù)這一過程,直到一定比例的噪聲實例被重新標(biāo)記并加入干凈數(shù)據(jù)集。不同于上述兩種方法,CC是基于聚類的方法,該方法能形成獨立的簇標(biāo)簽,無視數(shù)據(jù)集中的噪聲等級。CC的基本思想是在數(shù)據(jù)集上執(zhí)行多次聚類算法,根據(jù)每個簇中實例標(biāo)簽的分布和簇的大小,為每個簇中的所有實例賦予相同的權(quán)重,權(quán)重反映了實例屬于不同標(biāo)簽的可能性。最終每個實例對從不同簇中得到的權(quán)重求和,并將對應(yīng)最大權(quán)重的標(biāo)簽賦予該實例。CC因為多次聚類的原因,有較高的時間復(fù)雜度,但作者的實驗結(jié)果表明,相比于PL和STC,CC的性能更好。
但上面提到的方法都不是為眾包學(xué)習(xí)特別設(shè)計的。據(jù)我們所知,只有兩個噪聲糾正方法是特別為眾包學(xué)習(xí)設(shè)計的。一個是自適應(yīng)投票噪聲糾正方法(Adaptive Voting Noise Correction,AVNC)[26]。AVNC通過真值推理階段得到的信息監(jiān)督噪聲識別過程,同時在眾包系統(tǒng)中使用工人的標(biāo)注質(zhì)量去估計數(shù)據(jù)集中噪聲的數(shù)量。不僅如此,AVNC還對噪聲實例進行排序,以此來決定哪些實例更應(yīng)該被去除。然后AVNC利用集成學(xué)習(xí)模型來糾正噪聲實例的標(biāo)簽。AVNC的優(yōu)勢是使用了真值推理階段的信息(即工人的標(biāo)注質(zhì)量)來監(jiān)督噪聲的識別和過濾。但是AVNC僅僅關(guān)注了數(shù)據(jù)質(zhì)量而沒有關(guān)注模型質(zhì)量。另一個是基于類別間隔的噪聲糾正方法(Between-class Margin-based Noise Correction,BMNC)[27]。文章認(rèn)為如果用于構(gòu)建過濾器的數(shù)據(jù)集本身是帶有噪聲的,那么過濾器將不可避免地被噪聲實例影響,導(dǎo)致產(chǎn)生的干凈數(shù)據(jù)集并不完全干凈。所以BMNC在進行噪聲過濾之前,利用真值推理階段的信息進行一次預(yù)過濾,去除一些潛在的噪聲實例;然后訓(xùn)練一個分類器用于進一步分離出噪聲實例,這是第二步過濾。經(jīng)過兩步過濾后得到一個干凈數(shù)據(jù)集和一個噪聲數(shù)據(jù)集,在干凈數(shù)據(jù)集上構(gòu)建分類器,用于對噪聲數(shù)據(jù)集中的實例進行重新標(biāo)注。
本文致力于結(jié)合眾包系統(tǒng)的信息和聚類算法,設(shè)計一個新的標(biāo)簽噪聲糾正方法,本文算法同時關(guān)注標(biāo)簽質(zhì)量和模型質(zhì)量。
一般而言,一個標(biāo)簽噪聲糾正方法包括兩個步驟:噪聲識別和噪聲糾正。噪聲識別最常見的一類方法是在數(shù)據(jù)集上建立分類器,利用分類器的預(yù)測標(biāo)簽與實例本身的標(biāo)簽進行對照,從而識別哪些實例是噪聲實例。在識別出噪聲標(biāo)簽后,再進行校正。但由于數(shù)據(jù)標(biāo)簽本身帶有噪聲,直接在這樣的數(shù)據(jù)上建立分類器進行噪聲識別,勢必會限制噪聲識別的性能,導(dǎo)致噪聲識別準(zhǔn)確率不理想。面向眾包數(shù)據(jù),BMNC算法[27]使用眾包數(shù)據(jù)的多標(biāo)簽集信息對噪聲進行了一次預(yù)過濾,去除部分潛在噪聲是有效且必要的。
BMNC算法通過使用每個實例的多標(biāo)簽集合中的信息來對數(shù)據(jù)集進行預(yù)過濾。通過讓不同的工人對同一個實例進行標(biāo)注,每個實例xi會有一個多標(biāo)簽集Ii。用Nl表示多標(biāo)簽集Ii中標(biāo)簽l的數(shù)量,pl表示標(biāo)簽l出現(xiàn)的比例,則:
式中:L是數(shù)據(jù)集的標(biāo)簽集合,包含了數(shù)據(jù)集中所有可能的標(biāo)簽取值。
之后,在預(yù)過濾后的數(shù)據(jù)集上再過濾,用于進一步識別出噪聲。具體的做法是在預(yù)過濾的數(shù)據(jù)集上建立分類器,利用分類器對預(yù)過濾后的數(shù)據(jù)集進行分類,若一個實例所獲得的分類器的預(yù)測標(biāo)簽不同于該實例的集成標(biāo)簽,則該實例被判定為噪聲。經(jīng)過兩步過濾后,已經(jīng)識別出所有可能的噪聲實例。
對噪聲實例的糾正,比較普遍的做法之一也是在數(shù)據(jù)集上建立分類器,用分類器對噪聲實例進行預(yù)測,將預(yù)測的標(biāo)簽賦予噪聲實例,達(dá)到對噪聲實例的標(biāo)簽進行糾正的目的,比如STC方法。但本文擬采用聚類方法CC,在原始數(shù)據(jù)集上進行多次聚類,利用CC的思想對噪聲實例賦予新的標(biāo)簽。之前的工作已經(jīng)表明,相較于STC,CC的效果更好??赡艿脑蛟谟冢?1) CC的方法是基于聚類的方法,因此方法的性能本身與數(shù)據(jù)的標(biāo)簽質(zhì)量無關(guān);(2) CC的方法進行了多次聚類,形成了許多簇,因此是一個類似集成學(xué)習(xí)的思路。關(guān)于監(jiān)督學(xué)習(xí)的研究已經(jīng)表明,基于集成學(xué)習(xí)的分類器往往比單分類器要顯示出更好的分類性能。CC可以看成是基于聚類的集成學(xué)習(xí),利用多次聚類的思路,既克服了單次k均值算法對k值大小敏感的問題,也在多次聚類中利用大小不同的簇對實例的可能類標(biāo)賦予不同的權(quán)值,通過權(quán)值求和得到實例的最終標(biāo)簽。
基于上述討論,本文在構(gòu)建過濾器去識別噪聲之前,對數(shù)據(jù)集進行一個預(yù)過濾。通過預(yù)過濾,去除一些潛在的噪聲實例。之后,在預(yù)過濾后的數(shù)據(jù)集上訓(xùn)練一個分類器,用于進一步識別出噪聲實例。經(jīng)過兩步過濾后,已經(jīng)識別出所有可能的噪聲實例。接下來是對噪聲實例的糾正,使用原始數(shù)據(jù)集中所有的實例進行多次聚類,利用聚類結(jié)果對前兩步識別出的噪聲實例進行重新標(biāo)注。將本文算法稱為修改的基于聚類的噪聲糾正算法(MCNC)。
MCNC方法細(xì)節(jié)如算法1和算法2所示。算法1中,1-7行使用熵對數(shù)據(jù)集中的實例進行初步過濾。8-9行進行了第二次過濾。為了解決數(shù)據(jù)集中標(biāo)簽不均衡問題,10-12行計算了數(shù)據(jù)集中指定標(biāo)簽的分布,該信息被用于算法2中,計算每個實例的聚類標(biāo)簽權(quán)重。13-21行給出了所有需要的聚類算法,這里使用k均值聚類,k取值從2到集合中實例數(shù)的一半不等。這個過程會產(chǎn)生大量不同大小的簇,用于增加聚類得到的簇的多樣性。在每次聚類結(jié)果中,按照簇的不同,依據(jù)簇中所有實例的標(biāo)簽分布,計算該簇整體是各個類標(biāo)的可能性,即算法2計算的權(quán)值。18行對簇中每個實例進行一個權(quán)值的累加,即每個實例是各標(biāo)簽的可能性。22-25行使用聚類產(chǎn)生的標(biāo)簽權(quán)重對噪聲實例進行重新標(biāo)注。算法2對算法1中的18行的CalcWeights進行了詳細(xì)解釋,說明了如何根據(jù)數(shù)據(jù)集中標(biāo)簽分布和具體簇中的標(biāo)簽分布計算各標(biāo)簽權(quán)重。第1行計算了具體簇中的標(biāo)簽分布,第2行計算各標(biāo)簽的預(yù)期分布,第3行是一個乘數(shù),用于給較大的簇更大的重要級,但包含100個實例以上的簇獲得最大的重要級是2,是為了不讓非常大的簇淹沒較小的簇。4-6行計算了該簇是各個標(biāo)簽的權(quán)重,簇中標(biāo)簽的實際分布減去標(biāo)簽的預(yù)期分布,并按照數(shù)據(jù)集中的標(biāo)簽分布進行縮放,乘以乘數(shù)得到權(quán)重。
算法1MCNC流程
1.一個空的集合A;
2.fori=1 toNdo
3.計算多標(biāo)簽集合Ii中每個標(biāo)簽的比例pl;
6.endif
7.endfor
10.fori=1 toNdo
12.endfor
13.fori=1 toado
16.for聚類結(jié)果C中所有的簇cdo
17.forc中全部的實例xdo
18.InsWeightsx=InsWeightsx+
CalcWeights(cj,LabelTotals,L);
19.endfor
20.endfor
21.endfor
22.forA+B中所有實例xdo
25.endfor
算法2CalcWeights
輸入:簇c,標(biāo)簽分布向量v,標(biāo)簽集合L。
輸出:權(quán)重向量w。
1.d=簇c中的標(biāo)簽分布
2.u=1/|L|;
3.multiplier= min(log10(sizeof(c)),2);
4.fori=1 to |L|do
6.endfor
7.returnw
依據(jù)數(shù)據(jù)質(zhì)量和模型質(zhì)量兩個指標(biāo),將MCNC與MV、PL、STC、CC、BMNC進行比較。其中,MV是指沒有應(yīng)用噪聲糾正方法,僅使用多數(shù)投票算法來產(chǎn)生實例的集成標(biāo)簽。MV的結(jié)果被作為基準(zhǔn)與其余五種噪聲糾正算法進行比較。數(shù)據(jù)質(zhì)量的定義為:數(shù)據(jù)集中集成標(biāo)簽與真實標(biāo)簽相同的實例比例。模型質(zhì)量定義為:在糾正后的數(shù)據(jù)集上訓(xùn)練目標(biāo)分類器獲得的分類精度。這里使用C4.5作為目標(biāo)分類器。
本文在人群環(huán)境及其知識分析平臺(CEKA)[28]上實現(xiàn)MCNC和BMNC,使用CEKA平臺現(xiàn)有的算法MV、PL、STC和CC的代碼;使用懷卡托知識分析平臺(WEKA)[29]的C4.5(J48)代碼。實驗中的五種噪聲糾正方法的設(shè)置如下:
(1) PL:C4.5作為PL分類器。
(2) STC:用分類過濾器(CF)作為STC的過濾器,糾正的噪聲實例比例設(shè)置為0.8,C4.5作為STC分類器。
(3) CC:聚類次數(shù)a=10,采用k均值聚類,k值從2到實例數(shù)的一半不等。
(4) BMNC:CF為過濾器,閾值δ=0.95,C4.5為BMNC的分類器。
(5) MCNC:CF為過濾器,閾值δ=0.95,聚類次數(shù)a=10,采用k均值聚類為CC的聚類方法,k值從2到實例數(shù)的一半不等。
另外,當(dāng)CF作為STC、BMNC和MCNC的噪聲過濾器時,需要設(shè)置一個參數(shù)n(n是對訓(xùn)練數(shù)據(jù)進行分區(qū)的數(shù)量)和用于過濾的分類器。在本文實驗中,n=10,分類器同樣是C4.5。
在22個數(shù)據(jù)集上進行實驗,表1展示了22個數(shù)據(jù)集的詳細(xì)信息。為了模擬每個實例獲得多標(biāo)簽集合的過程,隱藏了每個實例原本的真實標(biāo)簽,并使用9個模擬工人對每個實例進行標(biāo)注。每個標(biāo)注者的標(biāo)注質(zhì)量是pj∈[0,1](j=1,2,…,9),即對于每個工人來說,有pj的概率給實例標(biāo)注原本的真實標(biāo)簽,有1-pj的概率標(biāo)注其他可能的標(biāo)簽。為了確定實驗結(jié)果對于不同標(biāo)注質(zhì)量的穩(wěn)定性,本文實驗設(shè)置了兩種不同的標(biāo)注質(zhì)量:
(1) 在第一系列實驗中,設(shè)置所有工人的標(biāo)注質(zhì)量為0.6。即pj=0.6(j=1,2,…,9)。
(2) 在第二系列實驗中,每個工人的標(biāo)注質(zhì)量均勻分布在[0.55,0.75]上,即pj∈[0.55,0.75](j=1,2,…,9)。
表1 數(shù)據(jù)集信息
續(xù)表1
在每個實例獲得9個工人標(biāo)注的標(biāo)簽后,使用真值推理算法MV推理集成標(biāo)簽,然后應(yīng)用五種噪聲糾正算法識別并糾正集成標(biāo)簽中的噪聲。在糾正后的數(shù)據(jù)集上計算數(shù)據(jù)質(zhì)量,并在糾正后的數(shù)據(jù)集上訓(xùn)練目標(biāo)分類器獲得模型質(zhì)量。所有實驗結(jié)果都采用十折交叉驗證得到,測試集不參與數(shù)據(jù)質(zhì)量的計算。
表2和表3給出了第一系列實驗的結(jié)果,該實驗中所有工人的標(biāo)注質(zhì)量都是相同的。表2展示了原始集成標(biāo)簽的標(biāo)簽質(zhì)量和每個數(shù)據(jù)集分別應(yīng)用五種噪聲糾正算法后的標(biāo)簽質(zhì)量。表3展示了應(yīng)用不同糾正算法后的模型質(zhì)量。
表2 第一系列實驗的標(biāo)簽質(zhì)量結(jié)果(%)
表3 第一系列實驗的模型質(zhì)量結(jié)果(%)
從表2中可以看出,所有的噪聲糾正方法都可以在大部分?jǐn)?shù)據(jù)集上提升標(biāo)簽質(zhì)量。MCNC在13個數(shù)據(jù)集上的效果最好,即在13個數(shù)據(jù)集上提升標(biāo)簽質(zhì)量最多(例如:iris、labor和segment等)。其次是BMNC,在6個數(shù)據(jù)集上提升標(biāo)簽質(zhì)量最多。后面分別是PL和CC,分別在2個和1個數(shù)據(jù)集上取得最好的效果。而STC沒有在任何一個數(shù)據(jù)集上取得最好的效果。從表3可以看出,在一些情況下,提升標(biāo)簽質(zhì)量可以提高目標(biāo)分類器的性能。MCNC在9個數(shù)據(jù)集上性能最優(yōu),其次是STC和CC的4個,PL在3個數(shù)據(jù)集表現(xiàn)最好,BMNC只有2個。
表4和表5給出了第二系列實驗的結(jié)果,該實驗中所有工人的標(biāo)注質(zhì)量均勻分布在[0.55,0.75]之間。表4展示了原始集成標(biāo)簽的標(biāo)簽質(zhì)量和每個數(shù)據(jù)集分別應(yīng)用五種噪聲糾正算法后的標(biāo)簽質(zhì)量。表5展示了應(yīng)用不同糾正算法后的模型質(zhì)量。
表4 第二系列實驗的數(shù)據(jù)質(zhì)量結(jié)果(%)
表5 第二系列實驗的模型質(zhì)量結(jié)果(%)
續(xù)表5
從表4可以看出,MCNC的性能依然是最優(yōu)的,在14個數(shù)據(jù)集上取得最好效果,BMNC和PL在3個數(shù)據(jù)集上性能最優(yōu),CC只有2個,STC依舊沒有突出性能的數(shù)據(jù)集。表5顯示,MCNC在7個數(shù)據(jù)集上性能最優(yōu),PL有5個,CC和BMNC都有4個,STC僅有3個。
結(jié)合兩個系列的實驗結(jié)果,在大部分?jǐn)?shù)據(jù)集上,改善眾包數(shù)據(jù)的標(biāo)簽質(zhì)量,可以在一定程度上提升相應(yīng)的目標(biāo)模型質(zhì)量。但不同位置的實例對于模型建立的貢獻(xiàn)度是不同的,直觀而言,分類決策面的邊界數(shù)據(jù)點的貢獻(xiàn)度要高于類內(nèi)部的數(shù)據(jù)點,所以數(shù)據(jù)標(biāo)簽質(zhì)量的提升并不必然導(dǎo)致目標(biāo)模型質(zhì)量的提升。
通過上面兩個系列的實驗,相比較PL、STC、CC和BMNC,本文方法MCNC更能有效地提升眾包數(shù)據(jù)的標(biāo)簽質(zhì)量和目標(biāo)模型質(zhì)量。
本文提出一種新的針對眾包學(xué)習(xí)的標(biāo)簽噪聲糾正方法MCNC。本文方法使用了真值推理階段的信息來監(jiān)督噪聲的識別,使用了無視原本噪聲等級的基于聚類的算法進行噪聲糾正。相對于被比較的各種方法,MCNC能夠有效地提升標(biāo)簽質(zhì)量和模型質(zhì)量。
后續(xù)工作將針對提升數(shù)據(jù)標(biāo)簽質(zhì)量并非一定提升目標(biāo)模型質(zhì)量的現(xiàn)象,研究分類決策面的邊界數(shù)據(jù)點的標(biāo)簽噪聲糾正。期望可以通過提升分類決策面的邊界數(shù)據(jù)點標(biāo)簽質(zhì)量,使得目標(biāo)模型質(zhì)量獲得較大提升。然而哪些實例更有可能是分類決策面的邊界點數(shù)據(jù),對模型建立有更高的貢獻(xiàn)度,是需要仔細(xì)考慮的問題。同時,基于聚類的集成方法對計算資源消耗較大,運行時間較長,后續(xù)會對該方法進一步優(yōu)化,以減少運行時間。