本文主要是介绍决策树和CART决策树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先简单介绍下决策树:
说到决策树肯定离不开信息熵
什么是信息熵(不要被这名字唬住,其实很简单)?
一个不太可能的时间居然发生了,要比一个非常可能的时间发生提供更多的信息。消息说:“今天早上太阳升起”。信息量是很少的,以至于没有必要发送。但另一条消息说:“今天早上日食”。信息量就很丰富。
概率越大信息量就越少,与概率成反比 1p
I(x)=logP(x)−1=−logP(x)
至于为什么取log可以看数学之美中的介绍(还有TFIDF)我建议不要过多纠结,记住就好。
上面是一个我们定义一个事件X=x的自信息。
我们求的信息熵,就是所以 xi 自信息的一个均值。
H(X)=E[I(x)]=−∑i=ni=1pi[log(pi)],X[x1,x2....]
H(X)是一个样本集,pi 是每一类的自信息。
ID3和C4.5
一个叫信息增益,一个叫信息增益比。
特征A信息增益:就是我样本集D的信息熵减去,我用样本的一个特征A去划分样本形成的新样本集D1,D2….每个新小样本集同样计算信息熵。相减得到A的信息增益。
同样我们还可以得到特征B,C。。选取最小的作为节点,形成ID3决策树。
信息增益比无非除以一个特征A值的熵(用特征A去划分类(青年,中年,老年就是三类, pi:p青年=N青/N ),和前面一样算信息熵 )
信息增益比:gr=g(D,A)HA(D),HA(D)=−∑ni=1DiDlog2DiD,Di=D青,D中,D老,D青=青年的数量。
选取最小的作为节点,形成C4.5决策树。
CART决策树:
这个才是重点,随机森林一般就是这个树构建,这是一种二叉树。它分为分类树和回归树。
分类树:用基尼指数,这个更加简单了直接看公式:
Gini(P)=1−∑iP2i,Pi=DiD,一共有i类
同样我们要算出每个特征对应的Gini系数,跟A的特征熵类似,用A和A对应的值去划分数据集,(D1,D2…..)计算每个Di的Gini系数,Di的Gini系数计算和D的一抹一样,只是规模变成了D1,也可能有i个类,找到最优特征和最优切分点(对应A和A的值)。
这篇关于决策树和CART决策树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!