全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
56791 80
2016-12-06
模型用途:建立模型,对客户进行分类。

数据有42个自变量,其中有多分类变量、二分类变量和连续性变量,因变量为二分类变量。
所有的二分类变量都转换为0和1,多分类变量用随机的数字来代表,例如

星座
处女座        2
水瓶座        3
天蝎座        5
金牛座        7
巨蟹座        8
白羊座        10
狮子座        13
双鱼座        11
摩羯座        4
天秤座        0
双子座        16
射手座        17

样本为5112个客户,有788个为坏客户,4324个为好客户。现在想通过随机森林对新进来的客户进行分类,训练集为70%的数据,测试集为30%的数据。模型对训练集预测的正确率为100%,对测试集预测的正确率几乎为0,,找不到解决办法。
R语言代码如下:
因变量~id,其余为自变量。
radata <- read.csv("E://jue//1sst.csv",header=T)
ind <- sample(2, nrow(radata), replace=TRUE, prob=c(0.7, 0.3))
traindata <- radata[ind==1,]
testdata<- radata[ind==2,]
traindata$id <- as.factor(traindata$id)
traindata$a <- as.factor(traindata$a)
traindata$b <- as.factor(traindata$b)
traindata$c <- as.factor(traindata$c)
traindata$d <- as.factor(traindata$d)
traindata$g <- as.factor(traindata$g)
traindata$h <- as.factor(traindata$h)
traindata$i <- as.factor(traindata$i)
traindata$n <- as.factor(traindata$n)
traindata$r <- as.factor(traindata$r)
traindata$s <- as.factor(traindata$s)
raindata$ae <- as.factor(traindata$ae)
traindata$ag <- as.factor(traindata$ag)
traindata$ai <- as.factor(traindata$ai)
traindata$aj <- as.factor(traindata$aj)
traindata$am <- as.factor(traindata$am)
traindata$an <- as.factor(traindata$an)

testdata$a <- as.factor(testdata$a)
testdata$b <- as.factor(testdata$b)
testdata$c <- as.factor(testdata$c)
testdata$d <- as.factor(testdata$d)
testdata$g <- as.factor(testdata$g)
testdata$h <- as.factor(testdata$h)
testdata$i <- as.factor(testdata$i)
testdata$n <- as.factor(testdata$n)
testdata$r <- as.factor(testdata$r)
testdata$s <- as.factor(testdata$s)
testdata$ae <- as.factor(testdata$ae)
testdata$ag <- as.factor(testdata$ag)
testdata$ai <- as.factor(testdata$ai)
testdata$aj <- as.factor(testdata$aj)
testdata$am <- as.factor(testdata$am)
testdata$an <- as.factor(testdata$an)

library(randomForest)
randommodel<-randomForest(id~a+b+c+d+e+f+g+h+i+j+k+l+m+n+r+s+v+w+x+y+z+aa+ab+ac+ad+ae+af+ag+ah+ai+aj+ak+al+am+an+ao+ap+aq+ar+as+at+au,data=traindata,ntree=300,mtry=12)

prediction<-predict(randommodel,newdata=testdata,type="class")

frep<-table(prediction,testdata$id)
frep


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-12-6 16:29:00
可以试试Logistic Regression以及SVM
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-6 16:33:16
foozhencheng 发表于 2016-12-6 16:29
可以试试Logistic Regression以及SVM
逻辑回归试过了,没有决策树好,svm还没有考虑,想等这个实在搞不出来再用svm,毕竟还不会,哈哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-6 21:36:58
yaoqsm321 发表于 2016-12-6 16:33
逻辑回归试过了,没有决策树好,svm还没有考虑,想等这个实在搞不出来再用svm,毕竟还不会,哈哈
randomForest 、SVM、等等机器学习算法,有个很关键,但常被忽视的问题:数据必须满足“独立同分布”条件,否则必过似。。。如何解决??只能依赖于对数据特性、数据发生及其相关专业学科知识。。例如,股市中所有公司的财报数据,不仅公司间不独立不同公布,同一公司不同年份间也难满足。。是一大难题!!!
   针对,你的问题。。。不太清楚,可能客户分布异形,也可能其它,不了解你的数据,也不了解你的专业知识,难说啥。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-7 01:33:34
好歹把frep 的结果让我们看一下啊。
程序没问题,你的让大家看结果。

另外,要防止过拟合, 用cv啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-7 01:40:09
yaoqsm321 发表于 2016-12-6 16:33
逻辑回归试过了,没有决策树好,svm还没有考虑,想等这个实在搞不出来再用svm,毕竟还不会,哈哈
svm 没有意义。 用着很简单,调参数全凭感觉。没经验,就gridsearch吧。
SVM未必效果好。要用的话, 做one-hot编码。

随机森林应该是最不矫情的模型。
建议是 做5 folds 或者10folds的CV吧。
这是防止过拟合的利器。 mtry 用默认值吧。为什么用12 ?

逻辑回归?哪种?最原始的那种? 直接上 弹性网。 然后根据lamda,选特征变量吧。再用弹性网预测。一般效果会不错的。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群