决策树模型的r实现
来源:互联网 发布:linux vi 进入编辑模式 编辑:程序博客网 时间:2024/05/22 00:40
决策树r实现:使用信贷机构数据
数据准备:
#数据有17个属性,其中default属性为类别标签,yes表示违约#数据准备credit<-read.csv("credit.csv")str(credit)table(credit$checking_balance) #考察支票账户余额table(credit$savings_balance) #储蓄账户余额summary(credit$months_loan_duration) summary(credit$amount) head(credit) #观察数据前6行table(credit$default)set.seed(100) #为了确保实验可重复train_sample<-sample(1000,900) #从1-1000的整数序列中选择900个值credit_train<-credit[train_sample,] credit_test<-credit[-train_sample,] #把数据划分为训练集和测试集prop.table(table(credit_train$default)) prop.table(table(credit_test$default))
使用C5.0算法建立决策树:
#使用C5.0算法训练决策树要安装C50包 install.packages("C50") library(C50)credit_model<-C5.0(credit_train[-17],credit_train$default) #default作为分类的目标向量要从训练数据中排除credit_modelsummary(credit_model) #输出决策树和混淆矩阵
评估模型性能:
credit_pred<-predict(credit_model,credit_test) #predict函数将决策树应用于测试集#创建一个预测分类值向量library(gmodels)CrossTable(credit_test$default,credit_pred,prop.chisq = F,prop.c = F,prop.r = F, dnn=c('actual default','predicted default')) #构造列联表来比较模型在测试集上的预测结果与实际结果#dnn参数指定列联表行名和列名# | predicted default #actual default | no | yes | Row Total | #---------------|-----------|-----------|-----------|# no | 72 | 10 | 82 | # | 0.720 | 0.100 | | #---------------|-----------|-----------|-----------|# yes | 12 | 6 | 18 | # | 0.120 | 0.060 | | #---------------|-----------|-----------|-----------|# Column Total | 84 | 16 | 100 | #---------------|-----------|-----------|-----------|
提高模型性能:
由以上混淆矩阵可见,虽然总体准确率为78%,但将违约客户误分为不会违约的客户显然是严重的错误。在假阳性与假阴性错误代价不等的情况下,可以将不同的惩罚因子分配到不同的错误上,从而生成代价矩阵:
#为不同的错误分配惩罚因子:matrix_dimensions<-list(c("no","yes"),c("no","yes"))names(matrix_dimensions)<-c("predicted","autual")matrix_dimensions#因为预测值和实际值都有两个可能取值,所以要描述一个2*2矩阵#使用由两个向量组成的列表并为每个向量分别命名error_cost<-matrix(c(0,1,4,0),nrow=2,dimnames = matrix_dimensions)#该矩阵表明假阴性错误的代价是假阳性错误的4倍error_cost#代价矩阵结果为:# autual#predicted no yes# no 0 4# yes 1 0#在C5.0函数后加上costs参数并把代价矩阵传递到其中credit_cost<-C5.0(credit_train[-17],credit_train$default,costs=error_cost)credit_cost_pred<-predict(credit_cost,credit_test)CrossTable(credit_test$default,credit_cost_pred,prop.chisq = F,prop.c = F,prop.r = F, dnn=c('actual default','predicted default'))# | predicted default #actual default | no | yes | Row Total | #---------------|-----------|-----------|-----------|# no | 34 | 48 | 82 | # | 0.340 | 0.480 | | #---------------|-----------|-----------|-----------|# yes | 1 | 17 | 18 | # | 0.010 | 0.170 | | #---------------|-----------|-----------|-----------|# Column Total | 35 | 65 | 100 | #---------------|-----------|-----------|-----------|
由混淆矩阵可见,总体准确率下降,但把违约客户预测为非违约客户的错误也大为减少,这意味着代价矩阵可能要进一步调整。
阅读全文
0 0
- 决策树模型的r实现
- R语言决策树分类模型
- R语言 决策树--预测模型
- R语言实现决策树
- 决策树实现(R)
- 决策树回归R语言实现
- R语言实现决策树算法
- ID3决策树(R实现)
- 决策树与随机森林的R语言实现
- 基于决策树的模型
- 机器学习:R包与python的sklearn库中默认决策树模型的区别
- KMV模型的R语言实现
- 分类算法之决策树+R实现
- week3 决策树分析 R语言实现
- 09#R语言实现决策树分析
- r语言做决策树代码实现
- R 决策树
- R----决策树
- Apache Rewrite详细配置与使用说明
- 解决台式机(英伟达GTX1070显卡)安装Ubuntu系统显示错误导致安装失败的问题
- 如何从技术走向管理
- 看懂巴菲特推荐的指数基金定投,Python验证
- C语言实现彩色进度条---linux环境下编译
- 决策树模型的r实现
- 小鑫爱运动
- 关于英文论文写作的初步总结和资料推荐
- 排序算法---冒泡排序[Java]
- bootstrap------4------
- 第十五周 项目三 归并排序算法的改进
- 基于Halcon的印刷图像质量检测系统
- 日本:SBI与火币合作推出加密货币交易所
- FAQ(6):configuration写错 + <properties>标签没补全