www涩-www黄网站-www黄色-www黄色com-国产免费拍拍视频在线观看网站-国产免费怕怕免费视频观看

電力現(xiàn)貨預(yù)測(cè)精度高不等于交易收益好:改造決策樹

2023-04-18 10:01:42 蘭木達(dá)電力現(xiàn)貨作者:王超一  點(diǎn)擊量: 評(píng)論 (0)
枯藤老樹昏鴉,小橋流水人家。語文老師給我講這首詩的時(shí)候,說這個(gè)只是名詞的堆砌,但給人一種直指內(nèi)心的感覺。——以上是這篇技術(shù)文章的核...

枯藤老樹昏鴉,小橋流水人家。語文老師給我講這首詩的時(shí)候,說這個(gè)只是名詞的堆砌,但給人一種直指內(nèi)心的感覺。

——以上是這篇技術(shù)文章的核心思想。

(來源:微信公眾號(hào)“蘭木達(dá)電力現(xiàn)貨”作者:王超一)

一.兩種決策樹的差異對(duì)比

在講正題之前,先簡(jiǎn)要講一下 scikit-learn(以下簡(jiǎn)稱sklearn)決策樹的主要實(shí)現(xiàn)邏輯。另外,這一塊代碼位于 sklearn/tree 目錄下,而 ensemble 里的隨機(jī)森林依賴 tree 目錄代碼。

首先,構(gòu)造一棵決策樹有兩種邏輯,一種是深度優(yōu)先搜索DepthFirstTreeBuilder,即每次找到最優(yōu)的分裂節(jié)點(diǎn),然后在左右子樹中按同樣邏輯構(gòu)建;另一種是類似寬度優(yōu)先搜索的貪心策略BestFirstTreeBuilder,之所以說是類似寬度優(yōu)先搜索,是因?yàn)槊看味颊业疆?dāng)前的最優(yōu)分裂,而不是按層分裂,即把寬搜用的隊(duì)列換成優(yōu)先級(jí)隊(duì)列。用哪一種方式建樹取決于是否指定了最大葉子節(jié)點(diǎn)數(shù)T,如果指定了就用BestFirstTreeBuilder,因?yàn)檫@樣即使無腦搜索也是O(T2)復(fù)雜度,當(dāng)然sklearn用了基于堆的優(yōu)先級(jí)隊(duì)列可以將復(fù)雜度降低為O(TlogT)。

其次,除了構(gòu)建樹的方法外,剩下的邏輯核心在于 Splitter, Splitter也保存了原始的X、y、 sample_weight,Splitter主要有4個(gè)方法:

1)init 方法,保存原始X、y、sample_weight,生成一個(gè)對(duì)樣本(行)的索引表,并利用X和行索引表和一個(gè)特征的緩存數(shù)組生成一個(gè)Partitioner 對(duì)象;

2)node_reset方法,利用 y,sample weight和行索引構(gòu)造 Criterion 對(duì)象,分類樹的熵、基尼系數(shù),回歸樹的MSE,MAE都是在這個(gè)Criterion的實(shí)現(xiàn);

3)node_impurity方法,調(diào)用self.criterion.node_impurity計(jì)算一個(gè)節(jié)點(diǎn)的純度,這個(gè)數(shù)越小越好;

4)node_split 方法,本方法是核心,有兩個(gè)更基礎(chǔ)的方法,分別為 node_split_best 和 node_split_random,這兩個(gè)方法都調(diào)用了 Splitter、Partitioner、Criterion 3個(gè)對(duì)象,同時(shí)有很多性能上的優(yōu)化,如在行索引上操作,對(duì)快速排序的優(yōu)化,對(duì)常量特征的優(yōu)化等。

上邊這一段看不懂沒有關(guān)系,大致就是說,sklearn用cython寫了個(gè)樹的構(gòu)建,并把a(bǔ)pi暴露給python,然后每個(gè)關(guān)鍵點(diǎn)都有幾種選擇,這些一般都傳入字符串參數(shù),然后sklearn有內(nèi)置的字典來找到對(duì)應(yīng)的類,這些類用 Cython 實(shí)現(xiàn)來確保效率。

二.電力市場(chǎng)交易的優(yōu)化目標(biāo)是收益而不是偏差

問題在于,拿電力交易為例,我們最終的目標(biāo)是收益最大化,一般來說這個(gè)收益取決于當(dāng)前價(jià)格和未來價(jià)格之差,后文簡(jiǎn)稱價(jià)差,如果我們構(gòu)造一個(gè)回歸樹,y為價(jià)差,那么可以選擇 MAE、MSE或其變種作為一個(gè)純度的度量,這樣就是把收益最大化問題轉(zhuǎn)換為價(jià)差的回歸了。這個(gè)數(shù)學(xué)建模的問題在于,雖然邏輯上更優(yōu)的價(jià)差預(yù)測(cè)會(huì)帶來更好的策略收益,但實(shí)踐中也不絕對(duì),有可能把MAE降低了,策略收益沒有提高反而降低了。

能否給出一個(gè)直面目標(biāo)函數(shù)(策略收益)的決策樹呢?

首先,回過頭再看一下決策樹為我們提供了什么,決策樹給出了一些條件下的樣本集合,這些條件是分層的,可以定義這個(gè)樣本集合的一個(gè)指標(biāo),代表這個(gè)分層好不好,即決策樹是否恰當(dāng)劃分。那么這個(gè)指標(biāo)就可以直接定義為這個(gè)集合下按照某種交易策略下的利潤(rùn)。

比如,我們有一種策略,只看預(yù)測(cè)價(jià)差的符號(hào),不論價(jià)差大小,都申報(bào)同樣多的電量,那么這個(gè)集合的利潤(rùn)就是所有價(jià)差之和的絕對(duì)值。

電力現(xiàn)貨

其次,還得重新實(shí)現(xiàn)proxy_impurity_improvement和children_impurity這兩個(gè)方法,限于篇幅原因不再贅述。這里面有個(gè)坑,這個(gè)純度即node_impurity 越小越好,那么我們利潤(rùn)最大化得乘以-1,然而在sklearn中,默認(rèn)純度為正數(shù),我們開頭講的樹構(gòu)建過程中,如果純度小于一個(gè)極小正數(shù)時(shí)認(rèn)為當(dāng)前節(jié)點(diǎn)已經(jīng)是葉子節(jié)點(diǎn)了,所以得改樹構(gòu)建的邏輯,具體而言就是加上3個(gè)#注釋掉3行即可。

經(jīng)過這樣的改造,在山東日前交易中,回測(cè)利潤(rùn)是MSE的3倍或更多。

接下來,我們更進(jìn)一步,注意到我們這里要用-1倍的利潤(rùn)作為節(jié)點(diǎn)純度,對(duì)新能源電站,計(jì)算利潤(rùn)需要更多的數(shù)據(jù),比如裝機(jī)容量、實(shí)際發(fā)電和預(yù)測(cè)發(fā)電,而實(shí)際發(fā)電在sklearn框架中是一個(gè)尷尬的存在。

我們不能把這個(gè)數(shù)值當(dāng)做X,因?yàn)檫@個(gè)是個(gè)未來數(shù)據(jù)。然而在回歸中,如果把這個(gè)數(shù)當(dāng)做y,在代碼邏輯上勉強(qiáng)能跑通,但會(huì)在代碼中把真正的y與輔助性的數(shù)據(jù)混在一起,代碼結(jié)構(gòu)化變差,比如在predict會(huì)得到一個(gè)二維矩陣。所以我們嘗試了修改 sklearn 的 api,分別給 BaseDecisionTree.fit、TreeBuilder.build、Splitter.init, Criterion.init 中增加相同的輔助計(jì)算節(jié)點(diǎn)純度的參數(shù),加上這個(gè)機(jī)制,就可以任意修改(節(jié)點(diǎn)純度)目標(biāo)函數(shù)了。

自定義的目標(biāo)函數(shù)讓我們可以直面交易利潤(rùn),把價(jià)差預(yù)測(cè)的學(xué)習(xí)直接升級(jí)到交易策略的學(xué)習(xí),然而,這也給我們提出了更高的決策樹后處理要求,對(duì)策略的過擬合也得有更多的控制手段。

最后吐槽一下,Pycharm 對(duì) Cython 的支持太差了,右邊一堆紅(提示代碼錯(cuò)誤),代碼折疊也有問題,可能逼著我們?nèi)ビ?vs code 了。

大云網(wǎng)官方微信售電那點(diǎn)事兒

責(zé)任編輯:葉雨田

免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
?
主站蜘蛛池模板: 97精品福利视频在线 | 日韩在线亚洲 | 亚洲精品国产字幕久久不卡 | 日日碰碰 | 男人的天堂久久 | 日韩伦理一区二区三区 | 午夜宅宅宅影院在线观看 | 久久国产国内精品对话对白 | 国产深夜福利 | 久久久久久久91精品免费观看 | 国产精品观看在线亚洲人成网 | 精品自拍视频在线观看 | 国产成人理在线观看视频 | 日本特一级毛片免费视频 | 久久一日本道色综合久 | 久久视频精品36线视频在线观看 | 国产一区二区三区在线视频 | 美女张开腿让我 | 一区二区三区免费精品视频 | 欧美日韩高清不卡一区二区三区 | 国产成人亚洲综合91精品555 | 男女福利| 国产在线一区在线视频 | 亚洲精品色 | 日韩成人午夜 | 狠狠综合久久久久综合 | 日本一级特黄在线播放 | 免费网站18 | 久草免费在线 | 日本一级毛片视频无遮挡免费 | 久久中文字幕乱码免费 | 日本不卡一区二区三区在线观看 | 亚洲在线成人 | 日韩成人中文字幕 | 国产网站免费视频 | 欧美精品毛片 | 欧美久草视频 | 精品国产一区二区三区不卡在线 | 日韩久久免费视频 | 俄罗斯18videosex性欧美成人 | 日本高清福利视频在线观看 |