趙 睿
(中共鶴壁市委黨校,河南 鶴壁 458030)
采摘農(nóng)作物是一種重復(fù)且繁瑣的工作,對勞動(dòng)力需求很大。雖然小麥、玉米和大麥等基本糧食都由收割機(jī)來完成收割任務(wù),但對于采摘水果和蔬菜等作物則需要采摘機(jī)器人來完成。為此,基于多因子量化選股模型對采摘機(jī)器人學(xué)習(xí)策略進(jìn)行制定,實(shí)現(xiàn)了對采摘機(jī)器人的路徑規(guī)劃,對采摘機(jī)器人的研究具有一定參考價(jià)值。
指數(shù)增強(qiáng)基金是利用數(shù)字模型和算法計(jì)算出交易決策,給基金經(jīng)理作為調(diào)倉參考。其核心思路是:在保證超額波動(dòng)率的情況下,采用多因子選股模型建立投資組合,選擇一些對股票收益影響大的因子,通過這些因子實(shí)現(xiàn)對收益率高的股票進(jìn)行投資,實(shí)現(xiàn)超額完成目標(biāo)指數(shù)的收益。當(dāng)前環(huán)境下,采用多因子模型構(gòu)建選股策略是非常普遍的做法,其多因子量化模型流程如圖1所示。
影響股票投資策略的因子有很多,候選因子的選擇也相應(yīng)較多。其可以是基本指標(biāo),如市盈率PE(Price earnings ratio,即P/E ratio)和平均市凈率PB(Price to book ratio);也可以是技術(shù)指標(biāo),如動(dòng)量、換手率、成交量、相對強(qiáng)弱指數(shù)和隨機(jī)指數(shù)等;又或者是其他宏觀方面的指標(biāo)等。選擇哪些因子作為候選因子,是根據(jù)經(jīng)濟(jì)環(huán)境和投資經(jīng)驗(yàn)決定的,而選擇有效因子是增強(qiáng)選股模型收益的核心因素。
圖1 多因子量化模型流程圖Fig.1 The flow chart of multi-factor quantitative model
在前期收集股票因子的過程中,這個(gè)數(shù)據(jù)會存在噪聲、量綱不一致和缺失等問題,需要對數(shù)據(jù)進(jìn)行預(yù)處理,剔除掉不合適的數(shù)據(jù),讓數(shù)據(jù)模型更具有適應(yīng)性,從而滿足選股模型的需求。對股票因子進(jìn)行預(yù)處理的方法很多,如對數(shù)據(jù)進(jìn)行清理、集成、變化和規(guī)約等。本文是將多因子量化選股模型應(yīng)用于采摘機(jī)器人路徑規(guī)劃中,數(shù)據(jù)完整性顯得尤為重要。因此,采用缺失處理、離群值處理,標(biāo)準(zhǔn)化和中性化等4種方法對因子數(shù)據(jù)進(jìn)行預(yù)處理。
股票市場上的影響因子成千上萬,每個(gè)因子伴隨市場環(huán)境具有不同的作用。本文采用XGBoost模型方法對能影響股票收率的因子進(jìn)行分析研究。
1)XGBoost模型方法理論基礎(chǔ)。XGBoost模型方法是采用梯度提升樹的智能算法,可以自動(dòng)判斷獲取到的特征因子的重要性,并利用提升樹對這些特征進(jìn)行選擇和分類。本文就是在算法框架上使用XGBoost模型方對重要的候選因子進(jìn)行篩選。
XGBoostt模型方法是利用不斷添加新樹并學(xué)習(xí)新函數(shù)方法對上一次預(yù)測結(jié)果進(jìn)行重新擬合,從而通過特征分裂組成新的樹。XGBoostt模型方法的核心是:在確定第t-1顆樹時(shí),對下一棵樹的葉子結(jié)構(gòu)權(quán)重ω和第t棵樹進(jìn)行預(yù)測,其目標(biāo)函數(shù)表達(dá)式為
(1)
其中,l為損失函數(shù);Ω(ft)為正則項(xiàng);c為常數(shù)項(xiàng);f(x)為其中一顆回歸樹;yi為整個(gè)累加模型的輸出。
對式(1)進(jìn)行二階泰勒處理后得
(2)
(3)
采用正則化項(xiàng)對式(2)進(jìn)行展開,可得
(4)
對式(4)進(jìn)行求導(dǎo),求出葉子結(jié)構(gòu)權(quán)重ωj的最優(yōu)值為
(5)
帶入式(4),可得
(6)
其中,γ為葉子的個(gè)數(shù)。
式(6)是判斷一棵樹結(jié)果是否滿足要求的標(biāo)準(zhǔn),分?jǐn)?shù)越小,表示結(jié)構(gòu)越好。其可以用來作為最佳切分點(diǎn)的判斷,也可以用來在確定是否還需要在此基礎(chǔ)上進(jìn)行新的分裂。其分裂的增益表達(dá)式為
(7)
式(7)是整個(gè)XGBoost模型方法的根據(jù),其是左子、右子和不分割等3部分的分?jǐn)?shù),通過該式可以在一定程度上對樹結(jié)構(gòu)分裂程度上進(jìn)行控制。
XGBoost模型方法處理流程為:①確定輸入條件,即當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)集;②確定輸出條件,即特征維度;③根據(jù)最高分進(jìn)行分割輸出。XGBoost模型方法具體的流程圖如圖2所示。
多因子量化選股模型主要包括打分法和回歸法兩種構(gòu)建方法,本文采用前者。其主要思路是:選擇一些對股票收益影響大的預(yù)測因子,再根據(jù)股票對這些因子進(jìn)行排序,并在相對位置進(jìn)行打分;隨后,根據(jù)每個(gè)因子的權(quán)重比例對每個(gè)因子進(jìn)行計(jì)算,得出個(gè)股的綜合分?jǐn)?shù),并進(jìn)行降序排列,挑選出分?jǐn)?shù)高的股票作為投資的組合。但是由于行業(yè)變化和投資環(huán)境的變化,很多因子會出現(xiàn)不穩(wěn)定的情況,隨著時(shí)間而逐漸失去作用,所以在打分模型中需對于選用的因子進(jìn)行不斷的評價(jià)和改進(jìn),剔除不良和因子和加入新的有效因子。若每次都根據(jù)因子計(jì)算的個(gè)股綜合分?jǐn)?shù)重新建立投資組合,這樣換手率會很大高,從而大大增加交易成本,所以還會利用半衰期IC加權(quán)方法構(gòu)建模型,提前先確定每個(gè)因子影響力的長短,然后隔一段周期才進(jìn)行大的調(diào)倉。
圖2 XGBoost模型方法流程圖Fig.2 The flow chart XGBoost model method
采用學(xué)習(xí)策略模型對采摘機(jī)器人路徑進(jìn)行規(guī)劃,環(huán)境場景通過柵格法建立二維地圖。在環(huán)境場景中,障礙物、起始點(diǎn)、終止點(diǎn)都是在初始時(shí)刻確定好,在整個(gè)過程中都不會發(fā)生變化。采摘機(jī)器人路徑規(guī)劃流程如圖3所示。
圖3 采摘機(jī)器人路徑規(guī)劃流程圖Fig.3 The flow chart of picking robot path planning
對二維地圖進(jìn)行柵格化處理中,一般通過對x軸和y軸方向分別進(jìn)行柵格化。圖4是對二維環(huán)境進(jìn)行柵格化,黑色和白色分別為障礙物和無障礙物區(qū)域。
圖4 柵格地圖模型示意圖Fig.4 The schematic diagram of grid map model
蟻群算法以基于動(dòng)物靈感的一種算法,其由Italy學(xué)者Dorigo等人提出,核心思想是實(shí)時(shí)對螞蟻行走路上的信息素進(jìn)行更新,并通過最優(yōu)反饋實(shí)現(xiàn)算法的收斂。該方法被廣泛應(yīng)用在復(fù)雜組合優(yōu)化問題上,如旅行商問題、車間調(diào)度、路徑優(yōu)化、無線傳感器網(wǎng)絡(luò)控制等。為了實(shí)現(xiàn)對采摘機(jī)器人路徑規(guī)劃,本文將多因子量化方法應(yīng)用在蟻群算法上,對其進(jìn)行改進(jìn)。改進(jìn)包括兩個(gè)方向:①對蟻群信息素的更新方法進(jìn)行改進(jìn);②利用多因子量化中的XGBoost模型方法,對蟻群算法中當(dāng)前位置到下一位置的轉(zhuǎn)移概率進(jìn)行改進(jìn)。
蟻群信息素采用多因子量化的學(xué)習(xí)策略進(jìn)行實(shí)時(shí)更新,將蟻群移動(dòng)路徑上任何一點(diǎn)的信息素作為多因子量化學(xué)習(xí)策略的長期收益來求解。任意時(shí)刻對任意柵格的信息素采用多因子量化學(xué)習(xí)策略進(jìn)行全局更新。
設(shè)定蟻群算法立即獎(jiǎng)賞函數(shù)規(guī)則為:當(dāng)螞蟻順利到達(dá)目標(biāo)終點(diǎn)后,會獲得+10的立即獎(jiǎng)賞;而到達(dá)非目標(biāo)終點(diǎn)的位置,則獲得+1的累計(jì)獎(jiǎng)賞。
設(shè)定蟻群算法遷移函數(shù)規(guī)則為:采摘機(jī)器人從下向上運(yùn)動(dòng)時(shí),x軸坐標(biāo)不變,y軸方向依次-1,往其反方向時(shí)則相反;采摘機(jī)器人從右向左運(yùn)動(dòng)時(shí),y軸坐標(biāo)保持不變,x軸方向依次-1,往其反方向時(shí)也相反。
采用多因子量化的學(xué)習(xí)策略對蟻群信息素進(jìn)行實(shí)時(shí)更新的算法為:
1)輸入:路徑探索因子為ε,折扣率為γ,步長因子為α,情節(jié)最大值為ET,最大時(shí)間步為ETS。
2)參數(shù)初始化:二維地圖柵格化的狀態(tài)空間為X,動(dòng)作包括5種,即向下(-1)、向上(+1)、向左(-1)、向右(+1)和原地(0);初始化時(shí)所有的動(dòng)作收益值Q都是0,即Q0(x,u)=0;初始化狀態(tài)為x=x0。
Repeat(ET)
Loop(ETS)
Step2:根據(jù)路徑探索因子ε的值,設(shè)定1-ε的概率會選擇最優(yōu)動(dòng)作α,而選擇其他動(dòng)作的概率為ε。
Step3:根據(jù)選擇的動(dòng)作和實(shí)時(shí)狀態(tài),根據(jù)蟻群算法遷移函數(shù)將其遷移到后續(xù)狀態(tài)x′,并根據(jù)獎(jiǎng)賞函數(shù)設(shè)置立即獎(jiǎng)賞為r。
Step4:根據(jù)多因子量化方法,對各個(gè)狀態(tài)出的收益值進(jìn)行更新,并剔除不合格的狀態(tài),Q值更新為Q(x,u)=Q(x,u)+α(r+γQ(x′,u′)-Q(x,u))。
Step5:更新螞蟻的當(dāng)前狀態(tài):x←x′。
Step7:更新下一狀態(tài)會執(zhí)行的動(dòng)作:α←α′。
Step8:更新當(dāng)前時(shí)步;
End Loop
更新當(dāng)前情節(jié)
End Repeat
3)輸出:各狀態(tài)動(dòng)作處的收益值Q。
為了增加策略的多樣性,在轉(zhuǎn)移概率中引入了隨機(jī)機(jī)制,如同多因子量化的學(xué)習(xí)策略中的ε。設(shè)定隨機(jī)參數(shù)s∈(0,1),每個(gè)時(shí)間步t會產(chǎn)生的一個(gè)隨機(jī)數(shù)st∈(0,1)。當(dāng)s≤st時(shí),可以計(jì)算轉(zhuǎn)移概率來確定移動(dòng)到下一個(gè)的位置;而當(dāng)s>st時(shí),則查看周邊可以移動(dòng)的位置,去除障礙物無法移動(dòng)和已經(jīng)移動(dòng)的位置,隨機(jī)選擇一個(gè)可性位置。
(8)
其中,rand(allowedt)表示可行位置從非障礙物到未經(jīng)過的位置集合allowedt中的選擇。
對于任何一個(gè)可行節(jié)點(diǎn)j,其轉(zhuǎn)移概率表達(dá)式為
(9)
其中,λ(i,j)為(i,j)區(qū)域內(nèi)的蟻群信息素;μ(i,j)=1/d(i,j);d(i,j)為(i,j)區(qū)域內(nèi)的面積;t為螞蟻已經(jīng)移動(dòng)過的列表。
基于多因子量化蟻群算法的采摘機(jī)器人路徑規(guī)劃,其求解流程如圖5所示。
圖5 基于多因子量化蟻群算法流程圖Fig.5 The flow chart of ant colony algorithm based on multi-factor quantization
具體步驟如下:
Step1:搭建采摘機(jī)器人的二維環(huán)境地圖模型。
Step2:對蟻群算法參數(shù)進(jìn)行初始化。
Step3:將所有螞蟻放置在起點(diǎn)A。
Step4:所有蟻群根據(jù)制定的規(guī)則和概率在節(jié)點(diǎn)間移動(dòng),并對每個(gè)螞蟻的移動(dòng)次數(shù)進(jìn)行統(tǒng)計(jì)。
Step5:采用多因子量化方法對信息表進(jìn)行更新。若有螞蟻的移動(dòng)次數(shù)小于設(shè)定的最大次數(shù),但沒有到達(dá)目標(biāo)點(diǎn),則回到Step4重新開始;若有螞蟻的移動(dòng)次數(shù)大于或等于設(shè)定的最大次數(shù),但沒有達(dá)到目標(biāo)點(diǎn),則清除所有數(shù)據(jù),并將其放于起點(diǎn)。
Step6:統(tǒng)計(jì)成功到達(dá)目標(biāo)點(diǎn)的螞蟻路徑P,并查看是否滿足要求。
Step7:對比所有符合要求的螞蟻路徑P,選出最優(yōu)值。
Step8:輸出采摘機(jī)器人最優(yōu)路徑,也就是螞蟻的最優(yōu)路徑。
為了驗(yàn)證基于多因子量化選股模型的采摘機(jī)器人學(xué)習(xí)策略的可靠性,采用MatLab 8.0對其進(jìn)行了仿真實(shí)驗(yàn)。實(shí)驗(yàn)中,設(shè)定采摘機(jī)器人運(yùn)動(dòng)區(qū)域?yàn)橐粋€(gè)二維平面,所有障礙物及其形狀都是已知的。初始化設(shè)置螞蟻總數(shù)為8000,移動(dòng)次數(shù)NC=300,起始點(diǎn)為A,目標(biāo)終點(diǎn)為B,要求是求出一條從起點(diǎn)到終點(diǎn)的無碰撞最優(yōu)路徑。仿真結(jié)果如圖6所示。
圖6 Matlab仿真結(jié)果圖Fig.6 The Simulation diagram of MatLab
由圖6可知:基于多因子量化選股模型的蟻群算法為采摘機(jī)器人規(guī)劃了一條長度最短、轉(zhuǎn)彎次數(shù)最少的最優(yōu)路徑,移動(dòng)過程中沒有發(fā)生碰撞。這證明,該算法對改善采摘機(jī)器人移動(dòng)路徑效果明顯,使規(guī)劃的路徑更合理。
將多因子量化選股模型和蟻群算法相結(jié)合,設(shè)計(jì)了一種改進(jìn)的蟻群算法,并對采摘機(jī)器人的路徑規(guī)劃進(jìn)行了研究。該算法具有一定的學(xué)習(xí)策略,可以根據(jù)實(shí)際作業(yè)區(qū)域?yàn)椴烧獧C(jī)器人設(shè)計(jì)最優(yōu)的作業(yè)路徑。實(shí)驗(yàn)結(jié)果表明:該算法為采摘機(jī)器人規(guī)劃了一條長度最短、轉(zhuǎn)彎次數(shù)最少的最優(yōu)路徑,移動(dòng)過程中沒有發(fā)生碰撞,改善采摘機(jī)器人移動(dòng)路徑效果明顯,使規(guī)劃的路徑更合理。