R语言中基于C5.0的算法分析数据
来源:互联网 发布:合伙开淘宝店 编辑:程序博客网 时间:2024/04/27 14:48
上一篇博客说了R语言中利用朴素贝叶斯算法来预测垃圾短信,这次咱接着再聊一个算法,C5.0。我个人感觉C5.0要好用一点的。主要是C5.0对数据的属性没有硬性要求,不像贝叶斯中,数据的属性非no及yes,这在众多的工作场景中是无法得到保证的。就比如分析关于银行贷款的个人信用问题。其中就有不少属性可以去很多值的(就像存款,是一个多段值)。
代码如下:
credit<-read.csv("credit.csv",stringsAsFactors = FALSE)str(credit)prop.table(table(credit$default))credit$default<-factor(credit$default)set.seed(666)credit<-credit[order(runif(1000)),]credit_train<-credit[1:900,]credit_test<-credit[901:1000,]install.packages("C50")library(C50)credit_model<-C5.0(x = credit_train[-17],y = credit_train$default)credit_modelcredit_pred<-predict(object = credit_model,newdata = credit_test)library(gmodels)CrossTable(credit_test$default,credit_pred,dnn = c("Actual","Predict"))
分析:
1.为什么要
credit<-credit[order(runif(1000)),]我们可以使用prop.table(table(credit$default))知道(default:yes表示拖欠还款,no表示正常还款),yes和no的分布不是1:1的,这就在数据分为训练数据和测试数据时不能有效的均匀分布结果了,可能的极端情况是训练数据的default全是yes,然而测试数据的default全是No。因此,我们要在一开始就要将整个数据重新排序依次。
2.其他的就没啥说的了,使用C5.0的优点就是方便、简介,没有多余的数据处理
3.结果如下:
************************************************************************************
以为这样结束了?NO!!!
分析一下结果,我们会惊异的发现,正确率如此之低,只有(62+16)/100=78%. 这在实际应用中是不可能被使用的。但是我们考虑一下应用场景,使用让银行更具用户的各项数据来分析给用户贷款之后是否会还款,这样的话,我们是否可以“调整错误的权重”?就是在actual为yes是,预测为no的情况尽可能少的发生,同时允许让actual为no是,预测为yes多一些?
当时是可行的(至少对于银行而言). 所以我们可以定义一个权重矩阵
error_cost <- matrix(c(0, 1, 4, 0), nrow = 2)然后
credit_model<-C5.0(x = credit_train[-17],y = credit_train$default,costs=error_cost)即可。
结果如下:
所以,我们需要再次优化,更具C5.0的特性:
C5.0()函数可以很轻松地将boosting算法添加到C5.0决策树中。我们只需要添加一个额外的参数trials,表示在模型增强团队中使用的独立决策树的数量
所以 在创建credit_model的时候指定trials的属性就可以实现了。比如
credit_model<-C5.0(x = credit_train[-17],y = credit_train$default,costs = error_cost,trials = 6)
然后结果如下:
附上处理数据:
数据来源:http://archive.ics.uci.edu/ml
链接: https://pan.baidu.com/s/1bpo6Ucv 密码: mhb3
- R语言中基于C5.0的算法分析数据
- 关于R语言基于贝叶斯算法的数据分析
- 客户流失预测--基于R语言C5.0
- 基于R语言的风机运行数据分析
- 使用R语言基于新浪股票数据分析金融数据的“统计常识”
- C5.0算法学习
- C5.0决策树算法
- C5.0算法学习
- C5.0算法学习
- R语言与数据分析 --R语言的基本原理
- 【机器学习算法】基于R语言的多元线性回归分析
- R语言︱情感分析—基于监督算法R语言实现(二)
- 列联表分析基于R语言
- R语言与数据分析之三:分类算法1
- R语言与数据分析之三:分类算法2
- R中常用的数据分析函数
- R语言 基本数据分析
- R语言数据分析基础
- Spring AOP
- KMP算法next数组与nextval数组建立
- C++封装EventSelect
- ManualResetEvent用法 多线程 启动 暂停 通知 通信
- linux命令详解(ps命令)
- R语言中基于C5.0的算法分析数据
- 2.2 Linux文件系统
- 图像识别与处理之Opencv——Mat类
- 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
- 消息队列对比
- LeetCode#46 Permutations (week6)
- 动圈耳机原理
- GitHub API 学习笔记 Search API
- “Paper + Code”加量豪华套餐 | PaperDaily #04