文/趙強(qiáng) 彭瑋
用戶行為,簡(jiǎn)單來說就是用戶在網(wǎng)站或App上進(jìn)行操作而產(chǎn)生的一系列行為。
在獲取網(wǎng)站或者App等平臺(tái)用戶訪問基本數(shù)據(jù)后,對(duì)相關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,從中發(fā)現(xiàn)用戶的行為習(xí)慣和潛在需求,有針對(duì)地解決業(yè)務(wù)相關(guān)問題、提高用戶體驗(yàn),并為決策提供依據(jù)的過程我們稱之為用戶行為分析。
那么,為什么要進(jìn)行用戶行為分析?截至2018年12月底,我國(guó)網(wǎng)站數(shù)量為523萬個(gè),App在架數(shù)量為449萬款,每個(gè)領(lǐng)域都擁有成百上千的網(wǎng)站和移動(dòng)App產(chǎn)品,競(jìng)爭(zhēng)異常激烈。在這種環(huán)境下,如果企業(yè)能做好精細(xì)化的用戶行為分析、找準(zhǔn)問題所在,并有效提出改進(jìn)方向,既能避免資源浪費(fèi),又有助于優(yōu)化產(chǎn)品質(zhì)量,提升公司競(jìng)爭(zhēng)力。
用戶行為分析通常應(yīng)用于以下場(chǎng)景:
(1)運(yùn)營(yíng)分析,用戶來源渠道統(tǒng)計(jì),有助于判斷哪個(gè)渠道有利于拉攏新用戶。
(2)產(chǎn)品改版分析,通過AB測(cè)試或其他方法來分析不同App版本下的用戶行為,以此來判斷哪個(gè)版本會(huì)受用戶喜愛,最終上線哪個(gè)版本。
(3)預(yù)測(cè)分析,合理構(gòu)建算法模型,通過訓(xùn)練模型、驗(yàn)證模型,最終使用模型對(duì)用戶關(guān)鍵行為進(jìn)行預(yù)測(cè),提前洞察可能出現(xiàn)流失的環(huán)節(jié),提早干預(yù),從而降低流失率。
(4)采用基于用戶的協(xié)同過濾算法進(jìn)行產(chǎn)品或內(nèi)容推薦,即為A用戶推薦相似用戶B用戶感興趣的產(chǎn)品或者內(nèi)容。用戶畫像構(gòu)建是前提,用戶行為越多,推薦越精準(zhǔn),用戶的使用率和使用時(shí)長(zhǎng)也會(huì)優(yōu)化。
據(jù)2018年2月底發(fā)布的《第43次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,網(wǎng)絡(luò)新聞?wù)紦?jù)中國(guó)網(wǎng)民各類手機(jī)應(yīng)用的前三位,截至2018年12月底,手機(jī)網(wǎng)絡(luò)新聞?dòng)脩暨_(dá)到6.53億,占手機(jī)網(wǎng)民的79.9%。由此可見,通過移動(dòng)設(shè)備獲取新聞資訊已經(jīng)成為非常重要的渠道。
新聞媒體,從紙媒到門戶再到移動(dòng)端。傳統(tǒng)媒體多是以文字和圖片呈現(xiàn),而新媒體不僅可以通過文字、圖片,還可以通過圖集、視頻等多元化方式展現(xiàn)新聞內(nèi)容,對(duì)用戶的沖擊力更大、更直觀。在新聞內(nèi)容傳播的同時(shí),用戶還可以進(jìn)行評(píng)論、點(diǎn)贊、轉(zhuǎn)發(fā),增加了互動(dòng)社交性也擴(kuò)大了傳播性。新媒體的時(shí)效性、傳播迅速也是傳統(tǒng)媒體遠(yuǎn)遠(yuǎn)比不上的。當(dāng)用戶不僅僅是看新聞而是使用一個(gè)新聞資訊產(chǎn)品時(shí),我們要在考慮滿足用戶對(duì)新聞內(nèi)容需求的同時(shí)也要考慮到用戶的體驗(yàn)。為了更好地了解我們新聞App產(chǎn)品的使用情況和不足,本文將就新聞?lì)怉pp的用戶行為分析技術(shù)做些分析和總結(jié)。
圖1 手機(jī)網(wǎng)民各類手機(jī)互聯(lián)網(wǎng)應(yīng)用使用率圖
用戶行為數(shù)據(jù)的采集方式直接決定了數(shù)據(jù)源的質(zhì)量,是用戶行為數(shù)據(jù)分析的基礎(chǔ)。數(shù)據(jù)的采集通常采用“埋點(diǎn)”方式。埋點(diǎn)又可分為客戶端埋點(diǎn)(前端埋點(diǎn))和服務(wù)器埋點(diǎn)(后端埋點(diǎn))。
客戶端埋點(diǎn)還可分為代碼埋點(diǎn)和可視化埋點(diǎn)。
3.1.1 代碼埋點(diǎn)
前端的代碼埋點(diǎn),顧名思義是在產(chǎn)品開發(fā)階段,依據(jù)PM要求的數(shù)據(jù)需求文檔,前端開發(fā)人員在每個(gè)需要采集的數(shù)據(jù)點(diǎn)寫入代碼。在用戶每次前端操作時(shí)能夠觸發(fā)埋點(diǎn)上傳數(shù)據(jù)。
3.1.2 可視化埋點(diǎn)
開發(fā)加入“無埋點(diǎn)”的采集代碼,能夠?qū)W(wǎng)頁或者App上所有的可交互事件元素進(jìn)行解析并監(jiān)測(cè),當(dāng)有用戶操作行為(交互事件)發(fā)生時(shí),即對(duì)此事件進(jìn)行采集、上報(bào)。無埋點(diǎn)并不是不用寫入任何代碼,而是通過代碼將所有事件元素解析后,以可視化的方式呈現(xiàn),讓PM、運(yùn)營(yíng)經(jīng)理等可以根據(jù)需要自行手動(dòng)選取、標(biāo)定。為了與開發(fā)逐一進(jìn)行代碼寫入的方式進(jìn)行區(qū)分,被稱作可視化埋點(diǎn)??梢暬顸c(diǎn)通常通過第三方工具實(shí)現(xiàn)。
服務(wù)器端埋點(diǎn)也成為后端埋點(diǎn),指的是開發(fā)在服務(wù)器端寫入代碼,采集了前后端的交互事件數(shù)據(jù)以及存儲(chǔ)與業(yè)務(wù)服務(wù)器中的業(yè)務(wù)數(shù)據(jù)。
三種方式對(duì)比如下表1所示:
表1 三種埋點(diǎn)方式對(duì)比表
行為數(shù)據(jù)分析,通常要靠指標(biāo)分析結(jié)果,選取合適的指標(biāo),才能有效判斷用戶的使用情況和App的問題所在。下面介紹幾種常用的指標(biāo)。
4.1.1 新增用戶
新增用戶指的是App被下載安裝后第一次啟動(dòng)App的用戶,用于衡量推廣的效果。通常按照時(shí)間和渠道來源分類。
4.1.2 活躍用戶
活躍用戶指的是在一定統(tǒng)計(jì)周期內(nèi)打開App的用戶數(shù),一般用來衡量App的運(yùn)營(yíng)現(xiàn)狀。
4.1.3 用戶留存率
用戶留存率是指在某一個(gè)統(tǒng)計(jì)時(shí)段的新增用戶數(shù)中經(jīng)過了一段時(shí)間后仍打開這個(gè)App的用戶比例,包括次日留存、7日留存(如今天新增用戶數(shù)在第7日再次打開App的比例,14日和30日留存以此類推)、14日留存、30日留存。這個(gè)指標(biāo)是驗(yàn)證你的App對(duì)用戶是否具有吸引力。
4.1.4 啟動(dòng)次數(shù)
統(tǒng)計(jì)某一時(shí)段用戶打開App的次數(shù)。
4.1.5 使用時(shí)長(zhǎng)
使用時(shí)長(zhǎng)是指在統(tǒng)計(jì)周期內(nèi)所有用戶從打開App到關(guān)閉App的總時(shí)長(zhǎng)。這個(gè)指標(biāo)考核的是你的App用戶粘性高不高,也反映了App的產(chǎn)品質(zhì)量高低,使用時(shí)長(zhǎng)一般會(huì)結(jié)合啟動(dòng)次數(shù)一起分析。
4.1.6 用戶畫像分析
有了用戶數(shù)據(jù),再做用戶畫像分析會(huì)更加容易。用戶畫像是對(duì)人口屬性的特征分析、用興趣分析、用戶行為分析等。用戶畫像可以幫助App逐漸實(shí)現(xiàn)精準(zhǔn)化營(yíng)銷,直接進(jìn)行App與指定用戶之間的點(diǎn)對(duì)點(diǎn)交互。
用戶行為數(shù)據(jù)分析工具通常有以下幾種:
4.2.1 腳本統(tǒng)計(jì)
Python、R語言是常用的數(shù)據(jù)分析語言,優(yōu)點(diǎn)是成本不會(huì)太高,缺點(diǎn)是開發(fā)周期長(zhǎng)、學(xué)習(xí)成本高,而且運(yùn)行效率可能不高。
4.2.2 第三方統(tǒng)計(jì)
Talking Data、Growing IO、Google Analytics等工具,都可以用于數(shù)據(jù)分析,優(yōu)點(diǎn)是方便快捷,缺點(diǎn)是成本會(huì)比較高。
4.2.3 日志分析工具
日志分析工具,如splunk、ELK,可以分析各種數(shù)據(jù),而且有統(tǒng)計(jì)功能,優(yōu)點(diǎn)是可以更靈活地運(yùn)用于自身的業(yè)務(wù)。
本文實(shí)現(xiàn)了新聞App的用戶行為分析,通過前端埋點(diǎn)方式采集客戶端用戶行為數(shù)據(jù),將數(shù)據(jù)傳入后端,后端將行為數(shù)據(jù)放入隊(duì)列,splunk通過應(yīng)用接收隊(duì)列數(shù)據(jù)后定時(shí)進(jìn)行分析,并將統(tǒng)計(jì)結(jié)果放回隊(duì)列中,程序取出隊(duì)列數(shù)據(jù)放入MongoDB數(shù)據(jù)庫,最終頁面展示在業(yè)務(wù)系統(tǒng)中,供業(yè)務(wù)人員使用。流程如下圖2所示:
圖2 App用戶行為分析流程
獲取用戶行為數(shù)據(jù)采用前端埋點(diǎn)的方式,根據(jù)分析需求,規(guī)劃埋點(diǎn)位置,定義埋點(diǎn)字段,可獲取真實(shí)的用戶行為數(shù)據(jù),埋點(diǎn)上傳字段如下表2所示:
表2 前端埋點(diǎn)字段
表3為埋點(diǎn)采集動(dòng)作類型(字段:operateId)。
表3 埋點(diǎn)采集動(dòng)作類型
表4為操作信息類型(字段:contentType)。
表4 操作信息類型
由于用戶行為數(shù)據(jù)并發(fā)量大且頻率高,因此,我們需要采取合適的方式保證數(shù)據(jù)的可靠傳輸并且減少對(duì)后端的壓力。這里我們采用消息隊(duì)列方式進(jìn)行數(shù)據(jù)傳輸,消息隊(duì)列指的是在消息傳輸過程中保存消息的容器,埋點(diǎn)獲取的用戶行為信息,通過App后端傳入隊(duì)列rabbitmq中,采用消息隊(duì)列臨時(shí)存儲(chǔ)數(shù)據(jù),有以下好處:
5.2.1 異步處理,減少請(qǐng)求響應(yīng)時(shí)間
一次用戶行為, App前端獲取埋點(diǎn)數(shù)據(jù)后會(huì)向后端進(jìn)行請(qǐng)求,后端接收數(shù)據(jù)后將其存入預(yù)先規(guī)定好的存儲(chǔ)設(shè)備中。然而,這樣App后端就會(huì)承受較大壓力,一是前端頻繁的請(qǐng)求,二是存儲(chǔ)數(shù)據(jù)請(qǐng)求響應(yīng)的過程。使用隊(duì)列方式,可以減少請(qǐng)求響應(yīng)時(shí)間,將數(shù)據(jù)直接放入隊(duì)列中,然后讓消費(fèi)者再去存儲(chǔ)數(shù)據(jù),異步處理,減輕了后端壓力。
5.2.2 應(yīng)用解耦,不影響App的正常運(yùn)行
當(dāng)App后端要去存儲(chǔ)用戶行為數(shù)據(jù)時(shí),如果存儲(chǔ)設(shè)備出現(xiàn)無法訪問等問題,那么App的正常運(yùn)行可能就會(huì)受到影響。這時(shí)如果中間加入隊(duì)列方式,App后端將數(shù)據(jù)傳入隊(duì)列,就不會(huì)影響到App,數(shù)據(jù)只會(huì)堆積到隊(duì)列中,但也能確保用戶行為數(shù)據(jù)的完整性。
綜上,我們采用了隊(duì)列方式存放及管理埋點(diǎn)數(shù)據(jù),以降低前端數(shù)據(jù)采集與后端數(shù)據(jù)處理系統(tǒng)之間的耦合性,提升系統(tǒng)運(yùn)行效率。
隊(duì)列中的用戶行為數(shù)據(jù)需要由消費(fèi)者取走,通??梢杂贸绦蚍绞?,消費(fèi)隊(duì)列數(shù)據(jù)將其放入數(shù)據(jù)庫中,再用腳本對(duì)數(shù)據(jù)進(jìn)行分析。然而,我們會(huì)面臨如下問題:首先原始的用戶行為數(shù)據(jù)數(shù)據(jù)量非常龐大,普通數(shù)據(jù)庫不適宜存儲(chǔ)大數(shù)據(jù),二是如果用腳本操作數(shù)據(jù)庫,數(shù)據(jù)庫會(huì)承受較大壓力,分析數(shù)據(jù)的速度也會(huì)受到影響。這里我們選擇采用splunk來接收存儲(chǔ)數(shù)據(jù)。
Splunk是一個(gè)典型的大數(shù)據(jù)處理工具,面向機(jī)器數(shù)據(jù)的全文搜索引擎,是一個(gè)一體化的平臺(tái):數(shù)據(jù)采集-存儲(chǔ)-分析-可視化。Splunk的應(yīng)用AMQP Messaging經(jīng)過配置可直接接收隊(duì)列數(shù)據(jù),存于splunk中,splunk的專用搜索語言SPL(searchprocessinglanguage)語法簡(jiǎn)單,類似sql,可以直接進(jìn)行分析,效率高速度快。與splunk類似的工具還有ELK,ELK是ElasticSearch,Logstash,Kibana的縮寫,分別提供搜索,數(shù)據(jù)接入和可視化功能,ElasticSearch是一個(gè)基于Lucene的開源搜索服務(wù)。使用splunk有如下優(yōu)勢(shì):
(1)數(shù)據(jù)導(dǎo)入簡(jiǎn)單,splunk提供各種應(yīng)用可以直接接收不同數(shù)據(jù),適配性強(qiáng),而ELK需要filebeats或者logstash接收,接收后再傳入ES,配置過程較為繁瑣。如圖3所示,splunk可以通過應(yīng)用接收MySQL數(shù)據(jù)、Citrixnetscaler數(shù)據(jù)等等,經(jīng)過配置即可導(dǎo)入。其中amqp_ta即為接收隊(duì)列數(shù)據(jù)的應(yīng)用,部分配置如圖4所示。圖5為導(dǎo)入的用戶行為數(shù)據(jù)。
圖3 splunk安裝應(yīng)用圖
圖4 splunk配置隊(duì)列數(shù)據(jù)導(dǎo)入
圖5 用戶行為數(shù)據(jù)事件
導(dǎo)入elasticsearch的數(shù)據(jù)要通過logstash處理為符合要求的數(shù)據(jù)格式,通過配置logstash/config/logstash.conf文件中input、filter、output模塊,如下圖6配置input模塊和圖7配置output模塊,最終導(dǎo)入elasticsearch,圖8即為kibana查看導(dǎo)入es的json格式數(shù)據(jù)。
圖6 logstash配置input模塊
圖7 logstash配置output模塊
圖8 導(dǎo)入elasticsearch后kibana可視化圖
(2)字段識(shí)別容易,splunk支持自動(dòng)抽取字段,搜索時(shí)也會(huì)動(dòng)態(tài)抽取新的字段,而這是elastic不支持的。
(3)數(shù)據(jù)分析和處理上,ElasticSearch使用Search API來實(shí)現(xiàn),而splunk提供較強(qiáng)大的SPL,語法簡(jiǎn)潔,非常易用,以查看某天的新聞閱讀量排行為例,splunk的SPL語句如下:
host=mq2
| search appSouce=chinanews operateId=3 contentType=3
| stats count as pv by contentId | sort -pv
Python調(diào)用ES的腳本如下圖9所示,比SPL略復(fù)雜,如果需要更復(fù)雜的計(jì)算,更會(huì)凸顯SPL的優(yōu)勢(shì)。
圖9 Python調(diào)用ES
圖10 splunk分析結(jié)果圖
通過圖10splunk結(jié)果和圖11python調(diào)用ES結(jié)果前十名對(duì)比,可以看出,分析結(jié)果稍有偏差,從kibana查看訪問量最高的contentId8788405如圖12所示,可以看出結(jié)果應(yīng)該和splunk統(tǒng)計(jì)的相同均為607才對(duì),但是聚合運(yùn)算過后,結(jié)果就不準(zhǔn)確了。查看ES官方文檔可以了解到api提供的聚合運(yùn)算確實(shí)存在一定誤差。因此語法簡(jiǎn)單易懂,計(jì)算準(zhǔn)確的splunk就更有優(yōu)勢(shì)了。
圖11 Python調(diào)用ES分析結(jié)果圖
圖12 kibana查看contentId8788405訪問量
(4)可視化方面,ELK用的是kibana,splunk直接在平臺(tái)上集成了非常方便的數(shù)據(jù)可視化和儀表盤功能,通過簡(jiǎn)單配置就可以進(jìn)行可視化分析。
Splunk的告警功能能夠滿足對(duì)數(shù)據(jù)進(jìn)行定時(shí)統(tǒng)計(jì)分析的需求。如下圖13所示,每天0點(diǎn)執(zhí)行SPL語句,語句實(shí)現(xiàn)了統(tǒng)計(jì)昨日訪問量前100名的正文稿件,結(jié)果數(shù)量大于0時(shí),觸發(fā)執(zhí)行Python腳本mq.py,Python腳本實(shí)現(xiàn)將統(tǒng)計(jì)結(jié)果處理后放到隊(duì)列。
圖13 splunk定時(shí)統(tǒng)計(jì)分析
Java程序取上一步隊(duì)列里的結(jié)果,放入mongodb數(shù)據(jù)庫中。業(yè)務(wù)統(tǒng)計(jì)系統(tǒng)將結(jié)果展示在頁面中,某天的正文訪問量排行部分內(nèi)容統(tǒng)計(jì)如下圖14所示。
圖14 業(yè)務(wù)統(tǒng)計(jì)系統(tǒng)部分統(tǒng)計(jì)結(jié)果
綜上,splunk為用戶提供了一個(gè)存儲(chǔ)和處理數(shù)據(jù)的平臺(tái),以最簡(jiǎn)單的方式將數(shù)據(jù)接入平臺(tái),最快的速度計(jì)算數(shù)據(jù),讓業(yè)務(wù)人員根據(jù)自身需求,利用平臺(tái)上的數(shù)據(jù)解決自己實(shí)際業(yè)務(wù)中的問題。這樣的方式可以在更多的行業(yè)和領(lǐng)域進(jìn)行復(fù)制。將splunk應(yīng)用于新聞App用戶行為分析的實(shí)現(xiàn),幫助我們很好地貼合實(shí)際業(yè)務(wù)進(jìn)行分析,更深層次認(rèn)識(shí)產(chǎn)品現(xiàn)狀,對(duì)App的運(yùn)營(yíng)開發(fā)、改善優(yōu)化具有指導(dǎo)意義。