无意间看到data flow上的一个常用的数据集,于是就下了下来,这是一个关于银行客户违约的数据集,这正好让我有了对C5.0实践的一个想法。
这个数据集中的字段:账户余额,工作年限,贷款/收入比,居住年限,年龄,其他信用记录,房产,现有贷款账户,工作类型,受抚养人,电话,违约情况
下面说一下大体做法
‘’ set.seed(1024)#建立种子点
‘’ credit_sample <- credit[order(runif(1000)), ]#抽取1000条作为样本
‘’ train <- credit_sample[1:900, ]#按照1:9的比例设立训练集
‘’ test <- credit_sample[901:1000, ]#建立测试集
‘’ library(C50)
‘’ credit_model <- C5.0(train[-17], train$default)#建立C50模型
‘’ credit_pred <- predict(credit_model, test)#运用测试集来预测结果
具体结果是酱紫:
‘’ Total Observations in Table: 100
‘’
‘’
‘’ | predicted default
‘’ acutal default | no | yes | Row Total |
‘’ —————|———–|———–|———–|
‘’ no | 57 | 11 | 68 |
‘’ | 0.570 | 0.110 | |
‘’ —————|———–|———–|———–|
‘’ yes | 16 | 16 | 32 |
‘’ | 0.160 | 0.160 | |
‘’ —————|———–|———–|———–|
‘’ Column Total | 73 | 27 | 100 |
‘’ —————|———–|———–|———–|
可以看到应用到测试集,该模型正确率73%,只识别了实际违约贷款32人中的50%,显然不够理想。
在后期,对于决策树是可以用剪枝来进行修缮的,对于提高准确率,可以运用bagging、boosting和随机森林,特别的可以运用悲观剪枝法来提高模型的准确率,这是一种后剪枝的方法。