首頁/ 汽車/ 正文

MySQL專案實戰——使用者行為分析

一、專案背景

UserBehavior是阿里巴巴提供的一個淘寶使用者行為資料集,用於隱式反饋推薦問題的研究。

構造推薦系統的關鍵資源是使用者歷史行為資料,具體可分為兩類:顯式反饋和隱式反饋。其中,隱式反饋是指不直接表現使用者傾向的歷史資料,如瀏覽網站、購買商品等。

二、分析思路

2。1 分析目的

透過對資料集中的使用者資料、行為資料及商品資料進行分析,找出各個環節存在的問題,為提升銷 量 提供合理的建議 。

2。2 明確問題

1。 瞭解獲客情況和留存情況

2。 基於漏斗模型分析使用者從瀏覽到購買整個過程的轉化率情況

3。 觀察使用者四種行為的變化趨勢(按天和按小時)

4。 分析瀏覽量、購買量前10的商品以及商品類目,最佳化產品銷售

5。 基於RFM模型對使用者價值進行分析

2。3 分析框架

MySQL專案實戰——使用者行為分析

三、資料說明

3。1 資料來源

阿里雲天池 : 資料集-阿里雲天池 (aliyun。com)

3。2 理解資料

資料集包含了2017年11月25日至2017年12月3日之間,有行為的約一百萬隨機使用者的所有行為(行為包括點選、購買、加購、喜歡)。資料集大小說明:使用者數量(987,994),商品數量(4,162,024),使用者數量(987,994),商品類目數量(9,439),總的淘寶使用者行為記錄數量為1億條(100,150,807)。

資料集的每一行表示一條使用者行為,由使用者ID、商品ID、商品類目ID、行為型別和時間戳組成,並以逗號分隔。關於資料集中每一列的詳細描述如下:

MySQL專案實戰——使用者行為分析

使用者行為型別共有四種,它們分別是:

MySQL專案實戰——使用者行為分析

四、資料預處理

由於資料量級達到一億,考慮到電腦效能問題,故本次選取其中的40萬+的資料進行分析。

MySQL專案實戰——使用者行為分析

4。1 選擇子集

資料集中五個欄位都具有價值,全部保留。

4。2 列名重新命名

原資料集沒有表頭,用sql語句建立表及5個欄位,把淘寶使用者行為資料匯入MySQL資料庫。

4。3 刪除重複值

不存在重複值。

MySQL專案實戰——使用者行為分析

4。4 缺失值處理

不存在缺失值。

MySQL專案實戰——使用者行為分析

4。5 一致化處理

將時間戳整理成日期和小時:

①新增欄位datetime,用函式from_unixtime 把整數型的timestamps改成日期型的timestamps

MySQL專案實戰——使用者行為分析

②新增欄位dates,times,hours

MySQL專案實戰——使用者行為分析

4。6 異常值處理

檢查日期是否在規定範圍內:2017年11月25日至2017年12月3日。

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

一共刪除異常值184條。

五、資料分析

5。1 獲客情況

按日分析pv、uv、pv/uv:

pv:頁面瀏覽量

uv:獨立訪客數

pv/uv:瀏覽深度

#pv uv pv/uvselect dates, count(*) ‘pv’, count(distinct userid) ‘uv’,round(count(*)/count(distinct userid),1) ‘pv/uv’from user_behaviorwhere behaviortype=‘pv’group by datesorder by dates;

​​​​​輸出結果(程式碼結果以及Excel圖示):

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

從上圖可以看出,pv、uv 這兩個指標的變化趨勢幾乎保持一致。在2017年11月25日至2017年12月1日之間,都是較為穩定的,而在2017年12月2日這天開始,pv和uv都不斷增加。我們依此提出以下兩個假設:

假設1

:非工作日的pv和uv會得到大幅度提升。

驗證假設1

:透過檢視日曆發現,11月25日和11月26日也是非工作日,但pv和uv並沒有得到大幅度的提升,所以假設1不成立。

假設 2

:可能是雙十二大促的影響。

驗證假設2

:12月2日和12月3日距離“雙十二”活動較近,可能是雙 12 活動的預熱階段,吸引了一部分新老使用者,故假設2成立。

5。2 留存情況

5。2。1 留存率

留存率 是指在統計週期內,每日活躍使用者數在第N日仍啟動該APP的使用者數佔比的平均值。留存率常反映使用者粘性,當N取值越大、留存率越高時,使用者粘性越高。 (這裡只統計次日留存率)

—— 留存數select a。dates, count(if(datediff(b。dates, a。dates)=0, b。userid, null)) retention_0, count(if(datediff(b。dates, a。dates)=1, b。userid, null)) retention_1from(select userid, dates from user_behaviorgroup by userid, dates) a,(select userid, dates from user_behaviorgroup by userid, dates) bwhere a。userid = b。userid and a。dates <= b。datesgroup by a。dates;—— 留存率select a。dates, count(if(datediff(b。dates, a。dates)=1, b。userid, null))/count(if(datediff(b。dates, a。dates)=0, b。userid, null)) retentionfrom(select userid, dates from user_behaviorgroup by userid, dates) a,(select userid, dates from user_behaviorgroup by userid, dates) bwhere a。userid = b。userid and a。dates <= b。datesgroup by a。dates;

當日活躍人數和次日活躍人數結果如下:

MySQL專案實戰——使用者行為分析

次日留存率結果如下:

MySQL專案實戰——使用者行為分析

5。2。2 跳失率

跳失率是指在統計週期內,僅訪問APP一次的使用者數量佔總使用者瀏覽量的比例。

select count(*) ‘跳失使用者數’ from(select userid from user_behaviorgroup by useridhaving count(behaviortype)=1) a

結果如下:

MySQL專案實戰——使用者行為分析

查詢可得在統計週期內,僅訪問APP一次的使用者數量為0,也就是說跳失率為

0

,說明淘寶有足夠的吸引力讓使用者停留。

5。3 使用者行為漏斗分析

5。3。1 獨立訪客行為漏斗

select behaviortype, count(distinct userid) ‘使用者數’from user_behavior group by behaviortypeorder by userid desc;

結果如下:

MySQL專案實戰——使用者行為分析

從獨立訪客為分析維度,可計算得到,使用者並沒有在點選以後大量流失,APP約有

69.69%

的付費使用者,

使用者付費轉化率相當高

,說明APP可以滿足大多數使用者的需求。

5。3。2 使用者總行為漏斗

select behaviortype, count(*) ‘行為數’from user_behaviorgroup by behaviortypeorder by 行為數 desc;

得出結果:

MySQL專案實戰——使用者行為分析

此時我們不能直接將

購買/收藏加購

作為

收藏加購到購買的轉化率

。 因為 這裡的購買量有些是瀏覽後直接購買的,有些是瀏覽後加購收藏再購買的,如果我們直接 購買/收藏加購 得出轉化率是不夠準確的,所以這裡我們對這段時間 使用者購買行為的行為路徑 進行分析。為此,我們需要對

使用者id和商品id

進行分組,

統計兩者之間的發生的各類行為的數量

,並儲存為檢視以便後面呼叫。

——使用者行為路徑create view user_behavior_view as select userid, itemid,count(if(behaviortype=‘pv’, behaviortype, null)) ‘pv’,count(if(behaviortype=‘fav’, behaviortype, null)) ‘fav’,count(if(behaviortype=‘cart’, behaviortype, null)) ‘cart’,count(if(behaviortype=‘buy’, behaviortype, null)) ‘buy’from user_behaviorgroup by userid, itemid;

結果如下:

MySQL專案實戰——使用者行為分析

為了更好的統計,先將使用者行為標準化,將分組統計的結果進一步處理。

——使用者行為標準化create view user_behavior_standard asselect userid, itemid, (case when pv>0 then 1 else 0 end) ‘瀏覽了’,(case when fav>0 then 1 else 0 end) ‘收藏了’,(case when cart>0 then 1 else 0 end) ‘加購了’,(case when buy>0 then 1 else 0 end) ‘購買了’from user_behavior_view;

MySQL專案實戰——使用者行為分析

——形成購買路徑型別create view user_behavior_path asselect *, concat(瀏覽了,收藏了,加購了,購買了) ‘購買路徑型別’from user_behavior_standard as awhere a。購買了>0;——統計各類購買路徑的數量create view path_count asselect 購買路徑型別, count(*) ‘數量’from user_behavior_pathgroup by 購買路徑型別order by 數量 desc;

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

—— 建表為購買路徑型別添加註釋create table zhushi(path_type char(4),descriptions varchar(40));insert into zhushi values(‘0001’,‘直接購買了’),(‘1001’,‘瀏覽後購買了’),(‘0101’,‘收藏後購買了’),(‘0011’,‘加購後購買了’),(‘1101’,‘瀏覽收藏後購買了’),(‘1011’,‘瀏覽加購後購買了’),(‘0111’,‘收藏加購後購買了’),(‘1111’,‘瀏覽收藏加購後購買了’);select * from zhushi;

MySQL專案實戰——使用者行為分析

建立檢視儲存

各路徑行為的資料

—— 建立檢視存資料create view path_result asselect * from path_count pjoin zhushi zon p。購買路徑型別 = z。path_typeorder by 數量 desc;

MySQL專案實戰——使用者行為分析

分析漏斗轉化率:

在購物環節中收藏和加入購物車都是確定購物意向的行為,沒有先後之分,所以將這兩個環節合併為購物環節中的一步。

—— 統計沒有收藏加購就購買的購買行為數量select sum(buy) from user_behavior_viewwhere buy>0 and fav=0 and cart=0;——- 得出結果 6541—— 求轉化率select 8602-6541 as ‘收藏加購後購買的行為數’;——- 得出結果2061select 10449+23065 as ‘收藏加購總數’;——- 得出結果33514select 2061/33514;——- 收藏加購後購買/收藏加購總數=收藏加購到購買的轉化率 6。15% select 33514/374309;——- 收藏加購總數/瀏覽總數=瀏覽到收藏加購的轉化率 8。95%

我們統計出沒有收藏加購就購買的購買行為數量為6541,將所有的購買行為數(所有的購買行為數前面已求出,為8602)減去6541,就可以求出

收藏加購後再購買的行為數量

2061

。根據計算我們可以得出以下結果:

MySQL專案實戰——使用者行為分析

我們只對

左半邊

進行Excel視覺化得到漏斗圖如下:

MySQL專案實戰——使用者行為分析

我們已得出,從瀏覽量到直接購買轉化率是

1.75%

,而瀏覽後有加購收藏行為的購買轉化率是

6.15%

,所以

顧客有收藏加購的行為之後,會提升轉化率

,所以我們需要從產品互動介面、營銷機制等方面讓使用者去多加購,多收藏。

從使用者的行為轉化漏斗圖來看,使用者在瀏覽商品後,進入到加入購物車或收藏商品環節的比例為

8.95%

,在加購收藏商品後進入購買商品的轉化率為

6.15%

轉化率都很低

針對現狀,這裡提出

兩個假設

假設1

。 使用者只是瀏覽商品而不購買商品;

假設2

。 平臺推薦的產品不精準,並非使用者想購買的產品,導致使用者瀏覽後沒有成功轉化。

對於

假設1

:從獨立訪客的分析維度,69。69%的使用者是有購買行為的,與瀏覽到直接購買的轉化率1。75%和瀏覽加購收藏到購買的轉化率6。15%相比高很多,因此不存在大量使用者只逛不購買的行為,所以假設1不成立。

對於

假設2

,我們在商品維度分析給出驗證。

5。4 從時間維度分析使用者行為

5。4。1 按日分析使用者的行為習慣

select dates,count(if(behaviortype=‘pv’, behaviortype, null)) ‘pv’,count(if(behaviortype=‘cart’, behaviortype, null)) ‘cart’,count(if(behaviortype=‘fav’, behaviortype, null)) ‘fav’,count(if(behaviortype=‘buy’, behaviortype, null)) ‘buy’from user_behaviorgroup by datesorder by dates;

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

從以上資料來看,從11月25日-12月1日之間,各項指標都是比較平穩,而在12月2日-3日之間急劇上升,並達到了最大值。可能是受雙十二預熱活動的影響,導致使用者數急劇上升。

5。4。2 按小時分析使用者的行為習慣

select hours,count(if(behaviortype=‘pv’, behaviortype, null)) ‘pv’,count(if(behaviortype=‘cart’, behaviortype, null)) ‘cart’,count(if(behaviortype=‘fav’, behaviortype, null)) ‘fav’,count(if(behaviortype=‘buy’, behaviortype, null)) ‘buy’from user_behaviorgroup by hoursorder by hours;

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

經過對一天中使用者行為分佈的視覺化,可以發現每日0點至4點使用者活躍度快速降低,降到一天中活躍度最低值,5點至10點使用者活躍度快速上升,10點至18點使用者活躍度較平穩,但分別在12點及17點略有下降,18點後用戶活躍度開始快速上升,並在20-22時達到一天中使用者活躍度的最高值,這也符合大部分人的作息規律。所以,可以考慮在20-22點這個時間段進行一些促銷活動和商品推薦以提高轉化率。同時,白天10-13點這個時間段的購買比率也是比較高的,瀏覽量高的在晚上21點左右,可能是大家覺得就算晚上購買商品也是第二天發貨,所以有些使用者也會選擇第二天白天進行下單購買。

5。5 從商品維度分析使用者行為

5。5。1 按熱度分類

統計瀏覽量前十和購買量前十的商品品類(熱門品類):

—— 瀏覽量前十的品類select categoryid, count(if(behaviortype=‘pv’, behaviortype, null)) ‘品類瀏覽量’from user_behaviorgroup by categoryidorder by 2 desclimit 10;—— 購買量前十的品類select categoryid, count(if(behaviortype=‘buy’, behaviortype, null)) ‘品類購買量’from user_behaviorgroup by categoryidorder by 2 desclimit 10;

結果如下:

MySQL專案實戰——使用者行為分析

從圖中發現淘寶推薦的品類中有 40% 的商品類目是人們感興趣想購買的。

統計瀏覽量前十和購買量前十的商品(熱門商品):

—— 瀏覽量前十的商品create view popular_items_pv asselect itemid, count(if(behaviortype=‘pv’, behaviortype, null)) ‘商品瀏覽量’from user_behaviorgroup by itemidorder by 2 desclimit 10;select * from popular_items_pv;—— 購買量前十的商品create view popular_items_buy asselect itemid, count(if(behaviortype=‘buy’, behaviortype, null)) ‘商品購買量’from user_behaviorgroup by itemidorder by 2 desclimit 10;

結果如下:

MySQL專案實戰——使用者行為分析

瀏覽量前十的商品的購買量均沒有前十 ,同時,排名前十的商品購買量都在

10以下

,也就是說高瀏覽量和高購買量是兩類不同的商品,所以平臺給予的流量顧客的點選是高的,但是這個產品所產生的銷售沒有,說明平臺推薦的商品有些問題,重點推薦的商品並不是使用者最想買的商品。故

驗證了前面的假設2

,即 平臺推薦的產品不精準,並非使用者想購買的產品,導致使用者瀏覽後沒有成功轉化 。 我們發現2735466、1464116、4145813這三類商品品類購買量比較高,在高需求量的基礎上我們考慮淘寶調整推送機制,增加對這幾類商品的推送,以滿足使用者需求,同時 最佳化使用者搜尋商品的推薦演算法,提升使用者轉化率。

5。5。2 商品銷量分析

—— 商品總數select count(distinct itemid)from user_behavior;———— 211168—— 有購買量的商品數select count(distinct itemid)from user_behaviorwhere behaviortype = ‘buy’;———— 7811——- 各商品的購買量select itemid, count(userid) ‘商品購買量’from user_behaviorwhere behaviortype = ‘buy’group by itemidorder by 2 desc;——- 商品購買量的對應的商品數量,即購買1次的商品有多少。。。select 商品購買量, count(*) ‘商品數’from (select itemid, count(userid) ‘商品購買量’from user_behaviorwhere behaviortype = ‘buy’group by itemid) as agroup by 商品購買量order by 商品購買量;

MySQL專案實戰——使用者行為分析

經統計,本次分析的商品共有211168種,使用者購買的商品共有7811種;

只購買一次

的商品有

7175

種,佔用戶購買商品數的

91.86%

,說明商品售賣主要依靠長尾商品的累積效應,而非爆款商品的帶動。

5。6 基於RFM模型的使用者價值分析

RFM是最近一次消費時間間隔(Recency),消費頻率(Frequency),消費金額(Monetary)這三個指標的縮寫。接下來基於RFM模型對使用者分類,由於我們的資料沒有消費金額這一指標,所以我們只考慮R和F。

MySQL專案實戰——使用者行為分析

分析思路

是 對使用者按照最近一次消費和消費次數分別給予R值和F值的分值,用使用者的平均R值和平均F值將使用者分成四大類。即① 計算最近購買時間以及購買次數;② 建表rfm_model,並將①步得到的資料插入;③ 根據購買次數、最近購買時間對使用者進行分層:新增兩列,對剛才得到的購買次數以及最近購買時間給使用者進行打分;④ 定義兩個變數儲存r和f值的平均值,用它們的平均值將使用者分成四象限;⑤ 將④求出的結果class列插入rfm_model;⑥ 統計各區的使用者數。

# RFM模型—— 1。計算購買次數,最近購買時間select userid, count(userid) ‘購買次數’, max(dates) ‘最近購買時間’from user_behaviorwhere behaviortype = ‘buy’group by useridorder by 2 desc, 3 desc;—— 2。建表儲存資料drop table if exists rfm_model;create table rfm_model(userid int,frequency int,recent char(10));insert into rfm_modelselect userid, count(userid) ‘購買次數’, max(dates) ‘最近購買時間’from user_behaviorwhere behaviortype = ‘buy’group by useridorder by 2 desc, 3 desc;

MySQL專案實戰——使用者行為分析

給R和F按價值打分:

MySQL專案實戰——使用者行為分析

使用者分類:

—— 3。根據 購買次數、最近購買時間 對使用者進行分層—— 新增一列fscorealter table rfm_model add column fscore int;update rfm_modelset fscore = casewhen frequency between 20 and 57 then 5when frequency between 15 and 19 then 4when frequency between 10 and 14 then 3when frequency between 5 and 9 then 2else 1end;—— 新增一列rscorealter table rfm_model add column rscore int;update rfm_modelset rscore = casewhen recent = ‘2017-12-03’ then 5when recent in (‘2017-12-01’,‘2017-12-02’) then 4when recent in (‘2017-11-29’,‘2017-11-30’) then 3when recent in (‘2017-11-27’,‘2017-11-28’) then 2else 1end;—— 4。定義兩個使用者變數儲存r和f值的平均值set @f_avg = null;set @r_avg = null;select avg(fscore) into @f_avg from rfm_model;select avg(rscore) into @r_avg from rfm_model;select *, (casewhen fscore > @f_avg and rscore > @r_avg then ‘價值使用者’when fscore > @f_avg and rscore < @r_avg then ‘保持使用者’when fscore < @f_avg and rscore > @r_avg then ‘發展使用者’when fscore < @f_avg and rscore < @r_avg then ‘挽留使用者’end) classfrom rfm_model;—— 5。將結果class列插入rfm_model表中alter table rfm_model add column class varchar(40);update rfm_model set class = casewhen fscore > @f_avg and rscore > @r_avg then ‘價值使用者’when fscore > @f_avg and rscore < @r_avg then ‘保持使用者’when fscore < @f_avg and rscore > @r_avg then ‘發展使用者’when fscore < @f_avg and rscore < @r_avg then ‘挽留使用者’end;—— 6。統計各區的使用者數select class, count(userid)from rfm_modelgroup by class;

結果如下:

MySQL專案實戰——使用者行為分析

MySQL專案實戰——使用者行為分析

發展使用者和挽留使用者佔比最大,分別佔43。18%和39。12%

六、結論與建議

(1)從使用者行為路徑中發現,使用者瀏覽後直接購買的轉化率較低,而加購收藏後再購買的轉化率有所上升。

建議

:需積極引導顧客加購物車或者收藏寶貝,同時收集使用者畫像,進行精準推薦;對於介面設計應考慮如何互動能夠讓顧客更願意點選。

(2)從日期維度來看,每天的各項指標(pv、cart、fav、buy)都是比較平穩的,而在12月2日和12月3日急速上升,可能是受到雙十二預熱的影響;從時間維度來看,使用者的各種行為活躍度高峰期都在晚間的21點左右,同時白天10-13點的購買比率也是比較高的。

建議

:可以考慮在20-22點這個時間段進行一些促銷活動和商品推薦,此時使用人數最多, 活動容易觸達使用者 。 平臺可以利用這個時間段投放廣告,加大力度宣傳產品,可以根據個性化推薦演算法,向用戶推送使用者喜歡的新品及暢銷品,同時推送商家折扣優惠、直播帶貨及促銷活動資訊, 進而達到促進使用者儘快購買的效果 ;

(3)從熱門品類看,發現淘寶推薦的品類中有 40% 的商品類目是人們感興趣想購買的;從熱門商品看,瀏覽量排名前十的商品均沒有在購買量前十,說明選擇引流的商品不是使用者喜歡的;從商品銷售情況分析,只購買過一次的商品數量有7175種,佔用戶購買商品總數的91。86%,說明商品售賣主要依靠長尾商品的累積效應。

建議

:我們發現2735466、1464116、4145813這三類商品品類購買量比較高,在高需求量的基礎上我們考慮淘寶調整推送機制,增加對這幾類商品的推送,以滿足使用者需求,同時 最佳化使用者搜尋商品的推薦演算法,提升使用者轉化率。 根據購買量高的商品,可重新分配流量以及多推出一些和該類目/商品相關的其他類目/商品捆綁交叉銷售,提高銷量。

(4)從使用者價值看,對使用者進行分類,發現發展使用者和挽留使用者佔比最大,分別佔43。18%和39。12%。

​​​​​​​

建議

:針對各類使用者進行對應的營銷。對於

發展使用者

,其消費頻率低,但最近消費距離現在時間較短,因此要想辦法提高他的消費頻率,例如 可以透過發放優惠券 、 上新訊息送達等,提高使用者的粘性。 ​​​​​​​對於

挽留使用者

,最近消費時間距離現在較遠、消費頻率低。這種使用者有即將流失的危險,應採取挽留措施,主動聯絡使用者,明確流失原因,瞭解使用者需求。對於

價值使用者

,消費頻率高且最近消費距離現在時間短,可以其提供VIP服務,提升使用者忠誠度。對於

保持使用者

,最近消費距離現在時間較遠,也就是R值低,但是消費頻次高。這樣的使用者,是一段時間沒來的忠實客戶,可以採取郵件推送、APP推送提醒、促銷活動時簡訊提醒等方式主動和他們保持聯絡,提高其復購率。

相關文章

頂部