本篇需要使用的数据集为credit.csv,下载好并保存于R目录。
1.理解决策树算法
简而言之,决策树是一个分类器(classifier)。 它利用树状结构,来对于特征以及潜在的结果之间的关系建立模型。如下图(来源网络):

在决定是见于不见的时候,决策树给出了一些节点(node)来作为判断依据,至于这些节点是如何被找到的,内在的算法是什么,这个很难在这里讲清楚(而且严格地讲,我们每个人都可以不依赖R中已有的function而自己去编写决策树函数(并不会很难,如果你的逻辑简单的话)),但是决策树算法合适停下来却很容易理解:
a. 没有剩余的特征来分辨案例之间的区别
b.决策树已经达到预先定义的大小限制
2.此次的目的
credit.csv file里包含着的是1000个关于贷款的案例,我们的目的是希望建立模型来预测影响违约风险的因素。 数据里面的变量很多,最关键的是最后一个default变量,Yes便是违约了,No便是没有违约。
正如很多在R中的函数一样,决策树函数在R中也不仅仅是一个表达式,这里介绍一个较为常见的包和function,C5.0算法。
这个算法的内在逻辑可以自行上网查阅(切记,没有任何一种算法是绝对好的,我们并不需要找出什么时候哪个算法更好,也没必要,只需要这个算法拟合度高便行)
install.packages( 'C50' )
library( C50 ) #安装c50包
读取我们已经下载好的csv文件:
credit <- read.csv("credit.csv")
往往我们需要设置stringAsFactors= F 来使字符型数据不被设为因子(factor),我们可以先设置,然后再更具自己的需要一个个调整,但是这里我并没有设置,因为我需要将他们设置为factor。
3.准备工作-data clean
如果你多次尝试过自己完完整整的处理一个项目(数据由别人提供),你会发现,data cleaning将会占用你整个项目8成以上的时间,你需要不断地去清洗数据以达到你需要的最终结果,甚至很多时候结果不好仅仅是因为数据的清洗不到位。
dim(credit)
head(credit)
tail(credit)
str(credit)
summary(credit)
which(!complete.cases(credit))
有一些步骤我们经常都要做,比如了解数据整体结构,看一看有没有缺失值,即使C5.0 的decision tree算法可以帮助我们处理缺失值,但是你仍然得去看看有没有缺失值,这有助于你了解数据的整体性。
> table(credit$default)
no yes
700 300
整体而言,违约的人数是30%,所以在之后我们随机分类training data 和testing data的时候, 这个大概的比例我们也应该记在心中,如果比例差距很大,建议再做一次随机分类。
进行数据分类:
set.seed(123) #这一步是为了使你的结果和我的一样
train_sample <- sample(1000, 900)
str(train_sample)
# split the data frames
credit_train <- credit[train_sample, ] #训练组
credit_test <- credit[-train_sample, ] #测试组
prop.table(table(credit_train$default))

本文介绍了使用R语言的C5.0算法构建决策树模型预测贷款违约风险的过程,探讨了数据清洗、模型建立、评估及优化。在优化过程中,通过调整trials参数降低错误率,并通过设置错误成本矩阵着重降低误判违约的情况。
最低0.47元/天 解锁文章
2172

被折叠的 条评论
为什么被折叠?



