决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)
文章目錄
- 決策樹
- ID3算法
- 信息熵
- 條件特征信息熵
- 信息增益
- ID3的缺陷
- C4.5算法
- 特征不確定性定量
- 信息增益率
- 小結(jié)
- cart算法
- 基尼系數(shù)
- 特征條件基尼系數(shù)
- 小結(jié)
本文屬于我的機器學(xué)習(xí)/深度學(xué)習(xí)系列文章,點此查看系列文章目錄
決策樹
所謂決策樹,就是一種樹形結(jié)構(gòu)的分類模型(也可以用作回歸),它列舉了每個特征下可能的情況以及對應(yīng)情況下的下一步內(nèi)容。下面是一個是否打籃球的決策樹的例子:
小C:今天天氣怎么樣? 小P:晴 小C:溫度呢? 小P:適中 小C:濕度呢? 小P:偏干燥,低 小C:風(fēng)速如何? 小P:弱風(fēng) 小C:好,那今天是個打籃球的好日子!將上述過程繪制成決策樹如下:
決策樹的過程分兩步,構(gòu)建和決策(上述過程展示了如何決策)。構(gòu)建的時候采用訓(xùn)練數(shù)據(jù),帶有所有特征和分類結(jié)果。決策的時候用測試數(shù)據(jù),帶有特征但無分類結(jié)果,通過決策得到分類結(jié)果。
ID3算法
ID3算法是決策樹算法的一種,它采用信息增益的方式選擇合適的屬性作為劃分屬性。要理解ID3算法,需要先知道幾個基本概念
信息熵
信息熵表示了信息的不確定度,是由信息學(xué)之父香農(nóng)引入的。
什么是不確定度?其計算公式如下:
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類的概率。
還是以打籃球為例。下面是根據(jù)屬性特征已有分類結(jié)果的表格:
| 晴 | 炎熱 | 高 | 弱 | 否 |
| 晴 | 炎熱 | 高 | 強 | 否 |
| 陰 | 炎熱 | 高 | 弱 | 是 |
| 雨 | 適中 | 高 | 弱 | 是 |
| 雨 | 寒冷 | 中 | 弱 | 是 |
| 雨 | 寒冷 | 中 | 強 | 否 |
| 陰 | 寒冷 | 中 | 強 | 是 |
| 晴 | 適中 | 高 | 弱 | 否 |
| 晴 | 寒冷 | 中 | 弱 | 是 |
| 雨 | 適中 | 中 | 弱 | 是 |
| 晴 | 適中 | 中 | 強 | 是 |
| 陰 | 適中 | 高 | 強 | 是 |
| 陰 | 炎熱 | 中 | 弱 | 是 |
| 雨 | 適中 | 高 | 強 | 否 |
以上述表格為例(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
從直觀的角度理解,當分類種類越多,分類的數(shù)量越均勻,信息熵越高。即純度越低,很高的信息熵會讓我們在決策的時候更加難以判斷分類結(jié)果,需要借助更多的其他條件來確定。
(是、是、是、否、否、否)要比(是、是、是、是、是、否)信息熵更大,因為前者更加混亂
信息熵度量了這個類別的混亂程度,如果一個信息熵很小的類別,如(是、是、是、是、是、是),那么根本不需要決策,無論什么條件下結(jié)果都是一樣
條件特征信息熵
又叫條件屬性信息熵,其表示在某種特征條件下,所有類別出現(xiàn)的不確定性之和。其實他就在信息熵的基礎(chǔ)上添加了特征這一選項。其計算公式為
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種情況的取值數(shù),D表示這種特征所有的取值數(shù), E n t r o p y ( F i ) Entropy(F_i) Entropy(Fi?)是信息熵,不過此時計算的信息熵是限定在情況(例如晴)下的。直觀的理解就是如果按照天氣特征分類得到的加權(quán)不純度(信息熵越高,樣本越不純)。
以上述表格的天氣特征為例:
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
這里可能有點混亂,一開始我們求分類結(jié)果(是否打籃球)的信息熵,是為了得到當前數(shù)據(jù)的混亂程度(信息熵越高,數(shù)據(jù)越難劃分)。而條件信息熵則是我們假設(shè)按照某一個特征(如天氣)劃分之后得到的新的加權(quán)(權(quán)重是特征中不同取值所占比例)混亂程度,一般情況新的加權(quán)混亂程度都是小于原始混亂程度的,即我們通過問了天氣情況這個問題,使得數(shù)據(jù)更好劃分了。下面的信息增益則是用于定量分析這個“更好劃分”的程度。
信息增益
信息增益用直白的話來講就是我選擇這個信息分類,能帶我多少分類收益(數(shù)據(jù)變得更好劃分的程度)。它用于ID3中選擇上層分類特征的基準,信息增益越高,則越要放到前面進行決策,因為很可能你根據(jù)這個很高的特征就可以直接進行分類,而不需要再考慮其他屬性。
下面是一個信息增益對比的例子:
如果只要是晴天,我肯定去打球,只要是陰天和雨天,我肯定不去打球,這就導(dǎo)致我們可以直接通過天氣進行分類,說明其信息增益很高。說到這,你也應(yīng)該理解和分類結(jié)果越貼合的特征,其信息增益應(yīng)該越高。
顯然天氣的信息增益要大于溫度,對信息進行定量計算用以下公式:
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 ( 風(fēng) 速 ) = 0.048 Gain(風(fēng)速) = 0.048 Gain(風(fēng)速)=0.048
由此可以知道天氣的信息增益最大,在ID3算法中就將天氣作為決策樹的根節(jié)點,依據(jù)天氣特征,將原來的表一分為三,如下:
- 表1(晴)
溫度濕度風(fēng)速是否打籃球 炎熱 高 弱 否 炎熱 高 強 否 適中 高 弱 否 適中 高 弱 否 寒冷 中 弱 是 - 表2(陰)
溫度濕度風(fēng)速是否打籃球 炎熱 高 弱 是 寒冷 中 強 是 適中 高 強 是 炎熱 中 弱 是 - 表3(雨)
溫度濕度風(fēng)速是否打籃球 適中 高 弱 是 寒冷 中 弱 是 寒冷 中 強 否 適中 中 弱 是 適中 高 強 否
再對剩下的表格繼續(xù)做重復(fù)操作。觀察表格你可以發(fā)現(xiàn)按照天氣分類后,決策結(jié)果純度已經(jīng)較高了。實際上,當天氣為陰的時候決策樹已經(jīng)可以直接返回打籃球的結(jié)果了,所以陰的下一節(jié)點是葉節(jié)點(是)。
我們繼續(xù)對晴和雨進行信息增益計算,添加新特征到?jīng)Q策樹操作。可以進一步將決策樹劃分為以下:
-
表4(晴-濕度高)
溫度濕度風(fēng)速是否打籃球 炎熱 高 弱 否 炎熱 高 強 否 適中 高 弱 否 適中 高 弱 否 -
表5(晴-濕度中)
溫度濕度風(fēng)速是否打籃球 寒冷 中 弱 是 -
表6(雨-風(fēng)強)
溫度濕度風(fēng)速是否打籃球 寒冷 中 強 否 適中 高 強 否 -
表7(雨-風(fēng)弱)
溫度濕度風(fēng)速是否打籃球 適中 高 弱 是 寒冷 中 弱 是 適中 中 弱 是
最后,我們構(gòu)造得到?jīng)Q策樹如下:
當預(yù)測一條新的數(shù)據(jù)時,我們只需要從天氣特征開始,依次往下判斷即可。
例如[晴,炎熱,高,強], 天氣 -> 晴 ->濕度 -> 高->否 ,即不去打球
ID3的缺陷
ID3算法只考慮了信息增益,但卻忽視了特征本身不確定性就可能很大的問題,這就好比只拿全國GDP跟人家比,卻不考慮人均GDP,在特征情況數(shù)相差不大的情況下,對ID3算法的影響不大,可一旦特征本身可能情況就很多,就會導(dǎo)致訓(xùn)練的決策樹算法不佳。
舉一個很直觀的極端例子,一個擁有10種的情況的特征,其情況1與分類1對應(yīng),其余9種和分類2對應(yīng),在用該特征進行劃分后,對于分類幫助并不是很大,因為你還要從9種特征中再依據(jù)其他條件細分。
C4.5算法
C4.5算法可看做ID3算法的升級版,它考慮了ID3算法中僅用信息增益的不足,引入了信息增益率的概念。
特征不確定性定量
前面說過,雖然信息增益很高,但是特征的情況數(shù)很多(即特征的混亂度也很高)的時候,會影響決策樹的效果,因此我們就需要計算特征本身的信息熵用以度量該特征的不確定性。
計算特征不確定性的公式就是信息熵的公式,可以得到
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 ( 風(fēng) 速 ) = ? 6 14 ? l o g 2 6 14 ? 8 14 ? l o g 2 8 14 = 0.985 Uncertain(風(fēng)速) = -\frac{6}{14}*log_2\frac{6}{14} - \frac{8}{14}*log_2\frac{8}{14} = 0.985 Uncertain(風(fēng)速)=?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 ( 風(fēng) 速 ) = G a i n ( 風(fēng) 速 ) / U n c e r t a i n ( 風(fēng) 速 ) = 0.048 / 0.985 = 0.049 IGR(風(fēng)速) = Gain(風(fēng)速) / Uncertain(風(fēng)速) = 0.048 / 0.985= 0.049 IGR(風(fēng)速)=Gain(風(fēng)速)/Uncertain(風(fēng)速)=0.048/0.985=0.049
接下來的步驟只需要將ID3中的信息增益作為基準的地方用信息增益率替換即可。
小結(jié)
總結(jié)一下ID3,C4.5算法的算法步驟,可以用下面的流程圖表示:
流程圖中的節(jié)點是指用于劃分的數(shù)據(jù)
#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: ;} 否 是 否 是 是 否 開始 當前節(jié)點類別是否純?<即是否全為同一類> 計算類別信息熵E-T 計算特征信息熵E-F 計算信息增益Gain-F 是否為C4.5 計算特征不確定性U-F 計算信息增益率IGR,
選出最大者,用其劃分數(shù)據(jù) 設(shè)置該節(jié)點為葉節(jié)點-即分類
結(jié)果,將該分類特征情況去除 是否還有需要
進行劃分的節(jié)點 結(jié)束
cart算法
cart算法也是應(yīng)用決策樹的算法之一,再一次理解決策樹的核心是將混雜的數(shù)據(jù)劃分成純凈的數(shù)據(jù),劃分的依據(jù)在于特征的選擇。因此怎么評價一個特征是不是一個好特征,是通過其劃分的數(shù)據(jù)“純度”得到的。而評價的定量標準在ID3中是信息增益,在C4.5中是信息增益率,在cart中是基尼系數(shù)。
基尼系數(shù)
基尼系數(shù)反映了樣本的不確定度,樣本差異越小,基尼系數(shù)越小;反之,基尼系數(shù)越大。我們常用基尼系數(shù)衡量一個國家收入差距。先來看看基尼系數(shù)的計算公式:
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個結(jié)果。其 G i n i Gini Gini系數(shù)為:
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
特征條件基尼系數(shù)
與ID3中的特征條件信息熵類似,它反映的是利用特征進行數(shù)據(jù)劃分后,分類基尼系數(shù)的變化情況。下面是其計算公式:
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?是分類結(jié)果某一類中的樣本數(shù)量, D D D是總的樣本數(shù)量。為什么累加是2不是n?注意cart算法和ID3、C4.5算法有一個不同點是cart算法構(gòu)造的是二叉樹,更加簡潔,針對一個特征的一個具體情況(例如濕度:高),cart在分類的時候會將樣本分為高和不高兩類,所以公式中的集合總是2個。分成二叉樹的好處是結(jié)構(gòu)更為簡單。下面是我繪制的一個樣例:
分別按濕度的高、不高,風(fēng)速的強、不強兩種特征劃分得到基尼系數(shù)顯然用風(fēng)速的強、不強劃分要更好,因為其基尼系數(shù)更小。(基尼系數(shù)為0說明完成了純凈劃分)。此時就完成了一次劃分,對劃分的結(jié)果進行判斷是否分類已經(jīng)“純”了,若不純,則繼續(xù)劃分。
小結(jié)
總結(jié)一下cart算法的流程。
流程圖中的節(jié)點是指用于劃分的數(shù)據(jù)
#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: ;} 否 是 是 否 開始 分類樣本節(jié)點是否'純' 計算各個特征的各個情況的條件基尼系數(shù) 選擇條件基尼系數(shù)最大者,按其進行劃分 設(shè)置該節(jié)點為葉節(jié)點-即分類結(jié)果
將該分類特征情況去除 是否還有需要
進行劃分的節(jié)點 結(jié)束
決策樹的這幾個算法本身并不難理解,但仍需要自己多動手在紙上運算才能深入理解。如果想要將其應(yīng)用到實際開發(fā)中,建議自己動手實現(xiàn)一下。如果覺得有難度,也沒有關(guān)系,我已經(jīng)將對應(yīng)算法的代碼放在了我的Github中,你可以對照參考。
總結(jié)
以上是生活随笔為你收集整理的决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中Start With的用法
- 下一篇: SQLyog:Error Code :