全文链接:http://tecdat.cn/?p=31644
原文出处:拓端数据部落公众号
借着二胎政策的凋谢与家庭生产降级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来倒退迅猛。用户获取和散失是一对绝对概念,就好比一个水池,有进口,也有进口。咱们不能只关怀进口的进水速率,却疏忽了出水口的出水速率。挽留一个老用户相比拉动一个新用户,在减少营业支出、产品周期保护方面都是有益处的。并且取得一个新用户的老本是留存一个老用户的 5~6 倍。
咱们最近有一个很棒的机会与一位平凡的客户单干,要求构建一个适宜他们需要的 用户散失预测算法。本课题着眼于利用决策树算法和随机森林模型,对用户进行预测,判断哪些客户会散失。数据的解决办法以及机器学习自身算法实践的学习和代码实现在各畛域具备雷同性,之后同学能够在其余感兴趣的畛域联合数据进行剖析,利用此课题所学常识触类旁通。
数据
查看可用数据源
用户名明码登陆
channel <- odbcConnect("sa", uid="sa", pwd="12345")
品牌表
data<-sqlQuery(channel,"select * from DataMeet1$")
head(data)
input: 品牌 品牌 奶粉阶段(对应小孩年龄)城市等级(1,2,3 线城市)
Output
用户寿命(天)是否散失
head(data)
转换数据,拟合决策树模型
建设决策树预测是否散失
CARTmodel = rpart
draw.tree(CARTmodel)
绘制决策树
输入决策树 cp 值
printcp(CARTmodel)
依据 cp 值对决策树进行剪枝
cp= CARTmodel$cptable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]
cp
prune(CARTmodel, cp= CARTmodel$cpCP"]) #剪枝
CARTmodel2 <- prune(CARTmo
对数据进行预测
(predict(CARTmodel2,datanew.test))
summary(CARTmodel2)
计算混同矩阵和准确度
tab=table(tree.pred,datanew.test$ 是否散失)# 失去训练集混同矩阵
(tab[1,1]+tab[2,2])/sum(tab)
mse
mean((as.numeric(tree.pred) - as.numeric(datanew.test$ 是否散失))^2)
输入后果
CARTmodel2
将表写进数据库里
sqlSave(channel,result_lossnew11,
变量重要水平
CARTmodel$varmportance
预测用户寿命. 天.
CARTmodel = rpart(用户寿命. 天. ~
绘制决策树
决策树是一种机器学习的办法。决策树的生成算法有 ID3, C4.5 和 CART 等。决策树是一种树形构造,其中每个外部节点示意一个属性上的判断,每个分支代表一个判断后果的输入,最初每个叶节点代表一种分类后果。
输入决策树 cp 值
依据 cp 值对决策树进行剪枝
prune(CARTmodel, cp= CARTmodel$cptab
prune(CARTmodel
进行预测
predict(CARTmodel
输入后果
#mse
mean((as.numeric(tree.pred) - as.numeric(datanew.test$ 用户寿命. 天.))^2)
## [1] 7713.91
变量重要水平
随机森林
随机森林是属于集成学习,其核心思想就是集成多个弱分类器以达到三个臭皮匠赛过诸葛亮的成果。
rf <- randomForest(datanew.train$ 用户寿命. 天. ~
MSE 误差
mean(predict(rf)- datanew.train$ 用户寿命. 天. )^2
## [1] 0.007107568
变量重要水平
plot(d,center=TRUE,leaflab='none',
混同矩阵
table(predict(rf), datanew.train$ 是否散失 )
##
## 0 1
## 0 84 15
## 1 23 589
# 变量重要水平
importance(rf)
chaid 树
CHAID 是一种高效的统计分箱技术,是商业上使用最胜利的算法之一。通过统计测验办法,CHAID 评估潜在预测变量的所有取值,合并对指标变量而言在统计意义上同质的取值成为一个分箱,保留那些有异质性的取值为独自的分箱,而后抉择最佳的预测,成为决策树的第一个分支,因而每一个子节点都是同质的,此过程持续递推直至实现整个决策树。
plot(ct, mai
ctree
是否散失
plot(ct,
混同矩阵
table(predict(ct), datanew.train$ 是否散失)
##
## 0 1
## 0 89 1
## 1 18 603
预测类别概率
tr.pred = predict(ct, newdata=datanew.train, type="prob")
tr.pred
将后果表写进数据库里
sqlSave(channel,resul
最受欢迎的见解
1.PYTHON 用户散失数据挖掘:建设逻辑回归、XGBOOST、随机森林、决策树、反对向量机、奢侈贝叶斯模型和 KMEANS 聚类用户画像
2. R 语言基于树的办法:决策树,随机森林
3.python 中应用 scikit-learn 和 pandas 决策树
4.机器学习:在 SAS 中运行随机森林数据分析报告
5. R 语言用随机森林和文本开掘进步航空公司客户满意度
6.机器学习助推快时尚精准销售工夫序列
7.用机器学习辨认一直变动的股市情况——隐马尔可夫模型的利用
8.python 机器学习:举荐零碎实现(以矩阵合成来协同过滤)
9.python 中用 pytorch 机器学习分类预测银行客户散失