常用的决策树剪枝策略有预剪枝和后剪枝。
预剪枝是在决策树生成过程中,在每个节点处进行判断,如果当前节点的划分已经不能带来决策树泛化性能的提升,则停止划分并将其转化为叶节点。常用的预剪枝方法有限制最小样本数、限制最大深度、限制信息增益或Gini指数的阈值等。
后剪枝是在决策树生成过程结束后,对决策树按照一定的规则进行剪枝。常用的后剪枝方法有基于代价复杂度的剪枝(Cost-Complexity Pruning)和错误率降低剪枝(Reduced-Error Pruning)。
选择哪种剪枝方法需要根据具体情况而定,可以考虑采用交叉验证等方法比较不同的剪枝方式在测试集上的泛化性能。以下是一段基于预剪枝和sklearn库实现的决策树分类器代码示例:
from sklearn.tree import DecisionTreeClassifier
# 实例化决策树分类器
dtc = DecisionTreeClassifier(criterion='entropy', min_samples_split=50, max_depth=5)
# 训练决策树分类器
dtc.fit(train_X, train_y)
# 预测测试数据
pred_y = dtc.predict(test_X)
# 计算分类器的准确率
accuracy = dtc.score(test_X, test_y)