R語言CART決策樹、隨機森林、chaid樹預(yù)測母嬰電商平臺用戶壽命、流失可視化
全文鏈接:http://tecdat.cn/?p=31644
原文出處:拓端數(shù)據(jù)部落公眾號
借著二胎政策的開放與家庭消費升級的東風(fēng),母嬰市場迎來了生機盎然的春天,尤其是母嬰電商行業(yè),近年來發(fā)展迅猛。用戶獲取和流失是一對相對概念,就好比一個水池,有進口,也有出口。我們不能只關(guān)心進口的進水速率,卻忽略了出水口的出水速率。挽留一個老用戶相比拉動一個新用戶,在增加營業(yè)收入、產(chǎn)品周期維護方面都是有好處的。并且獲得一個新用戶的成本是留存一個老用戶的5~6倍。
我們最近有一個很棒的機會與一位偉大的客戶合作,要求構(gòu)建一個適合他們需求的用戶流失預(yù)測算法。本課題著眼于利用決策樹算法和隨機森林模型,對用戶進行預(yù)測,判斷哪些客戶會流失。數(shù)據(jù)的處理方法以及機器學(xué)習(xí)本身算法理論的學(xué)習(xí)和代碼實現(xiàn)在各領(lǐng)域具有相同性,之后同學(xué)可以在其他感興趣的領(lǐng)域結(jié)合數(shù)據(jù)進行分析,利用此課題所學(xué)知識舉一反三。
數(shù)據(jù)
查看可用數(shù)據(jù)源
用戶名密碼登陸
channel <- odbcConnect("sa", uid="sa", pwd="12345")
品牌表
data<-sqlQuery(channel,"select * from ?DataMeet1$")
head(data)
input:品牌 品牌 奶粉階段(對應(yīng)小孩年齡) 城市等級(1,2,3線城市)
Output
用戶壽命(天) 是否流失
head(data)
轉(zhuǎn)換數(shù)據(jù),擬合決策樹模型
建立決策樹預(yù)測是否流失
CARTmodel = rpart
draw.tree(CARTmodel)
繪制決策樹
輸出決策樹cp值
printcp(CARTmodel)
根據(jù)cp值對決策樹進行剪枝
cp= CARTmodel$cptable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]
cp
prune(CARTmodel, cp= CARTmodel$cpCP"]) ?#剪枝
CARTmodel2 <- prune(CARTmo
對數(shù)據(jù)進行預(yù)測
(predict(CARTmodel2,datanew.test ))
summary(CARTmodel2)
計算混淆矩陣和準(zhǔn)確度
tab=table(tree.pred,datanew.test$是否流失)#得到訓(xùn)練集混淆矩陣(tab[1,1]+tab[2,2])/sum(tab)
mse
mean((as.numeric(tree.pred) - as.numeric(datanew.test$是否流失))^2)
輸出結(jié)果
CARTmodel2
將表寫進數(shù)據(jù)庫里sqlSave(channel,result_lossnew11,
變量重要程度
CARTmodel$varmportance
預(yù)測用戶壽命.天.
CARTmodel = rpart(用戶壽命.天. ~
繪制決策樹
決策樹是一種機器學(xué)習(xí)的方法。決策樹的生成算法有ID3, C4.5和CART等。決策樹是一種樹形結(jié)構(gòu),其中每個內(nèi)部節(jié)點表示一個屬性上的判斷,每個分支代表一個判斷結(jié)果的輸出,最后每個葉節(jié)點代表一種分類結(jié)果。
輸出決策樹cp值
根據(jù)cp值對決策樹進行剪枝
prune(CARTmodel, cp= CARTmodel$cptab
prune(CARTmodel
進行預(yù)測
predict(CARTmodel
輸出結(jié)果
#msemean((as.numeric(tree.pred) - as.numeric(datanew.test$用戶壽命.天.))^2)
## [1] 7713.91
變量重要程度
隨機森林
隨機森林是屬于集成學(xué)習(xí),其核心思想就是集成多個弱分類器以達(dá)到三個臭皮匠賽過諸葛亮的效果。
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是一種高效的統(tǒng)計分箱技術(shù),是商業(yè)上運用最成功的算法之一。通過統(tǒng)計檢驗方法,CHAID評估潛在預(yù)測變量的所有取值,合并對目標(biāo)變量而言在統(tǒng)計意義上同質(zhì)的取值成為一個分箱,保留那些有異質(zhì)性的取值為單獨的分箱,然后選擇最佳的預(yù)測,成為決策樹的第一個分支,因此每一個子節(jié)點都是同質(zhì)的,此過程繼續(xù)遞推直至完成整個決策樹。
plot(ct, mai
ctree
是否流失
plot(ct,
混淆矩陣
table(predict(ct), datanew.train$是否流失)
## ? ?## ? ? ? 0 ? 1## ? 0 ?89 ? 1## ? 1 ?18 603
預(yù)測類別概率
tr.pred = predict(ct, newdata=datanew.train, type="prob")
tr.pred
將結(jié)果表寫進數(shù)據(jù)庫里sqlSave(channel,resul
最受歡迎的見解
1.PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯模型和KMEANS聚類用戶畫像
2.R語言基于樹的方法:決策樹,隨機森林
3.python中使用scikit-learn和pandas決策樹
4.機器學(xué)習(xí):在SAS中運行隨機森林?jǐn)?shù)據(jù)分析報告
5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度
6.機器學(xué)習(xí)助推快時尚精準(zhǔn)銷售時間序列
7.用機器學(xué)習(xí)識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用
8.python機器學(xué)習(xí):推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)
9.python中用pytorch機器學(xué)習(xí)分類預(yù)測銀行客戶流失