GBDT原理實例演示 1


考慮一個簡單的例子來演示GBDT算法原理

下面是一個二分類問題,1表示可以考慮的相親對象,0表示不考慮的相親對象

特征維度有3個維度,分別對象 身高,金錢,顏值

   

cat dating.txt

#id,label,hight,money,face

_0,1,20,80,100

_1,1,60,90,25

_2,1,3,95,95

_3,1,66,95,60

_4,0,30,95,25

_5,0,20,12,55

_6,0,15,14,99

_7,0,10,99,2

   

這個例子僅僅為了試驗,數據量很小沒有更多統計意義。

   

0,1,2,3對應可以考慮的相親對象

4,5,6,7 對應不考慮的相親對象

   

先看一下gbdt訓練的結果

mlt dating.txt -cl gbdt -ntree 2 -nl 3 -lr 0.1 -mil 1 -c train -vl 1 -mjson=1

設置2棵樹,葉子節點最多3 也就是最多2次分裂,learning rate設置為0.1 葉子節點中的最少樣本數設置為1(僅供試驗,一般不會設置為1,避免過擬合)

為了打印二叉樹設置輸出json格式的模型

   

Per feature gain:

0:face 1

1:hight 0.730992

2:money 0.706716

Sigmoid/PlattCalibrator calibrating [ 8 ] (0.00011 s)100% |******************************************|

I0324 16:57:53.240083 17630 time_util.h:113] Train! finished using: [1.486 ms] (0.001486 s)

I0324 16:57:53.240094 17630 time_util.h:102] Test itself! started

   

TEST POSITIVE RATIO:        0.5000 (4/(4+4))

   

Confusion table:

||===============================||

|| PREDICTED ||

TRUTH || positive | negative || RECALL

||===============================||

positive|| 4 | 0 || 1.0000 (4/4)

negative|| 0 | 4 || 1.0000 (4/4)

||===============================||

PRECISION 1.0000 (4/4) 1.0000(4/4)

LOG LOSS/instance:                0.2981

TEST-SET ENTROPY (prior LL/in):        1.0000

LOG-LOSS REDUCTION (RIG):        70.1854%

   

OVERALL 0/1 ACCURACY:        1.0000 (8/8)

POS.PRECISION:                1.0000

PPOS.RECALL:                1.0000

NEG.PRECISION:                1.0000

NEG.RECALL:                1.0000

F1.SCORE:                 1.0000

AUC: [1.0000]

   

對應這個例子,訓練結果是perfect的,全部正確, 特征權重可以看出,對應這個例子訓練結果顏值的重要度最大,看一下訓練得到的樹。

print-gbdt-tree.py --tree -1

Tree 0:

Tree 1:

   

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM