小柯植树法~__Decision Tree (type Chtholly Nota Seniorious)

    一则写给自己的、奇异的札记,这里,种的树并不是世俗的树,而是决策树!是一件不平凡的事。

    但一切又很简单,我们这里只是想用一种正确的方式来打开这棵树,为此,只需要种下对的树种,宠着它直到长好枝叶就阔以得到一处荫凉啦... ...

了解一棵决策树!Intro first

Treess 树们(´ . .̫ . `)

    所以说,决策树也就是一棵平凡的树而已,它由 '根节点'、'内部节点/枝节点'、'叶节点' 组成,根节点如树的根部,唯一存在且承担决策树决策总体的角色,每一个叶节点都代表了一个预测出的分类类型,而内部节点则是连接根和叶的决策过程部分,如下图所示,是一棵简单的决策树,它所解决的分类预测问题是“我是否应该接受这一岗位的邀请?”,考虑了薪水、时间管理、是否提供免费咖啡三个你平时比较注意的要点(即,作为样本分岔的属性)。

Decision Tree in a glaze: from https://images.app.goo.gl/qPq1cjkNp5WAgUnd7

    一棵决策树,当它被喂入数据集训练时,将会按照它的类型自动生长起来,此过程以伪代码形式记录如下:

Principle of Tree grows: by Optics_css

    了解了决策树的基本形态、结构和生长方式后,就要考虑怎么去种一棵好树。

优苗选育!Good choice to begin

    那么自然是要找到有最佳表现的决策树幼苗啦!下面将介绍三种常见的树种{C3决策树、C4.5决策树、CART分类回归树(From Breiman)}以及它们的一些优缺点。

\color{green}{ID3\ Decision\ Tree}

    种树专家香农 (Shannon Claude,信息论专家) 曾经利用公理化假设提出一种衡量事物不确定性的物理量:命名为信息量,感性上说,这种量能够衡量当前随机变量集中所含的有效信息的多少,这有利于我们得到一棵优良的决策树。

    为此我们先给出信息论的公理化假设:

a. 一个事件的信息量与这个事件发生的概率是呈负相关的;

b. 信息量满足可加性:I(X,Y)=I(X)+I(Y);

c. from\ P(a_{i})=0\implies I(a_{i}) \rightarrow \infty ;

d. from\ P(a_{i})=1\implies I(a_{i}) =0.

    依微分学,易得所需信息熵函数可以表示对数式,同时为了方便编码领域的应用,将底数设为 ‘2’,从而得到了衡量当前样本集合\Omega的信息凌乱程度即信息熵:

E_{nt}(\Omega)=-\sum^{n}_{k=1}p_{k}log_{2}p_{k},

    求和遍历样本集中每一对样本,此物理量数值越大,说明当前的树生长的越不完全,通过计算并比较构造(一层)树枝前后,E_{nt}(\Omega)的增量大小即可了解这一层的出现所对应的信息量大小。

    构造ID3决策树时,并不是随意地把每一层与一个(使得样本分岔的)属性相对应,而是首先判断当前(即所有属性 - 之前用掉的属性)哪一个属性对于决策树分岔的影响最大,由前述,即寻找对应E_{nt}(\Omega)增量最大的一个属性\circledast作为下一个分岔层的属性,这一增量可以显式表达为:

Gain(\circledast)=E_{nt}(\Omega)-E_{(n+1)t}(\Omega),

    由上述,可得ID3所规定的\circledast(\Omega)函数可表示为:\circledast(\Omega)=get \ \circledast for \ max\ Gain(\circledast).

    可以看出,树的种类不同实际上意味着对于其构造方式的要求不同。

\color{green}{C4.5\ Decision\ Tree}

    C4.5与决策树核心算法ID3并无大差大别,只是将属性的选择判据改为信息增益比

GainRatio(\circledast)=\frac{Gain(\circledast)}{SplitInfo(\circledast)}

    即采用一个分类信息值{SplitInfo(\circledast)}来规范化信息增益,这样做的好处有

a. 能够克服“ID3算法会倾向于选择取值较多的属性”的缺陷,且保留核心算法中构造时剪枝的优势;

b. 利于连续属性的离散化处理;

c. 适合有缺陷的数据处理;

d. 解释性强、准确率高.

    分类信息值定义为

SplitInfo(\circledast)=-\sum^{n}_{j=1}\frac{\Omega_{n,j}}{\Omega_{n}}log_{2}(\frac{\Omega_{n,j}}{\Omega_{n}}),

    其中,\Omega_{n,j}代表了目前内部节点对应的集合中可能会在下一步分岔选择 'j' 属性的数目,这里也可以看出,这个规范化因子也是一种信息熵,从这个角度来讲,它也因此获得优良的规范化一个熵值的能力。

    C4.5这种决策树仍然由于算法效率过低(大量的顺序扫描)且需要过大的内存而大体停留在理论部分,很常用的则是下面这个... ...

\color{green}{CART\ Decision\ Tree}

    这种决策树最早由Breiman提出,目前在统计领域、数据挖掘得到了广泛使用,它采用了另一种增益的衡量方式(GINI指数)作为属性分岔的选择依据。

    这里仅限于构造一个分类决策树,实际上它还可以作回归使用。

    CART决策树所使用的算法依然与ID3决策树中相同,只是其中所涉及到的信息熵增益要改为GINI指数增益,因此在这里我们可以把GINI指数当作类似于信息熵的一种物理量,

Gini(\Omega_{n})=1-\sum^{n}_{j=1}(\frac{\Omega_{n,j}}{\Omega_{n}})^2,

    其中,\Omega_{n,j}代表了目前内部节点对应的集合中可能会在下一步分岔选择 'j' 属性的数目。

    下面让我们利用CART决策树的模型来培养一棵小树... ...

种树!Algorithm realize... ...

    如图所示,可以得到一棵简单的小决策树... ...

Little decision tree by Optics_css

    此代码走的是平凡路线(o゚v゚)ノ,在MATLAB中调用CART决策树Algorithm: fitctree(),输入其中自带的鸢尾花数据集,来进行决策树实现的试验。

照料决策树!Cut redundant leaves

    剪枝,为了让我们的树把肥料(内存)都用在正确的地方(防止过拟合),就需要把一些多余的枝叶修剪掉,过拟合是非常常见的一件事,例如在下面的情况下我们浪费了过多的内存用于生成了一个奇形怪状的函数(紫色线):

Overfit graph: from https://tjo-en.hatenablog.com/entry/2015/06/04/190000

    所以说,在一定的误差范围内,需要剪枝这一操作,上面的三种决策树种都带有一些剪枝的影子,它们在生长的同时(构造决策树的同时)都会自己通过一些信息条件规划最优的生长模式,这种操作叫做预剪枝,还有一种剪枝方式更为常用,即后剪枝,下面有两种很很很基本的后剪枝策略 CCP 和 REP 可以实现决策树的优化以防止过拟合的发生。

\color{green}{REP: Reduced\ Error\ Pruning}

    错误率降低剪枝,将决策树的训练集取出合适的部分A用作剪枝的材料,用初始决策树给出对应于A数据集的预测结果与真实结果进行比较得出预测错误率\Theta ,用修剪该 ‘层/节点’ 前后的错误率\Theta_{t}\Theta_{t+1}进行比较,子树的预测错误率未下降,则修剪该 ‘层/节点’ ,可以以伪代码表示此剪枝过程如下:

prune method from Optic_css

\color{green}{CCP: Cost\ Complexity\ Pruning}

    代价复杂度剪枝,依据误差增加率来判断是否进行剪枝,其与前述剪枝方法的不同之处在于它并不需要抽出训练集中的数据进行检验,且它采用的剪枝的判断法则不同,这里使用一个叫做误差增加率的统计量:

\alpha=\frac{R_{T_{t}}-R_T}{L_T-L_{T_{t}}},

    这里R_{T}代表当前决策树T的训练数据集误差,R_{T_{t}}代表剪枝t后产生的决策树的误差,而L_T则对应剪枝前后的叶节点数,用于限制增加率的范围,通过预先为这一超参数赋值的方式来对于剪枝操作进行判断,从而完成修建决策树的操作。\color{gold}{Finally, 真诚地希望!!}\color{gold}{ \ \ \ 在家里能够养活这样一棵健康的小树(ง •\_•)ง。}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容