决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类别。算法
分类的时候,从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;此时,每个子结点对应着该特征的一个取值。如此递归向下移动,直至达到叶结点,最后将实例分配到叶结点的类别中。函数
决策树是一种贪心算法,要在给定时间内做出最佳选择,但并不关心可否达到全局最优。测试
如下为各决策树算法比较:spa
构造决策树即为从上到下构造结点特征的过程,当前结点应当选取为对所需划分的数据集起决定性做用的特征。blog
划分数据集应当遵循的原则为:将无序的数据变得更加有序。递归
香农熵(简称熵)被用来度量集合的信息的有序或无序。循环
若是待分类的事物可能划分在多个分类中,则符号xi的信息定义为:遍历
其中p(xi)是选择该分类的几率。方法
为了计算熵,须要计算全部可能值包含的信息指望值:im
其中m表示分类的数目。
熵越高,则代表混合的数据越多,纯度越低,有序程度越低,分类效果越差。
基尼不纯度是指未来自集合的某种结果随机应用于某一数据项的预期偏差率:
基尼不纯度越小,纯度越高,集合的有序程度越高,分类的效果越好。
基尼不纯度为 0 时,表示集合类别一致;基尼不纯度最高(纯度最低)时,p(xi)=1/m。
信息增益表现为熵的减小或数据无序度的减小:
当采用基尼不纯度时:
①计算当前数据集的香农熵,记为Hold(使用基尼不纯度度量无序程度时,记为IG_old),并记录当前数据集的样本数为n,样本类别总数为m。
②遍历全部特征,设当前特征为i。
③遍历特征i的全部属性取值,记当前取值为j,不一样取值总数为γ,设特征i取值为j的子集样本数为nj,则以特征i划分的信息增益为:
其中Hnewj为对应特征i取值为j的子集的香农熵(IG_newj为对应特征i取值为j的子集的基尼不纯度)。
④选取Gi最大的特征做为当前结点的特征。
首先咱们将获得原始数据集,而后基于最好的特征划分数据集,此时将会根据该特征的取值不一样而有多个分支。第一次划分后,数据将被传递到树分支的下一个结点,依照一样的策略继续进行划分。
按照上述思路,咱们能够递归地获得一棵决策树,递归结束的条件是:遍历完全部划分数据集的特征,或每一个分支下的全部样本都具备相同的类别。
若是当咱们遍历完全部的特征后,该分支下的样本仍属于不一样的类别,一般采用多数表决的方法,即以其中最多样本所隶属的类别做为该叶结点的取值。
ID3每次会选取当前最佳的特征来分割数据,并按照该特征的全部可能取值来切分,而在按照某特征切分以后,该特征在以后的ID3算法执行过程当中再也不起做用,有观点认为该方法切分过于迅速。
CART算法采用二元切分法,每次把数据切成2份。对于离散型数据,若是数据的某特征值等于切分所要求的值,则这些数据进入左子树,不然进入右子树;对于连续型数据,则能够采用回归方法,若是某特征值大于给定值则进入左子树,不然进入右子树。
回归树将叶结点置为常数。即在每一个叶结点利用训练数据的均值作预测。
初始化最大偏差为INF。
①遍历全部特征(第一重循环)
②遍历其全部取值(第二重循环)
③按照当前的特征及其取值,将大于该值的样本归于一类,小于等于该值的样本为另外一类,计算分为两类先后总平方偏差的大小,若是切分后总平方偏差之和小于切分前总平方偏差之和,则更新记录值。
切分前总平方偏差之和计算:
切分后总平方偏差之和计算:
④全部特征遍历结束后,返回最佳切分特征和最佳阈值。
注意:若是当前数据集全部样本y取值只有一种状况,则为叶结点,返回叶结点常数取值(一般取y的平均值)。
能够人为指定最小偏差降低值tolS以及切分的最小样本数tolN。
①若是ESum2与Esum之差小于tolS,则直接创建叶结点。
②若是切分后的两个子集有任意一个其样本数小于tolN,则直接创建叶结点。
该方法是基于已经构建出来的回归树和给定的测试数据进行的。
①遍历该回归树,若是存在任一子集为一棵树,则在该子集递归剪枝过程。
②若是当前结点的两个分支均为叶结点,则考虑合并:
先计算不合并的偏差(设左右结点的值分别为Lmean、Rmean,当前测试子集在切分后左右两个子集大小分别为L_M、R_M):
计算合并后的偏差:
若是E2<E1,则将叶结点合并。
①找到最佳的遍历特征及其阈值。转②。
②若是该结点不能再分(返回特征为None),设为叶结点。不然转③
③若是可分,则继续切分,分别对左右子树调用①。
④对获得的回归树进行后剪枝。
注意:预剪枝可合并进寻找最佳特征及其阈值的过程当中。
该方法将全部的叶结点设为分段线性函数,每一个叶结点都是一个线性模型。其具备可解释性、高预测准确度。
不能再使用平方偏差之和来衡量选取切分特征时的偏差。对于给定的数据集,应当先用线性的模型对其进行拟合(好比先进行OLS线性回归),而后计算真实的目标值与模型预测值之间的差值。
同时,叶结点表示的线性模型的回归系数,而很是数。
其他步骤相似回归树。