最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

拓端tecdat:Python用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGboost、隨機(jī)森林、決策樹、支

2021-12-14 22:34 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=24346?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

1.1 項(xiàng)目背景:

在今天產(chǎn)品高度同質(zhì)化的品牌營銷階段,企業(yè)與企業(yè)之間的競爭集中地體現(xiàn)在對(duì)客戶的爭奪上?!坝脩艟褪巧系邸贝偈贡姸嗟钠髽I(yè)不惜代價(jià)去爭奪盡可能多的客戶。但是企業(yè)在不惜代價(jià)發(fā)展新用戶的過程中,往往會(huì)忽視或無暇顧及已有客戶的流失情況,結(jié)果就導(dǎo)致出現(xiàn)這樣一種窘?jīng)r:一邊是新客戶在源源不斷地增加,而另一方面是辛辛苦苦找來的客戶卻在悄然無聲地流失。因此對(duì)老用戶的流失進(jìn)行數(shù)據(jù)分析從而挖掘出重要信息幫助企業(yè)決策者采取措施來減少用戶流失的事情至關(guān)重要,迫在眉睫。

1.2 目的:


深入了解用戶畫像及行為偏好,挖掘出影響用戶流失的關(guān)鍵因素,并通過算法預(yù)測(cè)客戶訪問的轉(zhuǎn)化結(jié)果,從而更好地完善產(chǎn)品設(shè)計(jì)、提升用戶體驗(yàn)。

1.3 數(shù)據(jù)說明:

此次數(shù)據(jù)是攜程用戶一周的訪問數(shù)據(jù),為保護(hù)客戶隱私,已經(jīng)將數(shù)據(jù)經(jīng)過了脫敏,和實(shí)際商品的訂單量、瀏覽量、轉(zhuǎn)化率等有一些差距,不影響問題的可解性。

2 讀取數(shù)據(jù)
?

  1. # 顯示全部特征

  2. df.head()

?3 切分?jǐn)?shù)據(jù)


  1. # 劃分訓(xùn)練集,測(cè)試集

  2. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)

3.1 理解數(shù)據(jù)

可以看到變量比較的多,先進(jìn)行分類,除去目標(biāo)變量label,此數(shù)據(jù)集的字段可以分成三個(gè)類別:訂單相關(guān)指標(biāo)、客戶行為相關(guān)指標(biāo)、酒店相關(guān)指標(biāo)。


4 特征工程
?

  1. # 用訓(xùn)練集進(jìn)行數(shù)據(jù)探索

  2. train = pd.concat([X_train,y_train],axis=1)

4.1 數(shù)據(jù)預(yù)處理


4.1.1 刪除不必要的列

  1. X_train.pop("sampleid")

  2. X_test.pop("sampleid")

  3. train.pop("sampleid")

4.1.2 數(shù)據(jù)類型轉(zhuǎn)換

字符串類型的特征需要處理成數(shù)值型才能建模,將arrival和d相減得到"提前預(yù)定的天數(shù)",作為新的特征
?

  1. # 增加列

  2. # 將兩個(gè)日期變量由字符串轉(zhuǎn)換為日期格式類型

  3. train["arrial"] = pd.to_datimetain["arrval"])

  4. X_tst["arival"] = d.to_daetime(X_est["arival"])

  5. # 生成提前預(yù)定時(shí)間列(衍生變量)

  6. X_trin["day_adanced"] = (X_rain["arival"]-Xtrain["d"]).dt.days


  7. ## 刪除列

  8. X_tran.dro(columns="d","arrivl"],inpace=True)

4.1.3 缺失值的變量生成一個(gè)指示啞變量

?

  1. zsl = tain.isnll().sum()[tain.isnll(.sum()!=0].inex


4.1.4 根據(jù)業(yè)務(wù)經(jīng)驗(yàn)填補(bǔ)空缺值?

ordernum_oneyear 用戶年訂單數(shù)為0 ,lasthtlordergap 11%用600000填充 88%用600000填充 一年內(nèi)距離上次下單時(shí)長,ordercanncelednum 用0填充 用戶一年內(nèi)取消訂單數(shù),ordercanceledprecent 用0t填充 用戶一年內(nèi)取消訂
單率 242114 242114 -為空 有2種情況 1:新用戶未下訂單的空-88.42% 214097 2.老用戶1年以上未消費(fèi)的空 增加編碼列未下訂單新用戶和 1年未下訂單的老用戶
price_sensitive -0 ,中位數(shù)填充 價(jià)格敏感指數(shù),consuming_capacity -0 中位數(shù)填充 消費(fèi)能力指數(shù) 226108 -為空情況 1.從未下過單的新用戶214097 2.12011個(gè)人為空原因暫不明確
uv_pre -24小時(shí)歷史瀏覽次數(shù)最多酒店歷史uv. cr_pre -0,中位數(shù)填充 -24小時(shí)歷史瀏覽次數(shù)最多酒店歷史cr -0,中位數(shù)填充 29397 -為空 1.用戶當(dāng)天未登錄APP 28633 2.剛上線的新酒店178 586 無uv,cr記錄 編碼添加 該APP剛上線的新酒店 764 29397
customereval_pre2 用0填充-24小時(shí)歷史瀏覽酒店客戶評(píng)分均值, landhalfhours -24小時(shí)內(nèi)登陸時(shí)長 -用0填充28633 -為空:用戶當(dāng)天未登錄APP 28633
hotelcr ,hoteluv -中位數(shù)填充 797
#剛上新酒店 60 #未登錄APP 118
avgprice 0 填充一部分價(jià)格填充為0 近一年未下過訂單的人數(shù),cr 用0填充,

  1. tkq = ["hstoryvsit_7ordernm","historyviit_visit_detaipagenum","frstorder_b","historyvi

  2. # tbkq = ["hitoryvsit_7dernum","hisryvisit_isit_detailagenum"]

  3. X_train[i].fillna(0,inplace=True)

  1. ## 一部分用0填充,一部分用中位數(shù)填充

  2. # 新用戶影響的相關(guān)屬性:ic_sniti,cosuing_cacity

  3. n_l = picesensitive","onsmng_cpacty"]

  4. fori in n_l

  5. X_trini][Xra[X_trinnew_ser==1].idex]=0

  6. X_est[i][X_test[X_test.nw_user==1].inex]=0

4.1.5 異常值處理

將customer_value_profit、ctrip_profits中的負(fù)值按0處理
將delta_price1、delta_price2、lowestprice中的負(fù)值按中位數(shù)處理
?

  1. for f in flter_two:

  2. a = X_trin[].median()

  3. X_tran[f][X_train[f]<0]=a

  4. X_test[f][X_est[]<0]=a

  5. tran[f][train[f]<0]=a

4.1.6 缺失值填充

趨于正態(tài)分布的字段,使用均值填充:businessrate_pre2、cancelrate_pre、businessrate_pre;偏態(tài)分布的字段,使用中位數(shù)填充.
?

  1. def na_ill(df):

  2. for col in df.clumns:

  3. mean = X_trai[col].mean()


  4. dfcol]=df[col].fillna(median)

  5. return

  1. ## 衍生變量年成交率

  2. X_train["onear_dalate"]=_tain["odernum_onyear"]/X_tran"visinum_onyar"]

  3. X_st["onyardealae"]=X_st["orernum_neyear"]/Xtest[visitumonyear"]

  4. X_al =pd.nca([Xtin,Xtes)

  1. #決策樹檢驗(yàn)


  2. dt = Decsionr(random_state=666)


  3. pre= dt.prdict(X_test)

  4. pre_rob = dt.preicproa(X_test)[:,1]

  5. pre_ob

4.2 數(shù)據(jù)標(biāo)準(zhǔn)化

?


  1. scaler = MinMacaer()


  2. #決策樹檢驗(yàn)

  3. dt = DeonTreasifi(random_state=666)



5 特征篩選
5.1 特征選擇-刪除30%列

  1. X_test = X_test.iloc[:,sp.get_spport()]

  2. #決策樹檢驗(yàn)

  3. dt = DecisonreeClssifie(random_state=666)

  4. dt.fit(X_trin,y_tain)

  5. dt.score(X_tst,y_est)

  6. pre = dt.pdict(X_test)

  7. pe_rob = dt.redicproba(X_test)[:,1]

  8. pr_rob


  9. uc(pr,tpr)

?5.2 共線性/數(shù)據(jù)相關(guān)性
?

  1. #共線性--嚴(yán)重共線性0.9以上,合并或刪除

  2. d = Xtrai.crr()

  3. d[d<0.9]=0 #賦值顯示高相關(guān)的變量

  4. pl.fufsiz=15,15,dpi200)

  5. ssheatp(d)

6 建模與模型評(píng)估

6.1 邏輯回歸

?

  1. y_prob = lr.preictproba(X_test)[:,1]

  2. y_pred = lr.predict(X_test

  3. fpr_lr,pr_lr,teshold_lr = metris.roc_curve(y_test,y_prob)

  4. ac_lr = metrcs.aucfpr_lr,tpr_lr)

  5. score_lr = metrics.accuracy_score(y_est,y_pred)

  6. prnt("模準(zhǔn)確率為:{0},AUC得分為{1}".fomat(score_lr,auc_lr))

  7. prit("="*30

6.2 樸素貝葉斯

?

  1. gnb = GasinNB() # 實(shí)例化一個(gè)LR模型

  2. gnb.fi(trai,ytran) # 訓(xùn)練模型

  3. y_prob = gn.pic_proba(X_test)[:,1] # 預(yù)測(cè)1類的概率

  4. y_pred = gnb.preict(X_est) # 模型對(duì)測(cè)試集的預(yù)測(cè)結(jié)果

  5. fpr_gnb,tprgnbtreshold_gb = metrics.roc_crve(ytesty_pob) # 獲取真陽率、偽陽率、閾值

  6. aucgnb = meic.aucf_gnb,tr_gnb) # AUC得分

  7. scoe_gnb = merics.acuray_score(y_tes,y_pred) # 模型準(zhǔn)確率

6.3 支持向量機(jī)

?

  1. s =SVkernel='f',C=,max_ter=10,randomstate=66).fit(Xtrain,ytrain)

  2. y_rob = sc.decsion_untio(X_st) # 決策邊界距離

  3. y_ed =vc.redit(X_test) # 模型對(duì)測(cè)試集的預(yù)測(cè)結(jié)果

  4. fpr_sv,tpr_vc,theshld_sv = mtris.rc_urv(y_esty_pob) # 獲取真陽率、偽陽率、閾值

  5. au_vc = etics.ac(fpr_sc,tpr_sv) # 模型準(zhǔn)確率

  6. scre_sv = metrics.ccuracy_sore(_tst,ypre)

?6.4 決策樹
?

  1. dtc.fit(X_tran,_raiproba(X_test)[:,1] # 預(yù)測(cè)1類的概率

  2. y_pred = dtc.predct(X_test # 模型對(duì)測(cè)試集的預(yù)測(cè)結(jié)果

  3. fpr_dtc,pr_dtc,thresod_dtc= metrcs.roc_curvey_test,yprob) # 獲取真陽率、偽陽率、閾值



6.5 隨機(jī)森林

?

  1. c = RndoForetlassiir(rand_stat=666) # 建立隨機(jī)森

  2. rfc.it(X_tain,ytrain) # 訓(xùn)練隨機(jī)森林模型

  3. y_rob = rfc.redict_poa(X_test)[:,1] # 預(yù)測(cè)1類的概率

  4. y_pedf.pedic(_test) # 模型對(duì)測(cè)試集的預(yù)測(cè)結(jié)果

  5. fpr_rfc,tp_rfc,hreshol_rfc = metrcs.roc_curve(y_test,_prob) # 獲取真陽率、偽陽率、閾值

  6. au_fc = meris.auc(pr_rfctpr_fc) # AUC得分

  7. scre_rf = metrcs.accurac_scor(y_tes,y_ped) # 模型準(zhǔn)確率

6.6 XGboost

?

  1. # 讀訓(xùn)練數(shù)據(jù)集和測(cè)試集

  2. dtainxgbatrx(X_rai,yrain)

  3. dtest=g.DMrx(Xtest

  4. # 設(shè)置xgboost建模參數(shù)

  5. paras{'booser':'gbtee','objective': 'binay:ogistic','evlmetric': 'auc'


  6. # 訓(xùn)練模型

  7. watchlst = (dtain,'trai)

  8. bs=xgb.ran(arams,dtain,n_boost_round=500eva=watchlst)

  9. # 輸入預(yù)測(cè)為正類的概率值

  10. y_prob=bst.redict(dtet)

  11. # 設(shè)置閾值為0.5,得到測(cè)試集的預(yù)測(cè)結(jié)果

  12. y_pred = (y_prob >= 0.5)*1

  13. # 獲取真陽率、偽陽率、閾值

  14. fpr_xg,tpr_xgb,heshold_xgb = metricsroc_curv(test,y_prob)

  15. aucxgb= metics.uc(fpr_gb,tpr_xgb # AUC得分

  16. score_gb = metricsaccurac_sore(y_test,y_pred) # 模型準(zhǔn)確率

  17. print('模型準(zhǔn)確率為:{0},AUC得分為:{1}'.format(score_xgb,auc_xgb))

?6.7 模型比較
?


  1. plt.xlabel('偽陽率')

  2. plt.ylabel('真陽率')

  3. plt.title('ROC曲線')

  4. plt.savefig('模型比較圖.jpg',dpi=400, bbox_inches='tight')

  5. plt.show()

6.8 重要特征

  1. ea = pd.Sries(dct(list((X_trclumsfc.eatre_imortancs_))))

  2. ea.srt_vlues(acedig=False

  3. fea_s = (fa.srt_vauesacnding=alse)).idex


?

6.9 流失原因分析

  • ?cityuvs和cityorders值較小時(shí)用戶流失顯著高于平均水平,說明攜程平臺(tái)小城市的酒店信息缺乏,用戶轉(zhuǎn)向使用小城市酒店信息較全的競品導(dǎo)致用戶流失

  • 訪問時(shí)間點(diǎn)在7點(diǎn)-19點(diǎn)用戶流失比例高與平均水平:工作日推送應(yīng)該避開這些時(shí)間點(diǎn)

  • 酒店商務(wù)屬性指數(shù)在0.3-0.9區(qū)間內(nèi)用戶流失大于平均水平,且呈現(xiàn)遞增趨勢(shì),說明平臺(tái)商務(wù)指數(shù)高的酒店和用戶期望有差距(價(jià)格太高或其他原因?), 商務(wù)屬性低的用戶流失較少

  • 一年內(nèi)距離上次下單時(shí)長越短流失越嚴(yán)重,受攜程2015年5月-2016年1月爆出的負(fù)面新聞?dòng)绊戄^大,企業(yè)應(yīng)該更加加強(qiáng)自身管理,樹立良好社會(huì)形象

  • 消費(fèi)能力指數(shù)偏低(10-40)的用戶流失較嚴(yán)重,這部分用戶占比50%應(yīng)該引起重視

  • 價(jià)格敏感指數(shù)(5-25)的人群流失高于平均水平,注重酒店品質(zhì)

  • 用戶轉(zhuǎn)化率,用戶年訂單數(shù),近1年用戶歷史訂單數(shù)越高,24小時(shí)內(nèi)否訪問訂單填寫頁的人群比例越大流失越嚴(yán)重,需要做好用戶下單后的追蹤體驗(yàn), 邀請(qǐng)?zhí)顚懭胱◇w驗(yàn),整理意見作出改進(jìn)

  • 提前預(yù)定天數(shù)越短流失越嚴(yán)重用戶一年內(nèi)取消訂單數(shù)越高流失越嚴(yán)重

6.10 建議:

  • 考慮占取三四線城市和低端酒店范圍的市場(chǎng)份額

  • 用戶易受企業(yè)負(fù)面新聞?dòng)绊?,建議企業(yè)勇于承擔(dān)社會(huì)責(zé)任,加強(qiáng)自身管理,提高公關(guān)新聞處理時(shí)效性,樹立品牌良好形像

  • 在節(jié)假日前2-3周開始熱門景點(diǎn)酒店推送

  • 做好酒店下單后的追蹤體驗(yàn),邀請(qǐng)?zhí)顚懭胱◇w驗(yàn),并整理用戶意見作出改進(jìn)

7 客戶畫像
7.1 建模用戶分類

  1. # 用戶畫像特征

  2. user_feature = ["decisiohabit_user,'starprefer','lastpvgap','sid',

  3. 'lernum",'historyvisit_visit_detaipagenum',

  4. "onyear_dealrat

  5. ]

  6. # 流失影響特征

  7. fea_lis = ["cityuvs",

  8. "cityorders",

  9. "h",

  10. "businessrate_pre2"

  11. # 數(shù)據(jù)標(biāo)準(zhǔn)化 Kmeans方法對(duì)正態(tài)分布數(shù)據(jù)處理效果更好

  12. scaler = StanardScalr()

  13. lo_atribues = pdDatarame(scr.fittransfrm(all_cte),columns=all_ce.coluns)

  14. # 建模分類

  15. Kmens=Means(n_cluste=2,rndom_state=0) #333

  16. Keans.fi(lot_attributes # 訓(xùn)練模型

  17. k_char=Kmenscluster_centers_ # 得到每個(gè)分類

  18. plt.figure(figsize=(5,10))


7.2 用戶類型占比
?

  1. types=['高價(jià)值用戶','潛力用戶']

  2. ax.pie[1], raius=0.,colors='w')

  3. plt.savefig(用戶畫像.jpg'dpi=400, box_inchs='tigh')

?7.3 高價(jià)值用戶分析 :

占比19.02,訪問頻率和預(yù)定頻率都較高,消費(fèi)水平高,客戶價(jià)值大,追求高品質(zhì),對(duì)酒店星級(jí)要求高,客戶群體多集中在老客戶中,
建議:
多推薦口碑好、性價(jià)比高的商務(wù)酒店連鎖酒店房源吸引用戶;
在非工作日的11點(diǎn)、17點(diǎn)等日間流量小高峰時(shí)段進(jìn)行消息推送。
為客戶提供更多差旅地酒店信息;
增加客戶流失成本:會(huì)員積分制,推出會(huì)員打折卡

7.4 潛力用戶分析

占比:80.98% 訪問頻率和預(yù)定頻率都較低,消費(fèi)水平較低,對(duì)酒店星級(jí)要求不高,客戶群體多集中在新客戶中,客戶價(jià)值待挖掘 建議:
因?yàn)樾掠脩艟佣?,屬于潛在客戶,建議把握用戶初期體驗(yàn)(如初期消費(fèi)有優(yōu)惠、打卡活動(dòng)等),還可以定期推送實(shí)惠的酒店給此類用戶,以培養(yǎng)用戶消費(fèi)慣性為主;
推送的內(nèi)容應(yīng)多為大減價(jià)、大酬賓、跳樓價(jià)之類的;
由于這部分用戶占比較多,可結(jié)合該群體流失情況分析流失客戶因素,進(jìn)行該群體市場(chǎng)的開拓,進(jìn)一步進(jìn)行下沉分析,開拓新的時(shí)長。

最受歡迎的見解

1.從決策樹模型看員工為什么離職

2.R語言基于樹的方法:決策樹,隨機(jī)森林

3.python中使用scikit-learn和pandas決策樹

4.機(jī)器學(xué)習(xí):在SAS中運(yùn)行隨機(jī)森林?jǐn)?shù)據(jù)分析報(bào)告

5.R語言用隨機(jī)森林和文本挖掘提高航空公司客戶滿意度

6.機(jī)器學(xué)習(xí)助推快時(shí)尚精準(zhǔn)銷售時(shí)間序列

7.用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用

8.python機(jī)器學(xué)習(xí):推薦系統(tǒng)實(shí)現(xiàn)(以矩陣分解來協(xié)同過濾)

9.python中用pytorch機(jī)器學(xué)習(xí)分類預(yù)測(cè)銀行客戶流失


拓端tecdat:Python用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGboost、隨機(jī)森林、決策樹、支的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
三穗县| 青铜峡市| 舒城县| 通山县| 石景山区| 错那县| 大竹县| 永城市| 平南县| 虹口区| 平罗县| 永顺县| 西畴县| 长沙市| 柳江县| 梁河县| 吴江市| 夏河县| 新干县| 青海省| 屏东县| 聊城市| 灵璧县| 古蔺县| 固安县| 兴山县| 盐城市| 黑水县| 冀州市| 鄄城县| 故城县| 右玉县| 莒南县| 兴和县| 双峰县| 新巴尔虎右旗| 罗山县| 清苑县| 乾安县| 南康市| 新乡市|