机器学习算法(二):基于决策树的分类预测
什么是决策树
以二分类任务为例,在决策西瓜是不是好瓜时,有很多特征可以支持我们做出预测,但一般情况下人脑没办法做到同时利用到每一个特征的,而是根据经验先判断一个特征,再判断下一个,依次重复直至可以做出预测或最终特征判断完无法做出预测。这种决策树的关键就是分清各个的特征的轻重缓急。正因为这样的决策过程,判断的顺序的不同、每一步的判断不同都有可能产生不同的决策结果,所以称之为“决策树”。
决策树的生成
1.生成节点node
2.𝑖𝑓 𝐷 中样本全书属于同一类别 𝐶 𝑡ℎ𝑒𝑛 :
3.----将node标记为 𝐶 类叶节点; 𝑟𝑒𝑡𝑢𝑟𝑛
4.𝑖𝑓 𝐴 = 空集 OR D中样本在 𝐴 上的取值相同 𝑡ℎ𝑒𝑛 :
5.----将node标记为叶节点,其类别标记为 𝐷 中样本数最多的类; 𝑟𝑒𝑡𝑢𝑟𝑛
6.从 𝐴 中选择最优划分属性 𝑎∗ ;
7.𝑓𝑜𝑟 𝑎∗ 的每一个值 𝑎𝑣∗ 𝑑𝑜 :
8.----为node生成一个分支,令 𝐷𝑣 表示 𝐷 中在 𝑎∗ 上取值为 𝑎𝑣∗ 的样本子集;
9.---- 𝑖𝑓 𝐷𝑣 为空 𝑡ℎ𝑒𝑛 :
10.--------将分支节点标记为叶节点,其类别标记为 𝐷 中样本最多的类; 𝑡ℎ𝑒𝑛
11.---- 𝑒𝑙𝑠𝑒 :
12.--------以 TreeGenerate( 𝐷𝑣 , 𝐴 { 𝑎∗ })为分支节点
根据决策树的概念及其伪代码,如何选择最优划分属性a*及安排特征的判断先后顺序成为了尤为重要的一点。
这里我们引入了两个概念:“纯度”,“信息熵”。
纯度
根据一步一步的判断,不同的样本会被分类到不同的结点上直至可以被最终分类,即递归返回。我们希望决策树的分支节点所包含的样本尽可能属于同一类别。
纯度:属于同一类别的样本比例。
我们希望的是出现一家独大的结果,而不是百家争鸣。意思是,我们希望是绝大部分的样本属于某一类别,允许少数属于其他类别,因为这样我们仍然可以给该结点定性,将预测时划入该结点的样本决策为 占主要比例的样本所属的类别。
信息熵
信息熵:度量样本集合纯度最常用的一种指标
公式为:
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum_{k=1}^{|y|}p_klog_2p_k Ent(D)=−k=1∑∣y∣pklog2pk
信息熵越小,则D(数据集)的纯度越高 即要搞清楚所需要的信息越小。这里的搞清楚就是决策分类。
最优划分属性的选择方法
信息增益 ID3
在每次判断时,我们都希望这次判断是可供选择的判断方式中最为高效的,即提供最多的信息可以帮我们快速分类,结合之前的“纯度”即使用某一属性a来进行划分所获得的“纯度提升”最大。而纯度恰恰可以用信息熵来衡量。
所以我们的目标就是: M a x G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D V ) Max Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^V) Ma