不要投資於調整到準確性的模型:概率加權準確性和其他模型更值得信賴。
在交易中,準確性作為衡量標準具有誤導性。與單一交易策略相關的準確性的定義是策略賺錢的總天數超過該策略持倉的總天數。這至少遺漏了交易應用中的一個關鍵點:盈虧。
照片由Ricardo Arce 在Unsplash 上拍攝
在他最近的書中,馬科斯·洛佩茲·德普拉多教授使用指標評估交易策略時的關鍵原則。以下幾點是從他的工作中得出的原則摘要以及我對此事的看法。
(代碼塊也是從他的作品中提取的,但我只是稍微調整了它們以使它們對我有意義。希望我的小調整也能幫助你。)
出於機器學習訓練的目的,我們只需要一個反映我們希望如何評估策略績效的指標。
與錯誤猜測價格走勢的方向相比,錯誤的質押規模會給你帶來更多的麻煩。是的,如果你下注並且錯了,那麼你將賠錢,但目標是在你輸錯時輸掉少量資金,在你正確時賺大錢。精明?
日誌丟失
與準確性相比,更好的指標是對數損失。對數損失“獎勵”分配更高置信度的正確預測,同時“懲罰”分配更高置信度的錯誤預測。也就是說,一個好的對數損失分數是在預測概率高的情況下準確地進行多頭和空頭質押,並且在預測概率低的情況下錯誤地進行多頭和空頭質押的情況。我對日誌丟失的抱怨是很難解釋。
日誌丟失很難解釋,但你應該查看這個Stack交易所問題和Fed Zee 給出的答案。簡而言之,Fed Zee 在將日誌損失分數與準確性進行比較時,顯示了日誌損失的一些複雜性。
對數損失分數越低越好,但使用對數損失的最佳方法是否定它; 然後,值越高越好,就像所有其他指標(例如準確度、召回率、F1 等)一樣。 scikit-learn 的實現就足夠了。
from sklearn.metrics import log_loss…probabilities = clf.predict_proba(X_test)neg_log_loss = -log_loss(y_test, probabilities, w_test, labels=clf.classes_)Weighted Accuracy
要保留準確性的可解釋性並擴展其功能,你可以使用加權準確性。加權準確度將計算準確度,但會根據你的輸入給出更高或更低的權重。
使該指標有價值的一種方法是將回報作為權重傳遞。正確的預測會使更多的錢獲得更高的權重。不正確的預測會損失更多的錢,也會獲得更高的權重。將返回低利潤或損失的正確和不正確的預測獲得較低的權重。這模擬了我們想要評估策略的方式。
def weighted_accuracy(yn, wght, normalize=False):”””加權精度(normalize=True),或加權和(normalize=False)
:param yn: 指示函數yn E {0,1} 其中yn = 1 當預測正確時,yn = 0 否則:param: wght: 樣本權重”””
if normalize:return np.average(yn, weights=wght)elif wght 不是None:return np.dot(yn, wght)else:return yn.sum()Probability Weighted Accuracy
通過它的名稱,你可能會猜到這個指標測量的是什麼。是的你是對的。 Marcos Lopez de Prado 在Asset Managers 的機器學習中介紹了概率加權準確度,它使用概率來衡量準確度,類似於對數損失,但是它更易於解釋。
概率加權準確度比準確度更嚴厲地懲罰高置信度做出的錯誤預測,但不如對數損失那麼嚴厲。 — 馬科斯·洛佩茲·德·普拉多
def probability_weighted_accuracy(yn, pn, K):”””PWA 比準確度更嚴厲地懲罰以高置信度做出的錯誤預測,但不如對數損失那麼嚴厲
:param yn: 指示函數yn E {0,1} 其中yn = 1 當預測正確時,yn = 0 否則:param pn: max k {pn,k} 其中pn,k 是與標籤的預測n 相關的概率k:param K: 類數”””
返回np.sum((yn * (pn.max(axis=1) – (K * 1.) ** -1))[:-1]) / np.sum((pn.max(axis=1) – (K * 1.) ** -1)[:-1])
資訊來源:由0x資訊編譯自THECAPTAL。版權歸作者所有,未經許可,不得轉載