ID3算法优缺点:
① 不能对连续数据进行处理,只能通过连续数据离散化进行处理;
② 采用信息增益容易偏向取值较多的特征,准确率不如信息增益率;
③ 缺失值不好处理。
④ 没有采用剪枝,决策树的结构可能过于复杂,容易出现过拟合。
C4.5算法优缺点:
① 产生的规则容易理解,准确率高,实现简单;
② 对数据进行多次顺序扫描和排序,效率低;
③ 只适合小规模数据集,需要将数据放到内存中。
那如何进行剪枝呢?
剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。
在决策树学习中,为了尽可能正确分类训练样本,节点划分过程将不断重复,有时会造成决策树分支过多,这时有可能因训练样本学得“太好”了,以至于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。
剪枝策略分为预剪枝(prepruning)和后剪枝(post-pruning)。
预剪枝:在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点。
后剪枝:先从训练集中生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换成叶节点能带来决策树泛化能力的提升,则将该子树替换成叶节点。
那如何判断决策树泛化能力的提升?
可使用留出法、交叉验证法等方法进行评估。
留出法(hold-out):将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。即D=S∪T, S∩T=
,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
交叉验证法(cross validation):将数据集D划分为k个大小相似的互斥子集,即,
然后每次用k-1个子集的并集做测试集,余下的那个子集作为测试集,这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
下一章讲解处理连续与缺失值。