决策树算法可以分成两块:1. 基于信息增益率的分类C5.0算法;2. 基于基尼系数分类的CART(Classification And Regression Tree)
一:C5.0
C5.0算法由最初的ID3到C4.5一步一步演化而来,C5.0算法是以信息增益率(即信息熵下降最快)为分组依据,同时算法还能进行多分类(即一次可以分多类)。 相比于其他模型 C5.0 模型输出的规则非常直观易理解。而且他应用于大数据集效果较好。 对缺失值不敏感,即使数据集缺失值不用处理。
R中用C50包专用C5.0 算法
C_model <- C5.0(data,label,trials = 1,costs=NULL):label 是data数据集的标签
p_label <- predict(C_model,test_data,type = 'class'or'prob'):type 默认class,prob 是该标签的概率最大值。可以用gmodels 包中的CrossTable 函数去验证准确性。
二:CART
CART(分类回归树)顾名思义,算法既可以做分类,又能做回归。CART是一种二分类的决策树(有点类似于if..then...)父节点分出两个子节点。CART是以gini增益最大来决定分类的属性。CART分为两步1.根据数据集生成决策树,越大越好,2.对树进行剪枝,以损失函数最小为标准,选择最优子树,作为CART算法的模型。对缺失值不敏感。
R中用rpart|tree 包中的rpart|tree函数
r_mod <- rpart(label ~.,data=train)
r_mod$variable.importance;#查看变量重要
r_mod$cp ;#查看每次分割复杂度参数
plotcp(r_mod) ;#画树图
prune(r_mod,...) 剪枝函数
predict(r_mod,test)#预测
具体可以看 http://www.cnblogs.com/karlpearson/p/6224148.html
tree函数(简写)
t_mod <- tree(label~. data = train)
prune.tree()#剪枝
cv.tree() 交叉验证
predict.tree() 预测
R----决策树
最新推荐文章于 2022-12-11 23:21:15 发布