決策樹(shù)算法講解

決策樹(shù)算法: 量化選股案例

來(lái)源:Stata與風(fēng)險(xiǎn)管理

作者:首都經(jīng)濟(jì)貿(mào)易大學(xué)\quad金融學(xué)院\quad田文濤

郵箱:tianwentao1999@163.com


什么是決策樹(shù)

  • 如何做決策
    eg:是否學(xué)習(xí)[1]? 二食、三食or華僑? If-Then算法?
  • 決策樹(shù)是仿樹(shù)結(jié)構(gòu)來(lái)進(jìn)行決策的
是否學(xué)習(xí)的決策過(guò)程

解決什么問(wèn)題

  • 分類(lèi)問(wèn)題
  1. 訓(xùn)練集、測(cè)試集(7:3、6:4)\rightarrowsklearn學(xué)習(xí)訓(xùn)練\rightarrow生成模型\leftarrow測(cè)試集驗(yàn)證
  2. 評(píng)估指標(biāo):
混淆矩陣 預(yù)測(cè)為正樣本 預(yù)測(cè)為負(fù)樣本
實(shí)際為正樣本 True Positive (TP) False Negative (FN)
實(shí)際為負(fù)樣本 False Positive (FP) True Negative (TN)

準(zhǔn)確率(ACC)
Accuracy =\frac {TP+TN}{TP+TN+FP+FN}

精確度(PPV)
Precision = \frac{TP}{TP+FP}

召回率(TPR、Recall)
Recall = \frac{TP}{TP+FN}

特異度(TNR)
Specificity = \frac{TN}{TN+FP}


有關(guān)“樹(shù)”的基本概念

  • 節(jié)點(diǎn)
    根節(jié)點(diǎn)
    內(nèi)部節(jié)點(diǎn)
    葉節(jié)點(diǎn)
  • 深度
決策樹(shù)節(jié)點(diǎn)圖

如何構(gòu)造“樹(shù)”——三要素

  1. 屬性構(gòu)造
  • 離散變量
    二元屬性
    多元屬性
  • 連續(xù)變量
    序數(shù)屬性

  1. 指標(biāo)度量
  • 信息熵
    Ent(D)=-\sum_{i=1}^{k} p_{i} \log \left(p_{i}\right)

Ent(D)的值越小,代表該樣本集D的純度越高。

  • 信息增益
    {Ent}(D, a)= Ent(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} Ent\left(D^{v}\right)

說(shuō)明

-- 假設(shè)屬性aV個(gè)可能取值,用a對(duì)樣本集進(jìn)行劃分,就會(huì)產(chǎn)生V個(gè)分支節(jié)點(diǎn),D^v是第v個(gè)分支所包含的樣本。從而計(jì)算出用屬性a對(duì)樣本集D進(jìn)行劃分所獲得的信息增益。
-- 信息增益越大,用屬性a對(duì)樣本進(jìn)行劃分的純度越高。
--選擇信息增益最大的屬性進(jìn)行劃分。


  • 基尼系數(shù)
    Gini=1-\sum_{i=1}^{k} p_{i}^{2}

基尼系數(shù)越小,純度越高。

舉例:
label=0:5個(gè),label=1:5個(gè)\rightarrow p(0)=0.5,p(1)=0.5
label=0:2個(gè),label=1:8個(gè)\rightarrow p(0)=0.2,p(1)=0.8
label=0:0個(gè),label=1:10個(gè)\rightarrow p(0)=0,p(1)=1

G_1=1-[p(0)^2+p(1)^2]=0.5

G_2=1-[p(0)^2+p(1)^2]=0.32

G_3=1-[p(0)^2+p(1)^2]=0


  1. 模型生成
  • 在第一級(jí)節(jié)點(diǎn),尋求某個(gè)特征,按照該特征的標(biāo)準(zhǔn)(熵或者基尼系數(shù))進(jìn)行分組,分組后得到的純度最大
  • 完成第一級(jí)節(jié)點(diǎn),在第二級(jí)節(jié)點(diǎn)上按照類(lèi)似的思路找特征
  • 直到最后一個(gè)節(jié)點(diǎn),分類(lèi)完畢

算法實(shí)現(xiàn)

  1. 手動(dòng)造輪子
  • 導(dǎo)入包
  • 數(shù)據(jù)清洗
    數(shù)據(jù)集劃分
  • 函數(shù)定義
    信息熵、信息增益、基尼系數(shù)
  • 結(jié)果輸出

  1. 調(diào)包俠
  • 核心算法:
from sklearn.tree import DecisionTreeClassifier
tree=DecisionTreeClassifier(max_depth=2,criterion='gini')
tree.fit(X,y)
print("準(zhǔn)確度:",tree.score(X,y))
  • 相關(guān)參數(shù):
    max_depth
    criterion
  • 具體實(shí)例(鳶尾花數(shù)據(jù)集)
from sklearn.datasets import load_iris,load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
import pydotplus
iris = load_iris( )
clf = DecisionTreeClassifier( )
clf_iris = clf.fit(iris.data,iris.target)
dot_Data = export_graphviz(clf_iris,out_file=None)
graph_iris = pydotplus.graph_from_dot_data(dot_Data)
graph_iris.write_pdf("./load_iris.pdf")
鳶尾花數(shù)據(jù)分類(lèi)結(jié)果

量化案例:股票購(gòu)買(mǎi)投資策略[2]

  1. 數(shù)據(jù)


    數(shù)據(jù)集

說(shuō)明:標(biāo)黃的為測(cè)試集,標(biāo)紅的為模型訓(xùn)練結(jié)果。


  1. 代碼展示:
userpath('D:\4-Project\決策樹(shù)模型\DecisionTree2Demo')%設(shè)置路徑為存放CSV的位置

TrainInput=readtable('TrainInput.csv');%錄入訓(xùn)練集的輸入部分

TrainOutput=readtable('TrainOutput.csv');%錄入訓(xùn)練集的輸出部分

TestInput=readtable('TestInput.csv');%錄入測(cè)試集的輸入部分

TestOutput=readtable('TestOutput.csv');%錄入測(cè)試集的輸出部分

S=fitctree(TrainInput,TrainOutput,'MinParentSize',3);%建立模型,并存入S

view(S,'Mode','Graph')%繪制決策樹(shù)

InvestStrategy=S.predict(TestInput);%使用剛才建立的模型預(yù)測(cè)股票漲跌,漲就是買(mǎi),跌就是賣(mài),因此構(gòu)建了一個(gè)投資策略

ActualPriceChange=table2cell(TestOutput);%轉(zhuǎn)化TestOutput的數(shù)據(jù)格式(table格式)并存入變量ActualPriceChange(cell格式)

confusionmat(ActualPriceChange,InvestStrategy)%計(jì)算擬合值和真實(shí)值的混淆矩陣
  1. 結(jié)果展示:


    決策結(jié)果
混淆矩陣 預(yù)測(cè)為正樣本 預(yù)測(cè)為負(fù)樣本
實(shí)際為正樣本 3 0
實(shí)際為負(fù)樣本 1 1

總結(jié)

  • 決策樹(shù)定義
  • 決策樹(shù)用途
  • 決策樹(shù)構(gòu)造
  • 決策樹(shù)量化應(yīng)用

決策樹(shù)前沿發(fā)展

  • 經(jīng)典決策樹(shù):CLS、ID3、C4.5和CART樹(shù)(李強(qiáng),2006)
  • 決策樹(shù)組合:RF(隨機(jī)森林)、ET(極端隨機(jī)樹(shù))、GBDT(梯度提升決策樹(shù))、XGB和LGB(李想,2017)
  • 神經(jīng)網(wǎng)絡(luò):神經(jīng)支持決策樹(shù)(Wan A, et al,2020)
    研究發(fā)現(xiàn)在保留決策樹(shù)可解釋性的同時(shí)取得了當(dāng)前神經(jīng)網(wǎng)絡(luò)才能達(dá)到的準(zhǔn)確率,比其他基于決策樹(shù)的圖像分類(lèi)方法高出了大約14%。

總結(jié)

  • 決策樹(shù)定義
  • 決策樹(shù)用途
  • 決策樹(shù)構(gòu)造
  • 決策樹(shù)量化應(yīng)用
  • 決策樹(shù)前沿發(fā)展

  1. http://www.itdecent.cn/p/14a9e8d1f2a3 ?

  2. 案例來(lái)源于CSDN ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容