Sparkify 預(yù)測(cè)客戶流失

項(xiàng)目簡(jiǎn)介:

這是一個(gè)音樂(lè)服務(wù)數(shù)據(jù)集,項(xiàng)目里有個(gè)小型的數(shù)據(jù)集。該數(shù)據(jù)集記錄藝術(shù)家,歌曲,時(shí)長(zhǎng),包括一些人口統(tǒng)計(jì)和地理數(shù)據(jù),時(shí)間戳,性別,用戶等級(jí),用戶操作記錄信息(即具體操作如主頁(yè)、升級(jí)、降級(jí)、播放歌曲、添加歌單,添加好友等);這些數(shù)據(jù)很重要,可以數(shù)據(jù)中發(fā)現(xiàn)用戶的喜好;本次項(xiàng)目的目的是預(yù)測(cè)用戶的流失;本次項(xiàng)目通過(guò)一系列的數(shù)據(jù)分析,觀察留存用戶和流失用戶的行為,尋找他們的共同特征,然后通過(guò)機(jī)器學(xué)習(xí)預(yù)測(cè)客戶的流失;

運(yùn)行環(huán)境

Python3.7

PySpark 2.4.5

Jupyter notebook

依賴庫(kù)

pandas

numpy

pyspark

matplotlib

seaborn

參考文獻(xiàn)

F1 score

ROC 和 AUC

CrossValidator

分析流程

一:加載和清洗數(shù)據(jù)

首先我們要加載數(shù)據(jù),觀察數(shù)據(jù)集,目測(cè)評(píng)估數(shù)據(jù);

查看數(shù)據(jù)集結(jié)構(gòu):

我們通過(guò)查詢,發(fā)現(xiàn)userId數(shù)據(jù)有缺失值,需要對(duì)數(shù)據(jù)進(jìn)行清理;得到一份比較整潔對(duì)數(shù)據(jù);

二:探索性數(shù)據(jù)分析

1.定義用戶流失

完成數(shù)據(jù)清理后,我們?cè)賮?lái)對(duì)項(xiàng)目目的進(jìn)行針對(duì)性的分析;首先我們要明確什么是客戶流失,因?yàn)槲覀冺?xiàng)目的目的是要預(yù)測(cè)客戶的流失情況,我們這里表結(jié)構(gòu)里面的page特征(用戶操作事件字段)下面有個(gè)Cancellation Confirmation(取消事件)類型,我們可以通過(guò)這個(gè)來(lái)區(qū)分用戶是流失用戶還是留存用戶;下面我們通過(guò)代碼來(lái)創(chuàng)建一列?Churn,0為留存用戶,1為流失用戶;

2.分析跟用戶流失相關(guān)的重要特征

通過(guò)上面分析我們知道用戶流失churn是在page字段里面提取出來(lái),那page字段里面其他類型是否也跟用戶流失churn有很大關(guān)聯(lián),我們通過(guò)可視化分析圖表展示;

下面我們來(lái)看churn狀態(tài)和非churn狀態(tài)的用戶操作page事件次數(shù)多少;

可以看出不管在那個(gè)狀態(tài)下,用戶都是操作nextsong較多,所以聽歌newsong這個(gè)特征也比較重要;由于nextsong的數(shù)量太多,其他page事件無(wú)法看清楚,下面我們查詢不是newsong的其他page事件的數(shù)據(jù);

現(xiàn)在看起來(lái)比較好,下面我們來(lái)整合排序一下,查看churn狀態(tài)和非churn狀態(tài)的用戶操作page事件次數(shù)比例如何:

countrate的值越小,證明churn/nochurn的反差越大,about這個(gè)感覺(jué)沒(méi)什么用, 我認(rèn)為可以考慮error,Submit Downgrade,Thumbs Up,Add Friend, Add to Playlist,NextSong,Downgrade等字段次數(shù)特征;

下面我們來(lái)分析其他字段特征,從上面我們知道用戶nextsong比較多,就是說(shuō),在音樂(lè)平臺(tái)上,用戶都是聽歌的比較多,所以我們可以統(tǒng)計(jì)一下churn狀態(tài)和非churn狀態(tài)的用戶聽歌的時(shí)長(zhǎng),用戶聽歌的時(shí)長(zhǎng)也是一個(gè)重要特征;

首先我們要新建幾列,查看用戶在hour,weekday,month等時(shí)間段聽歌的差異;

從時(shí)間段來(lái)看用戶在白天聽歌比較小,在晚上聽歌較多,還有用戶在周二到周五聽歌多點(diǎn),聽歌時(shí)長(zhǎng)也可以作為一個(gè)特征分析;

下面我們來(lái)分析一下其他字段的,從表結(jié)構(gòu)來(lái)看,gender(性別),level(等級(jí))跟用戶流失也有關(guān)聯(lián),下面通過(guò)圖表來(lái)分析一下;

從圖表可以看出性別為男的流失較多,還有等級(jí)為free流失較多;可以作為關(guān)聯(lián)特征;

3. 從上面分析來(lái),我認(rèn)為比較重要的特征有以下幾個(gè):

- gender:性別

- level:等級(jí)

- song_time:聽歌時(shí)長(zhǎng)

- error_count:error數(shù)量

- Submit Downgrade_count:Submit Downgrade數(shù)量

- ThumbsUp_count:Thumbs Up數(shù)量

- AddFriend_count:Add Friend數(shù)量

- AddPlaylist_count:Add to Playlist數(shù)量

- Song_count:NextSong數(shù)量

- Downgrade_count:Downgrade數(shù)量

三:建模

對(duì)于數(shù)據(jù)建模方面,我通過(guò)以下幾個(gè)模型進(jìn)行訓(xùn)練

-Logistic Regression

-Gradient Boosted Trees

-Support Vector Machine

-Random Forest

訓(xùn)練模式使用了CrossValidator進(jìn)行了模型參數(shù)調(diào)優(yōu);模型參數(shù)如下:

調(diào)參后,我整合了四個(gè)模型的訓(xùn)練方法,下面我定義了一個(gè)getAccuracyAndF1Scores函數(shù),返回獲取準(zhǔn)確率Accuracy跟F1Scores,我們把模型名稱,調(diào)參CrossValidator的參數(shù)傳進(jìn)去,運(yùn)行該函數(shù)就可以得到相應(yīng)模型的準(zhǔn)確率Accuracy跟F1Scores;函數(shù)方法如下:

這里我們使用F-1評(píng)分作為指標(biāo);具體代碼可以在文章下面git鏈接查看,通過(guò)訓(xùn)練我們得出4個(gè)模型的訓(xùn)練分?jǐn)?shù);

從結(jié)果來(lái)看四個(gè)模型的訓(xùn)練結(jié)果都差別不大;LogisticRegression跟SupportVectorMachine(SVM)的分?jǐn)?shù)較高,在訓(xùn)練過(guò)程中SupportVectorMachine(SVM)的用時(shí)較少,個(gè)人認(rèn)為在四個(gè)模型中SupportVectorMachine(SVM)最好,

數(shù)據(jù)建模方面,可能對(duì)建模這方面還不是很熟練,特別調(diào)參方面,可能導(dǎo)致預(yù)測(cè)不是很準(zhǔn)確;后面需要加強(qiáng)建模及調(diào)參數(shù)的的訓(xùn)練, 這次項(xiàng)目模型運(yùn)行的時(shí)間較長(zhǎng)這里沒(méi)辦法實(shí)踐太多次;

我的git鏈接

最后,謝謝大家查閱,如果大家有什么好的建議及有哪些可以改進(jìn)的地方,可以留下評(píng)論;謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目簡(jiǎn)介 此項(xiàng)目為優(yōu)達(dá)學(xué)城數(shù)據(jù)分析(高級(jí))畢業(yè)項(xiàng)目, 該項(xiàng)目需要使用Spark預(yù)測(cè)Sparkify應(yīng)用程序的客戶流...
    MartinZhou閱讀 900評(píng)論 0 1
  • 一、項(xiàng)目描述 APP或者商家在發(fā)展新用戶時(shí)通常是通過(guò)構(gòu)建產(chǎn)品的病毒性傳播系數(shù), 使產(chǎn)品更具吸引性。以通信行業(yè)為例,...
    未抵達(dá)catty閱讀 14,745評(píng)論 0 11
  • 概述 Sparkify是一家數(shù)字音樂(lè)服務(wù)的公司,大量用戶每天使用該服務(wù)聽自己喜歡的歌曲,他們可能是帶廣告的免費(fèi)用戶...
    ooopiece閱讀 700評(píng)論 0 0
  • 項(xiàng)目概述&目的:這是一個(gè)虛擬的音樂(lè)服務(wù)數(shù)據(jù)集,擁有過(guò)千萬(wàn)用戶,用戶可以隨時(shí)升級(jí)、降級(jí)、取消他們的套餐。用戶的動(dòng)態(tài)、...
    ChanZeeBm閱讀 1,841評(píng)論 0 1
  • 附中十六景序 西北師大附中2018屆13班 陳聞?dòng)?丁酉之夏,三伏將盡;孟秋即始,靈臺(tái)轉(zhuǎn)清。山環(huán)水傍,附中得天厚地...
    五城學(xué)堂閱讀 810評(píng)論 0 1

友情鏈接更多精彩內(nèi)容