人工智慧系列之十三:人工智慧選股之損失函數的改進

本文創新性地提出了兩種對數損失函數改進方案,取得了更好的回測效果

損失函數在機器學習模型的訓練過程中決定了模型的優化方向,具有重要的地位。對數損失函數是機器學習中最常用的二分類模型損失函數,它的形式可以被分解為兩項,分別代表二分類的假陽性誤差和假陰性誤差,普通對數損失函數中,兩類誤差的權重是相等的。本文針對對數損失函數的形式,結合機器學習在多因子選股中的應用,提出了兩種改進方案,分別解決不同目標下的機器學習選股問題。兩種改進方案相比普通對數損失函數都取得了更好的回測結果。原文來自皮匠網,關注“三個皮匠”微信公眾號,每天分享最新行業報告

改進方案1:加權損失函數更加適合樣本不均衡的分類問題

針對分類模型中兩類樣本不均衡的問題,我們引入了加權損失函數,該損失函數能增大數量較少一類樣本的損失項權重。接下來,我們在全A股票池內構建不均衡的訓練集樣本進行測試。總體來看,在保持其他條件相同的情況下,使用加權損失函數的模型在年化超額收益率、信息比率、Calmar比率以及召回率表現更好,但是在超額收益最大回撤方面沒有明顯優勢。說明對於不平衡樣本,加權損失函數對於未來表現較好的股票預測能力更好。對比行業中性選股和個股等權選股兩種方式,行業中性選股情況下使用加權損失函數的模型優勢更加穩定。

改進方案2:廣義損失函數能降低機器學習模型的換手率

廣義損失函數的核心思想是新增一項損失項並賦予權重λ,使得模型能夠在優化原始問題的同時控制預測值與另外一個目標序列的差異。本文將廣義損失函數用於控制模型換手率,構建了相對於中證500行業市值中性的全A選股策略。回測顯示,隨著λ的增大,模型的換手率呈現單調下降的趨勢。在所有模型中,λ取0.1時模型的年化超額收益率、夏普比率以及RankIC值最高,月均雙邊換手率下降了8.21%,說明恰當地使用廣義損失函數不僅能降低換手率,還能一定程度上防止過擬合。但是當λ逐漸增大後,模型的年化超額收益率和夏普比率變差,說明模型的預測能力下降。

本文給出了改進損失函數的推導過程和Python實現代碼

在本文的測試中,我們統一選用XGBoost分類模型進行測試,在XGBoost提供的自定義損失函數接口上改進損失函數。XGBoost是目前最先進的Boosting模型,其詳細原理可參見本系列第六篇報告《華泰人工智能選股之Boosting模型》。XGBoost的自定義損失函數接口要求提供損失函數的一階導數和二階導數。本文詳細展示了普通損失函數、加權損失函數和廣義損失函數的一階導數以及二階導數的推導過程,並給出相應的Python實現代碼。

廣義損失函數仍有進一步研究的空間

在此之前,投資組合換手率的控制一般通過組合優化或風險約束的方法來進行,而本文提到的利用廣義損失函數這種方法,則直接將收益預測和換手率控制放入到一個損失函數中進行優化,更具有整體性,是一種創新的方法。對於廣義損失函數來說,其結構的通用性可以讓我們將任意合適的目標序列加入損失函數中,例如某種選股因子的因子值,這樣就能方便調整機器學習模型對該選股因子的暴露程度,使得機器學習模型能夠更方便地進行因子權重調整以及因子擇時。這將是我們之後會進一步研究的方向。

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進

人工智能系列之十三:人工智能選股之損失函數的改進


分享到:


相關文章: