文章目录

  • 决策树
  • ID3算法
    • 信息熵
    • 条件特征信息熵
    • 信息增益
    • ID3的缺陷
  • C4.5算法
    • 特征不确定性定量
    • 信息增益率
    • 小结
  • cart算法
    • 基尼系数
    • 特征条件基尼系数
    • 小结

本文属于我的机器学习/深度学习系列文章,点此查看系列文章目录

决策树

所谓决策树,就是一种树形结构的分类模型(也可以用作回归),它列举了每个特征下可能的情况以及对应情况下的下一步内容。下面是一个是否打篮球的决策树的例子:

小C:今天天气怎么样?
小P:晴
小C:温度呢?
小P:适中
小C:湿度呢?
小P:偏干燥,低
小C:风速如何?
小P:弱风
小C:好,那今天是个打篮球的好日子!

将上述过程绘制成决策树如下:

决策树的过程分两步,构建和决策(上述过程展示了如何决策)。构建的时候采用训练数据,带有所有特征和分类结果。决策的时候用测试数据,带有特征但无分类结果,通过决策得到分类结果。

ID3算法

ID3算法是决策树算法的一种,它采用信息增益的方式选择合适的属性作为划分属性。要理解ID3算法,需要先知道几个基本概念

信息熵

信息熵表示了信息的不确定度,是由信息学之父香农引入的。

什么是不确定度?其计算公式如下:

E n t r o p y ( T ) = − ∑ i = 1 n p ( i ∣ T ) l o g 2 p ( i ∣ T ) Entropy(T) = -\sum_{i=1}^n p(i|T)log_2p(i|T) Entropy(T)=−i=1∑n​p(i∣T)log2​p(i∣T)

其中, i i i是可分类别,例如打篮球中可分类别就是是、否两类, p ( i ∣ T ) p(i|T) p(i∣T)表示类别 T T T分为 i i i类的概率。

还是以打篮球为例。下面是根据属性特征已有分类结果的表格:

天气 温度 湿度 风速 是否打篮球
炎热
炎热
炎热
适中
寒冷
寒冷
寒冷
适中
寒冷
适中
适中
适中
炎热
适中

以上述表格为例(9个是,5个否),是否打篮球的信息熵就是
E n t r o p y ( T ) = − 9 14 ∗ l o g 2 9 14 − 5 14 ∗ l o g 2 5 14 = 0.940 Entropy(T) =-\frac{9}{14}*log_2\frac{9}{14} -\frac{5}{14}*log_2\frac{5}{14} = 0.940 Entropy(T)=−149​∗log2​149​−145​∗log2​145​=0.940
从直观的角度理解,当分类种类越多,分类的数量越均匀,信息熵越高。即纯度越低,很高的信息熵会让我们在决策的时候更加难以判断分类结果,需要借助更多的其他条件来确定。

(是、是、是、否、否、否)要比(是、是、是、是、是、否)信息熵更大,因为前者更加混乱

信息熵度量了这个类别的混乱程度,如果一个信息熵很小的类别,如(是、是、是、是、是、是),那么根本不需要决策,无论什么条件下结果都是一样

条件特征信息熵

又叫条件属性信息熵,其表示在某种特征条件下,所有类别出现的不确定性之和。其实他就在信息熵的基础上添加了特征这一选项。其计算公式为
E n t r o p y ( T ∣ F ) = ∑ i = 1 n D i D ∗ E n t r o p y ( F i ) Entropy(T| F) = \sum_{i=1}^n\frac{D_i}{D}*Entropy(F_i) Entropy(T∣F)=i=1∑n​DDi​​∗Entropy(Fi​)

其中, D i D_i Di​表示这种特征第i种情况的取值数,D表示这种特征所有的取值数, E n t r o p y ( F i ) Entropy(F_i) Entropy(Fi​)是信息熵,不过此时计算的信息熵是限定在情况(例如晴)下的。直观的理解就是如果按照天气特征分类得到的加权不纯度(信息熵越高,样本越不纯)。

以上述表格的天气特征为例:
E n t r o p y ( T ∣ 天 气 ) = 5 14 ∗ [ − 2 5 ∗ l o g 2 2 5 − 3 5 ∗ l o g 2 3 5 ] + 4 14 ∗ [ − 4 4 ∗ l o g 2 4 4 ] + 5 14 ∗ [ − 3 5 ∗ l o g 2 3 5 − 2 5 ∗ l o g 2 2 5 ] = 0.694 Entropy(T|天气) = \frac{5}{14}*[-\frac{2}{5}*log_2\frac{2}{5} - \frac{3}{5}*log_2\frac{3}{5}] + \frac{4}{14}*[-\frac{4}{4}*log_2\frac{4}{4} ] + \frac{5}{14}*[-\frac{3}{5}*log_2\frac{3}{5} - \frac{2}{5}*log_2\frac{2}{5}] \\= 0.694 Entropy(T∣天气)=145​∗[−52​∗log2​52​−53​∗log2​53​]+144​∗[−44​∗log2​44​]+145​∗[−53​∗log2​53​−52​∗log2​52​]=0.694

这里可能有点混乱,一开始我们求分类结果(是否打篮球)的信息熵,是为了得到当前数据的混乱程度(信息熵越高,数据越难划分)。而条件信息熵则是我们假设按照某一个特征(如天气)划分之后得到的新的加权(权重是特征中不同取值所占比例)混乱程度,一般情况新的加权混乱程度都是小于原始混乱程度的,即我们通过问了天气情况这个问题,使得数据更好划分了。下面的信息增益则是用于定量分析这个“更好划分”的程度。

信息增益

信息增益用直白的话来讲就是我选择这个信息分类,能带我多少分类收益(数据变得更好划分的程度)。它用于ID3中选择上层分类特征的基准,信息增益越高,则越要放到前面进行决策,因为很可能你根据这个很高的特征就可以直接进行分类,而不需要再考虑其他属性。

下面是一个信息增益对比的例子:

如果只要是晴天,我肯定去打球,只要是阴天和雨天,我肯定不去打球,这就导致我们可以直接通过天气进行分类,说明其信息增益很高。说到这,你也应该理解和分类结果越贴合的特征,其信息增益应该越高。

显然天气的信息增益要大于温度,对信息进行定量计算用以下公式:
G a i n ( F ) = E n t r o p y ( T ) − E n t r o p y ( T ∣ F ) Gain(F) = Entropy(T) - Entropy(T|F) Gain(F)=Entropy(T)−Entropy(T∣F)
以天气为例,天气这一特征的信息增益为
G a i n ( 天 气 ) = 0.940 − 0.694 = 0.246 Gain(天气) = 0.940 - 0.694 = 0.246 Gain(天气)=0.940−0.694=0.246
同理可得到 G a i n ( 温 度 ) = 0.029 Gain(温度) = 0.029 Gain(温度)=0.029, G a i n ( 湿 度 ) = 0.15 Gain(湿度) = 0.15 Gain(湿度)=0.15 G a i n ( 风 速 ) = 0.048 Gain(风速) = 0.048 Gain(风速)=0.048

由此可以知道天气的信息增益最大,在ID3算法中就将天气作为决策树的根节点,依据天气特征,将原来的表一分为三,如下:

  • 表1(晴)

    温度 湿度 风速 是否打篮球
    炎热
    炎热
    适中
    适中
    寒冷
  • 表2(阴)
    温度 湿度 风速 是否打篮球
    炎热
    寒冷
    适中
    炎热
  • 表3(雨)
    温度 湿度 风速 是否打篮球
    适中
    寒冷
    寒冷
    适中
    适中

再对剩下的表格继续做重复操作。观察表格你可以发现按照天气分类后,决策结果纯度已经较高了。实际上,当天气为阴的时候决策树已经可以直接返回打篮球的结果了,所以阴的下一节点是叶节点(是)。

我们继续对晴和雨进行信息增益计算,添加新特征到决策树操作。可以进一步将决策树划分为以下:

  • 表4(晴-湿度高)

    温度 湿度 风速 是否打篮球
    炎热
    炎热
    适中
    适中
  • 表5(晴-湿度中)

    温度 湿度 风速 是否打篮球
    寒冷
  • 表6(雨-风强)

    温度 湿度 风速 是否打篮球
    寒冷
    适中
  • 表7(雨-风弱)

    温度 湿度 风速 是否打篮球
    适中
    寒冷
    适中

最后,我们构造得到决策树如下:

当预测一条新的数据时,我们只需要从天气特征开始,依次往下判断即可。

例如[晴,炎热,高,强], 天气 -> 晴 ->湿度 -> 高->否 ,即不去打球

ID3的缺陷

ID3算法只考虑了信息增益,但却忽视了特征本身不确定性就可能很大的问题,这就好比只拿全国GDP跟人家比,却不考虑人均GDP,在特征情况数相差不大的情况下,对ID3算法的影响不大,可一旦特征本身可能情况就很多,就会导致训练的决策树算法不佳。

举一个很直观的极端例子,一个拥有10种的情况的特征,其情况1与分类1对应,其余9种和分类2对应,在用该特征进行划分后,对于分类帮助并不是很大,因为你还要从9种特征中再依据其他条件细分。

C4.5算法

C4.5算法可看做ID3算法的升级版,它考虑了ID3算法中仅用信息增益的不足,引入了信息增益率的概念。

特征不确定性定量

前面说过,虽然信息增益很高,但是特征的情况数很多(即特征的混乱度也很高)的时候,会影响决策树的效果,因此我们就需要计算特征本身的信息熵用以度量该特征的不确定性。

计算特征不确定性的公式就是信息熵的公式,可以得到
U n c e r t a i n ( 天 气 ) = − 5 14 ∗ l o g 2 5 14 − 5 14 ∗ l o g 2 5 14 − 4 14 ∗ l o g 2 4 14 = 1.577 Uncertain(天气) = -\frac{5}{14}*log_2\frac{5}{14} - \frac{5}{14}*log_2\frac{5}{14} - \frac{4}{14}*log_2\frac{4}{14} = 1.577 Uncertain(天气)=−145​∗log2​145​−145​∗log2​145​−144​∗log2​144​=1.577
U n c e r t a i n ( 温 度 ) = − 4 14 ∗ l o g 2 4 14 − 6 14 ∗ l o g 2 6 14 − 4 14 ∗ l o g 2 4 14 = 1.556 Uncertain(温度) = -\frac{4}{14}*log_2\frac{4}{14} - \frac{6}{14}*log_2\frac{6}{14} - \frac{4}{14}*log_2\frac{4}{14} = 1.556 Uncertain(温度)=−144​∗log2​144​−146​∗log2​146​−144​∗log2​144​=1.556
U n c e r t a i n ( 湿 度 ) = − 7 14 ∗ l o g 2 7 14 − 7 14 ∗ l o g 2 7 14 = 1.0 Uncertain(湿度) = -\frac{7}{14}*log_2\frac{7}{14} - \frac{7}{14}*log_2\frac{7}{14} = 1.0 Uncertain(湿度)=−147​∗log2​147​−147​∗log2​147​=1.0
U n c e r t a i n ( 风 速 ) = − 6 14 ∗ l o g 2 6 14 − 8 14 ∗ l o g 2 8 14 = 0.985 Uncertain(风速) = -\frac{6}{14}*log_2\frac{6}{14} - \frac{8}{14}*log_2\frac{8}{14} = 0.985 Uncertain(风速)=−146​∗log2​146​−148​∗log2​148​=0.985

信息增益率

信息增益率为
I G R ( F ) = G a i n ( F ) / U n c e r t a i n ( F ) IGR(F) = Gain(F) / Uncertain(F) IGR(F)=Gain(F)/Uncertain(F)
由此得到
I G R ( 天 气 ) = G a i n ( 天 气 ) / U n c e r t a i n ( 天 气 ) = 0.246 / 1.577 = 0.155 IGR(天气) = Gain(天气) / Uncertain(天气) = 0.246 / 1.577 = 0.155 IGR(天气)=Gain(天气)/Uncertain(天气)=0.246/1.577=0.155
I G R ( 温 度 ) = G a i n ( 温 度 ) / U n c e r t a i n ( 温 度 ) = 0.029 / 1.556 = 0.0186 IGR(温度) = Gain(温度) / Uncertain(温度) = 0.029/ 1.556 = 0.0186 IGR(温度)=Gain(温度)/Uncertain(温度)=0.029/1.556=0.0186
I G R ( 湿 度 ) = G a i n ( 温 度 ) / U n c e r t a i n ( 温 度 ) = 0.151 / 1.0 = 0.151 IGR(湿度) = Gain(温度) / Uncertain(温度) = 0.151/ 1.0 = 0.151 IGR(湿度)=Gain(温度)/Uncertain(温度)=0.151/1.0=0.151
I G R ( 风 速 ) = G a i n ( 风 速 ) / U n c e r t a i n ( 风 速 ) = 0.048 / 0.985 = 0.049 IGR(风速) = Gain(风速) / Uncertain(风速) = 0.048 / 0.985= 0.049 IGR(风速)=Gain(风速)/Uncertain(风速)=0.048/0.985=0.049

接下来的步骤只需要将ID3中的信息增益作为基准的地方用信息增益率替换即可。

小结

总结一下ID3,C4.5算法的算法步骤,可以用下面的流程图表示:

流程图中的节点是指用于划分的数据

#mermaid-svg-yTuEzLqpTHVhnC04 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .label text{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .node rect,#mermaid-svg-yTuEzLqpTHVhnC04 .node circle,#mermaid-svg-yTuEzLqpTHVhnC04 .node ellipse,#mermaid-svg-yTuEzLqpTHVhnC04 .node polygon,#mermaid-svg-yTuEzLqpTHVhnC04 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-yTuEzLqpTHVhnC04 .node .label{text-align:center;fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .node.clickable{cursor:pointer}#mermaid-svg-yTuEzLqpTHVhnC04 .arrowheadPath{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-yTuEzLqpTHVhnC04 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-yTuEzLqpTHVhnC04 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-yTuEzLqpTHVhnC04 .edgeLabel rect{opacity:0.9}#mermaid-svg-yTuEzLqpTHVhnC04 .edgeLabel span{color:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-yTuEzLqpTHVhnC04 .cluster text{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-yTuEzLqpTHVhnC04 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-yTuEzLqpTHVhnC04 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-yTuEzLqpTHVhnC04 .actor-line{stroke:grey}#mermaid-svg-yTuEzLqpTHVhnC04 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-yTuEzLqpTHVhnC04 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .sequenceNumber{fill:#fff}#mermaid-svg-yTuEzLqpTHVhnC04 #sequencenumber{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .messageText{fill:#333;stroke:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-yTuEzLqpTHVhnC04 .labelText,#mermaid-svg-yTuEzLqpTHVhnC04 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-yTuEzLqpTHVhnC04 .loopText,#mermaid-svg-yTuEzLqpTHVhnC04 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-yTuEzLqpTHVhnC04 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-yTuEzLqpTHVhnC04 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-yTuEzLqpTHVhnC04 .noteText,#mermaid-svg-yTuEzLqpTHVhnC04 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-yTuEzLqpTHVhnC04 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-yTuEzLqpTHVhnC04 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-yTuEzLqpTHVhnC04 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-yTuEzLqpTHVhnC04 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .section{stroke:none;opacity:0.2}#mermaid-svg-yTuEzLqpTHVhnC04 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-yTuEzLqpTHVhnC04 .section2{fill:#fff400}#mermaid-svg-yTuEzLqpTHVhnC04 .section1,#mermaid-svg-yTuEzLqpTHVhnC04 .section3{fill:#fff;opacity:0.2}#mermaid-svg-yTuEzLqpTHVhnC04 .sectionTitle0{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .sectionTitle1{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .sectionTitle2{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .sectionTitle3{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-yTuEzLqpTHVhnC04 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .grid path{stroke-width:0}#mermaid-svg-yTuEzLqpTHVhnC04 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-yTuEzLqpTHVhnC04 .task{stroke-width:2}#mermaid-svg-yTuEzLqpTHVhnC04 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .taskText:not([font-size]){font-size:11px}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-yTuEzLqpTHVhnC04 .task.clickable{cursor:pointer}#mermaid-svg-yTuEzLqpTHVhnC04 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-yTuEzLqpTHVhnC04 .taskText0,#mermaid-svg-yTuEzLqpTHVhnC04 .taskText1,#mermaid-svg-yTuEzLqpTHVhnC04 .taskText2,#mermaid-svg-yTuEzLqpTHVhnC04 .taskText3{fill:#fff}#mermaid-svg-yTuEzLqpTHVhnC04 .task0,#mermaid-svg-yTuEzLqpTHVhnC04 .task1,#mermaid-svg-yTuEzLqpTHVhnC04 .task2,#mermaid-svg-yTuEzLqpTHVhnC04 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutside0,#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutside2{fill:#000}#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutside1,#mermaid-svg-yTuEzLqpTHVhnC04 .taskTextOutside3{fill:#000}#mermaid-svg-yTuEzLqpTHVhnC04 .active0,#mermaid-svg-yTuEzLqpTHVhnC04 .active1,#mermaid-svg-yTuEzLqpTHVhnC04 .active2,#mermaid-svg-yTuEzLqpTHVhnC04 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-yTuEzLqpTHVhnC04 .activeText0,#mermaid-svg-yTuEzLqpTHVhnC04 .activeText1,#mermaid-svg-yTuEzLqpTHVhnC04 .activeText2,#mermaid-svg-yTuEzLqpTHVhnC04 .activeText3{fill:#000 !important}#mermaid-svg-yTuEzLqpTHVhnC04 .done0,#mermaid-svg-yTuEzLqpTHVhnC04 .done1,#mermaid-svg-yTuEzLqpTHVhnC04 .done2,#mermaid-svg-yTuEzLqpTHVhnC04 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-yTuEzLqpTHVhnC04 .doneText0,#mermaid-svg-yTuEzLqpTHVhnC04 .doneText1,#mermaid-svg-yTuEzLqpTHVhnC04 .doneText2,#mermaid-svg-yTuEzLqpTHVhnC04 .doneText3{fill:#000 !important}#mermaid-svg-yTuEzLqpTHVhnC04 .crit0,#mermaid-svg-yTuEzLqpTHVhnC04 .crit1,#mermaid-svg-yTuEzLqpTHVhnC04 .crit2,#mermaid-svg-yTuEzLqpTHVhnC04 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-yTuEzLqpTHVhnC04 .activeCrit0,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCrit1,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCrit2,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-yTuEzLqpTHVhnC04 .doneCrit0,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCrit1,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCrit2,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-yTuEzLqpTHVhnC04 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-yTuEzLqpTHVhnC04 .milestoneText{font-style:italic}#mermaid-svg-yTuEzLqpTHVhnC04 .doneCritText0,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCritText1,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCritText2,#mermaid-svg-yTuEzLqpTHVhnC04 .doneCritText3{fill:#000 !important}#mermaid-svg-yTuEzLqpTHVhnC04 .activeCritText0,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCritText1,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCritText2,#mermaid-svg-yTuEzLqpTHVhnC04 .activeCritText3{fill:#000 !important}#mermaid-svg-yTuEzLqpTHVhnC04 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-yTuEzLqpTHVhnC04 g.classGroup text .title{font-weight:bolder}#mermaid-svg-yTuEzLqpTHVhnC04 g.clickable{cursor:pointer}#mermaid-svg-yTuEzLqpTHVhnC04 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-yTuEzLqpTHVhnC04 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-yTuEzLqpTHVhnC04 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-yTuEzLqpTHVhnC04 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-yTuEzLqpTHVhnC04 .dashed-line{stroke-dasharray:3}#mermaid-svg-yTuEzLqpTHVhnC04 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 .commit-id,#mermaid-svg-yTuEzLqpTHVhnC04 .commit-msg,#mermaid-svg-yTuEzLqpTHVhnC04 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-yTuEzLqpTHVhnC04 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-yTuEzLqpTHVhnC04 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-yTuEzLqpTHVhnC04 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-yTuEzLqpTHVhnC04 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-yTuEzLqpTHVhnC04 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-yTuEzLqpTHVhnC04 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-yTuEzLqpTHVhnC04 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-yTuEzLqpTHVhnC04 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-yTuEzLqpTHVhnC04 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-yTuEzLqpTHVhnC04 .edgeLabel text{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-yTuEzLqpTHVhnC04 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-yTuEzLqpTHVhnC04 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-yTuEzLqpTHVhnC04 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-yTuEzLqpTHVhnC04 .note-edge{stroke-dasharray:5}#mermaid-svg-yTuEzLqpTHVhnC04 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-yTuEzLqpTHVhnC04 .error-icon{fill:#522}#mermaid-svg-yTuEzLqpTHVhnC04 .error-text{fill:#522;stroke:#522}#mermaid-svg-yTuEzLqpTHVhnC04 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-yTuEzLqpTHVhnC04 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-yTuEzLqpTHVhnC04 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-yTuEzLqpTHVhnC04 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-yTuEzLqpTHVhnC04 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-yTuEzLqpTHVhnC04 .marker{fill:#333}#mermaid-svg-yTuEzLqpTHVhnC04 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-yTuEzLqpTHVhnC04 {color: rgba(0, 0, 0, 0.75);font: ;}

开始
当前节点类别是否纯?
<即是否全为同一类>
计算类别信息熵E-T
计算特征信息熵E-F
计算信息增益Gain-F
是否为C4.5
计算特征不确定性U-F
计算信息增益率IGR,
选出最大者,用其划分数据
设置该节点为叶节点-即分类
结果,将该分类特征情况去除
是否还有需要
进行划分的节点
结束

cart算法

cart算法也是应用决策树的算法之一,再一次理解决策树的核心是将混杂的数据划分成纯净的数据,划分的依据在于特征的选择。因此怎么评价一个特征是不是一个好特征,是通过其划分的数据“纯度”得到的。而评价的定量标准在ID3中是信息增益,在C4.5中是信息增益率,在cart中是基尼系数。

基尼系数

基尼系数反映了样本的不确定度,样本差异越小,基尼系数越小;反之,基尼系数越大。我们常用基尼系数衡量一个国家收入差距。先来看看基尼系数的计算公式:
G i n i ( T ) = 1 − ∑ k = 1 n [ p ( T k ∣ T ) ] 2 Gini(T) = 1 - \sum_{k=1}^n[p(T_k|T)]^2 Gini(T)=1−k=1∑n​[p(Tk​∣T)]2
其中, T T T代表分类(如是否去打篮球), T k T_k Tk​代表第k个分类情况(在打篮球中就是:是/否 ),我们以之前打篮球的例子的一部分来做示例计算。

温度 湿度 风速 是否打篮球
适中
寒冷
寒冷
适中
适中

查看是否打篮球分类列,包含 {是,是,是,否,否}5个结果。其 G i n i Gini Gini系数为:
G i n i ( T ) = 1 − [ ( 3 5 ) 2 + ( 2 5 ) 2 ] = 0.48 Gini(T) = 1 - [(\frac{3}{5})^2+(\frac{2}{5})^2] = 0.48 Gini(T)=1−[(53​)2+(52​)2]=0.48

特征条件基尼系数

与ID3中的特征条件信息熵类似,它反映的是利用特征进行数据划分后,分类基尼系数的变化情况。下面是其计算公式:
G i n i ( T , F ) = ∑ i = 1 2 D i D ∗ G i n i ( T i ) Gini(T,F) = \sum_{i=1}^2\frac{D_i}{D}*Gini(T_i) Gini(T,F)=i=1∑2​DDi​​∗Gini(Ti​)
D i D_i Di​是分类结果某一类中的样本数量, D D D是总的样本数量。为什么累加是2不是n?注意cart算法和ID3、C4.5算法有一个不同点是cart算法构造的是二叉树,更加简洁,针对一个特征的一个具体情况(例如湿度:高),cart在分类的时候会将样本分为高和不高两类,所以公式中的集合总是2个。分成二叉树的好处是结构更为简单。下面是我绘制的一个样例:

分别按湿度的高、不高,风速的强、不强两种特征划分得到基尼系数显然用风速的强、不强划分要更好,因为其基尼系数更小。(基尼系数为0说明完成了纯净划分)。此时就完成了一次划分,对划分的结果进行判断是否分类已经“纯”了,若不纯,则继续划分。

小结

总结一下cart算法的流程。

流程图中的节点是指用于划分的数据

#mermaid-svg-YCyAYXcJvuYj0uR4 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .label text{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .node rect,#mermaid-svg-YCyAYXcJvuYj0uR4 .node circle,#mermaid-svg-YCyAYXcJvuYj0uR4 .node ellipse,#mermaid-svg-YCyAYXcJvuYj0uR4 .node polygon,#mermaid-svg-YCyAYXcJvuYj0uR4 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-YCyAYXcJvuYj0uR4 .node .label{text-align:center;fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .node.clickable{cursor:pointer}#mermaid-svg-YCyAYXcJvuYj0uR4 .arrowheadPath{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-YCyAYXcJvuYj0uR4 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-YCyAYXcJvuYj0uR4 .edgeLabel rect{opacity:0.9}#mermaid-svg-YCyAYXcJvuYj0uR4 .edgeLabel span{color:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-YCyAYXcJvuYj0uR4 .cluster text{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-YCyAYXcJvuYj0uR4 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-YCyAYXcJvuYj0uR4 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .actor-line{stroke:grey}#mermaid-svg-YCyAYXcJvuYj0uR4 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .sequenceNumber{fill:#fff}#mermaid-svg-YCyAYXcJvuYj0uR4 #sequencenumber{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .messageText{fill:#333;stroke:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-YCyAYXcJvuYj0uR4 .labelText,#mermaid-svg-YCyAYXcJvuYj0uR4 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .loopText,#mermaid-svg-YCyAYXcJvuYj0uR4 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-YCyAYXcJvuYj0uR4 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-YCyAYXcJvuYj0uR4 .noteText,#mermaid-svg-YCyAYXcJvuYj0uR4 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-YCyAYXcJvuYj0uR4 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-YCyAYXcJvuYj0uR4 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-YCyAYXcJvuYj0uR4 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .section{stroke:none;opacity:0.2}#mermaid-svg-YCyAYXcJvuYj0uR4 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-YCyAYXcJvuYj0uR4 .section2{fill:#fff400}#mermaid-svg-YCyAYXcJvuYj0uR4 .section1,#mermaid-svg-YCyAYXcJvuYj0uR4 .section3{fill:#fff;opacity:0.2}#mermaid-svg-YCyAYXcJvuYj0uR4 .sectionTitle0{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .sectionTitle1{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .sectionTitle2{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .sectionTitle3{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-YCyAYXcJvuYj0uR4 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .grid path{stroke-width:0}#mermaid-svg-YCyAYXcJvuYj0uR4 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-YCyAYXcJvuYj0uR4 .task{stroke-width:2}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText:not([font-size]){font-size:11px}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-YCyAYXcJvuYj0uR4 .task.clickable{cursor:pointer}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText0,#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText1,#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText2,#mermaid-svg-YCyAYXcJvuYj0uR4 .taskText3{fill:#fff}#mermaid-svg-YCyAYXcJvuYj0uR4 .task0,#mermaid-svg-YCyAYXcJvuYj0uR4 .task1,#mermaid-svg-YCyAYXcJvuYj0uR4 .task2,#mermaid-svg-YCyAYXcJvuYj0uR4 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutside0,#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutside2{fill:#000}#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutside1,#mermaid-svg-YCyAYXcJvuYj0uR4 .taskTextOutside3{fill:#000}#mermaid-svg-YCyAYXcJvuYj0uR4 .active0,#mermaid-svg-YCyAYXcJvuYj0uR4 .active1,#mermaid-svg-YCyAYXcJvuYj0uR4 .active2,#mermaid-svg-YCyAYXcJvuYj0uR4 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-YCyAYXcJvuYj0uR4 .activeText0,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeText1,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeText2,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeText3{fill:#000 !important}#mermaid-svg-YCyAYXcJvuYj0uR4 .done0,#mermaid-svg-YCyAYXcJvuYj0uR4 .done1,#mermaid-svg-YCyAYXcJvuYj0uR4 .done2,#mermaid-svg-YCyAYXcJvuYj0uR4 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-YCyAYXcJvuYj0uR4 .doneText0,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneText1,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneText2,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneText3{fill:#000 !important}#mermaid-svg-YCyAYXcJvuYj0uR4 .crit0,#mermaid-svg-YCyAYXcJvuYj0uR4 .crit1,#mermaid-svg-YCyAYXcJvuYj0uR4 .crit2,#mermaid-svg-YCyAYXcJvuYj0uR4 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCrit0,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCrit1,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCrit2,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCrit0,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCrit1,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCrit2,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-YCyAYXcJvuYj0uR4 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-YCyAYXcJvuYj0uR4 .milestoneText{font-style:italic}#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCritText0,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCritText1,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCritText2,#mermaid-svg-YCyAYXcJvuYj0uR4 .doneCritText3{fill:#000 !important}#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCritText0,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCritText1,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCritText2,#mermaid-svg-YCyAYXcJvuYj0uR4 .activeCritText3{fill:#000 !important}#mermaid-svg-YCyAYXcJvuYj0uR4 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-YCyAYXcJvuYj0uR4 g.classGroup text .title{font-weight:bolder}#mermaid-svg-YCyAYXcJvuYj0uR4 g.clickable{cursor:pointer}#mermaid-svg-YCyAYXcJvuYj0uR4 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-YCyAYXcJvuYj0uR4 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-YCyAYXcJvuYj0uR4 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-YCyAYXcJvuYj0uR4 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .dashed-line{stroke-dasharray:3}#mermaid-svg-YCyAYXcJvuYj0uR4 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 .commit-id,#mermaid-svg-YCyAYXcJvuYj0uR4 .commit-msg,#mermaid-svg-YCyAYXcJvuYj0uR4 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-YCyAYXcJvuYj0uR4 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-YCyAYXcJvuYj0uR4 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-YCyAYXcJvuYj0uR4 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-YCyAYXcJvuYj0uR4 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-YCyAYXcJvuYj0uR4 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-YCyAYXcJvuYj0uR4 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-YCyAYXcJvuYj0uR4 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-YCyAYXcJvuYj0uR4 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-YCyAYXcJvuYj0uR4 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-YCyAYXcJvuYj0uR4 .edgeLabel text{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-YCyAYXcJvuYj0uR4 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-YCyAYXcJvuYj0uR4 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-YCyAYXcJvuYj0uR4 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-YCyAYXcJvuYj0uR4 .note-edge{stroke-dasharray:5}#mermaid-svg-YCyAYXcJvuYj0uR4 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-YCyAYXcJvuYj0uR4 .error-icon{fill:#522}#mermaid-svg-YCyAYXcJvuYj0uR4 .error-text{fill:#522;stroke:#522}#mermaid-svg-YCyAYXcJvuYj0uR4 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-YCyAYXcJvuYj0uR4 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-YCyAYXcJvuYj0uR4 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-YCyAYXcJvuYj0uR4 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-YCyAYXcJvuYj0uR4 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-YCyAYXcJvuYj0uR4 .marker{fill:#333}#mermaid-svg-YCyAYXcJvuYj0uR4 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-YCyAYXcJvuYj0uR4 {color: rgba(0, 0, 0, 0.75);font: ;}

开始
分类样本节点是否'纯'
计算各个特征的各个
情况的条件基尼系数
选择条件基尼系数最大者,按其进行划分
设置该节点为叶节点-即分类结果
将该分类特征情况去除
是否还有需要
进行划分的节点
结束

决策树的这几个算法本身并不难理解,但仍需要自己多动手在纸上运算才能深入理解。如果想要将其应用到实际开发中,建议自己动手实现一下。如果觉得有难度,也没有关系,我已经将对应算法的代码放在了我的Github中,你可以对照参考。

决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)相关推荐

  1. java 排序原理_简单选择排序算法原理及java实现(超详细)

    简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...

  2. 0.96寸OLED用两点式画直线算法思路分享—代码开源—简单易懂超详细

    这个算法是纯原创,没有任何借鉴的元素 实现原理大概就是通过两个点算出直线方程然后描点 在这个函数中OLED_DrawDot函数是描点函数,如果和自己代码里不匹配可以换成自己代码里的描点函数. 先看整个 ...

  3. Spark工作原理及基础概念(超详细!)

    目录 一.Spark概述 (1)概述 (2)Spark整体架构 (3)Spark特性 (4)Spark与MR (5)Spark Streaming与Storm (6)Spark SQL与Hive 二. ...

  4. 超前进位加法器原理与递推式超详细推导+verilog实现与测试

    当记忆的线缠绕过往支离破碎,是慌乱占据了心扉.----<寂寞沙洲冷> 超前进位加法器原理 1. 一位二进制的加法 首先考虑两个1位二进制相加 a+b,不考虑上一级的进位,0和1简单相加,即 ...

  5. 网络工程师入门必备「思科模拟器」实现交换机工作原理_5分钟学会!超详细实验配置解析~

    交换机: 再当今局域网中,交换机作为是作为最常见的以太网交换设备.大到服务器级华为思科交换机,小到十几块钱的塑料盒子.那么作为局域网中最常见的交换设备,它是如何进行工作的. 交换机的工作环境: 交换机 ...

  6. 交换机工作原理及MAC表(超详细,秒懂)

    拓朴图 1.交换机的工作原理: 交换机工作在OSI模型的第二层,数据链路层,主要用于终端用户接入网络,对数据帧进行交换. 交换机对数据帧交换的过程: ① 学习(Learning):交换机在进行数据转发 ...

  7. 粒子群算法PSO求解最大值和最小值案例(超详细注释)

    目录 前言 1.粒子群算法简介和难点理解 1.1概念理解 ①非劣解集和支配 ②个体极值和群体极值 ③个体适应度值和群体适应度值 1.2 算法流程和理解 1.3 速度和位置更新公式 1.4 rand.r ...

  8. 机器学习——使用ID3算法从原理到实际举例理解决策树

    文章目录 一.什么是决策树 二.介绍建立决策树的算法 三.决策树的一般流程 四.实际举例构建决策树 使用ID3算法的原理实现构建决策树 参考链接 一.什么是决策树 基本概念 决策树是一种树形结构,其组 ...

  9. 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...

    机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

最新文章

  1. 数据库字符mysql_MySQL数据库之字符函数详解
  2. tomcat(14)服务器组件和服务组件
  3. 下载丨2020 PG亚洲大会(PPT汇总)
  4. 【ES】es 查询超时listener timeout after waiting for [60000] ms
  5. python控制安捷伦频谱仪_频谱仪远程操作Python类
  6. html语言代码大全,html常用代码大全 寻找最全的HTML语言代码大全
  7. 城市规划图例符号_城市规划图例符号精编版
  8. git push报错 rejected
  9. gromacs 安装_Gromacs详细安装教程
  10. 怎么获取别人服务器信息失败,获取服务器信息失败
  11. 二阶系统参数用matlab,实验一基于MATLAB的二阶系统动态性能分析
  12. Java8新特性之新时间API
  13. 卸载 Ubuntu 16.04 Kinetic版本ROS
  14. 神经网络 mse一直不变_使用深度卷积神经网络的儿科骨龄评估
  15. Python爬虫实战(一) — Pixabay图片下载器
  16. 中微子电池(Neutrinovoltaic)是能源发展的新载体
  17. 计算机为什么无法使用高级恢复,电脑怎么还原系统,win7电脑还原系统高级恢复方法-...
  18. 如何用camtasia录制微课视频教程
  19. 视频格式: QSV转MP4
  20. 性能测试之性能优化篇

热门文章

  1. 【渝粤题库】广东开放大学 市场调查与预测 形成性考核
  2. Android压缩图片到100K以下并保持不失真的高效方法
  3. 使用CSS达到阴阳八卦图等图形
  4. 阿里云对象存储OSS存储照片
  5. 用python绘制树和深林
  6. 微信公众号开发笔记(三):微信JSAPI支付功能开发
  7. 科大讯飞智能办公本Air电纸书阅读器,让我的工作生活更加健康
  8. Excel遇到错误div/0显示为0或者不显示
  9. 试设计一个窗口,内含一个按钮。开始运行时,按钮显示“Click Me”字样,当按钮按下时,按钮显示为“Click Me Again”字样,再按一次,则按钮显示“Click Me”字样,依此循环。
  10. 4399积分小游戏刷分工具帮助