声明:本文虽有部分自己理解成分,但是大部分摘自以下链接。
决策树(decision tree)(三)——连续值处理
决策树参数讲解+实例
数据挖掘十大算法
C4.5算法的改进:
用信息增益率来选择属性。
在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致overfitting。
对非离散数据也能处理。
能够对不完整数据进行处理。
修剪枝叶
原因:避免产生过拟合
- 前剪枝叶:在构造决策树的同时进行剪枝。在决策树构建中,如果无法进一步降低信息墒的情况下就会停止创建分支。为了避免过拟合,可以设定一个阀值,信息墒见效的数量小于这个阀值,即是还可以继续降低熵也停止继续创建分支。这种方法就是前剪枝。构造树时,即限定增加该节点时增加的熵是否会低于阈值来判断是否增加这个节点
- 后剪枝:后剪枝是指决策树构造完成后进行剪枝。剪枝的过程是对拥有同样符节点的一组节点进行检查,判断如果将其合并,信息墒的增加量是否小于某一阀值。如果小于阀值即可合并分支。成功构建树后,通过检查,假设合并后的信息增量是否小于某阈值(其纯度应该是减小的,可以理解成不太乱)
- 后剪枝的算法有很多种,其中常见的一种称为减低错误率剪枝法(Reduced-Errorpruning)。其思路是自底向上,从已经构建好的完全决策树中找出一个子树,然后用子树的根节点代替这颗子树,作为新的叶子节点。叶子节点所表示的类别通过大多数原则确定,这样就构建出一个简化版决策树。然后使用交叉验证数据集来测试简化版本的决策树,看看其错误率是不是降低了。如果错误率降低了,则可以用这个简化版的决策树来代替完全决策树,否则还采用原来的决策树。通过遍历所有的子树,直到针对交叉验证数据集无法进一步降低错误率为止。
连续值处理
**连续值处理过程口述总结:(二分法,找分界点)
- 先通过迭代方式找到会使得分割后信息增益最大的分界点
- 之后以该点为节点后续和前面一样**
调参注意事项
当样本少数量但是样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型
如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。
推荐多用决策树的可视化,同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。
在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。
决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。
如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。