用戶畫像準確性評測初探 ——撥開python大數(shù)據(jù)分析的神秘面紗

Part1 用戶畫像評測回顧與總結(jié)

1、為什么做用戶畫像評測?

將時鐘撥回到2018年初,大家迫切想打破以往資訊推薦無章可循的局面,而今日的推薦算法也似乎演成了神話,用戶意圖這個詞在WiFi管家團隊被一再提及,繼而AI推薦布局被推到了前臺。

用戶意圖識別的優(yōu)劣取決于對用戶實時需求的了解程度,此事古來難。AI團隊率先做的嘗試是在一些特定場景下猜測用戶意圖,進行意圖相關(guān)推薦,如住酒店用戶,地鐵上用戶等,這是算法可以做的事情,那測試在這個過程中可以做些什么呢?算法驗證相對滯后,有什么可以先行的呢?用戶意圖識別首要識別對用戶場景,如果場景錯了,后面的工作就無法關(guān)聯(lián)起來。如,住酒店,是個動態(tài)場景,嘗試進一步拆分成可衡量的靜態(tài)場景,如,什么人(性別,工作,偏好等)?什么時間(出行時間)住什么酒店(酒店位置,級別等)?這些我們是有后套標簽系統(tǒng)的,經(jīng)過了解這些標簽系統(tǒng)已經(jīng)有些嘗試應(yīng)用,但是標簽本身準確性卻無從評估,因此,用戶標簽準確性評測就在懵懂中籌備開始了。

2、用戶畫像準確性怎么做?

感謝先行者瀏覽器團隊,提供了最初的評測思路,他們的考慮很周全。而我在具體的實踐過程中,根據(jù)業(yè)務(wù)的實際情況制定了最終的評測方案(下圖),從第一輪標簽提取開始,就暴露出各種細節(jié)問題,好在都一一解決了。

簡單列下可供后來者借鑒的幾個注意項:?視頻資料學(xué)習(xí)分享 企(Q)鵝群 519970686

(1) 問卷設(shè)計的原則:每一個問卷題目與后臺標簽對應(yīng)關(guān)系提前考慮好,有的一對一有的一對多。問卷的每一個選項要與對應(yīng)標簽的取值對應(yīng)好關(guān)系,這會大大簡化后期腳本處理工作。

(2) 問卷下發(fā)回收:最初下發(fā)了label數(shù)量>9的用戶,用>8的用戶補了1k,結(jié)果實際回收率不到50%,于是追加了>8的全量用戶,總共4k多個,實際回收依然不足1k,而此間耗費了將近2周的時間。

(3) 關(guān)鍵字選?。赫麄€過程關(guān)鍵字是imei,但下發(fā)問卷時,眾測平臺關(guān)鍵字卻是qq,這就在數(shù)據(jù)處理上又需要多一層轉(zhuǎn)換處理了。

(4) 標簽系統(tǒng)提數(shù):標簽系統(tǒng)的數(shù)據(jù)是周期性更新,更新頻率高,建議問卷回收后進行二次提數(shù),盡可能減少時間差造成的數(shù)據(jù)不一致。

(5) 腳本處理:因為涉及的數(shù)據(jù)量比較大,涉及到比較多文件的處理,強烈建議裝兩個庫,jupyter notebook(交互式筆記本,可及時編寫和調(diào)試代碼,很好用),還有一個大數(shù)據(jù)處理的pandas,對于excel的操作實在便利太多。

(6) 經(jīng)緯度處理:經(jīng)緯度數(shù)據(jù)沒法下發(fā)問卷,因此問卷題目設(shè)計成問具體地址,大樓,小區(qū)等。數(shù)據(jù)轉(zhuǎn)換接入了地圖的逆地址解析接口,然后再對比具體位置信息,這里的對比也是糾結(jié)了1天時間,最終精確到2個中文字符的維度。

3、用戶畫像準確性怎么分析?

至問卷回收完畢,實際工作才完成一半,接下來就是遠超預(yù)估的復(fù)雜繁瑣的數(shù)據(jù)處理及分析過程了。我想用下面這張圖來描述整個分析過程。

整個分析包括四部分:

(1) 黃框:活躍用戶數(shù)據(jù)處理。

1.為什么要做?

活躍用戶主要下發(fā)問卷前用,這里為什么還需要做分析呢?這里的分析工作是可以省掉的,方案最后會說,先來看這里的目標是什么。因為問卷沒有收集imei數(shù)據(jù),而lable標簽是根據(jù)imei進行統(tǒng)計的,因此這里需要多做一層merge處理,以使問卷可以補足缺失的imei信息。

2.是否可優(yōu)化?是否存在風(fēng)險?

細心的讀者可能已經(jīng)發(fā)現(xiàn),這里存在一個隱患!可能導(dǎo)致樣本數(shù)量減少,因為用戶的qq和imei其實不是一一對應(yīng)的,可能存在一對一或一對多情況,如果下發(fā)imei用戶更換qq完成了問卷,這里的merge就會導(dǎo)致部分樣本數(shù)據(jù)反查不到imei數(shù)據(jù)從而丟失樣本。慶幸的是本次測試丟失樣本數(shù)不到10個,否則我可能要從頭再來了。

3.如何規(guī)避?

在用戶問卷設(shè)計中讓用戶主動反饋imei信息。前期設(shè)計沒有考慮清楚key值的設(shè)計造成了這個隱患,同時還增加了分析的工作量。

(2) 藍框:系統(tǒng)lable數(shù)據(jù)處理。

1.為什么要做?

細心的讀者會發(fā)現(xiàn),系統(tǒng)lable在最初已經(jīng)提取了,用于做單個用戶lable數(shù)量的過濾分析,這里還可以直接用原來的數(shù)據(jù)么?

答案是非常不建議!因為后臺數(shù)據(jù)會周期性更新,最初提取的數(shù)據(jù)已經(jīng)不能表征問卷用戶當前的上報數(shù)據(jù)了。所以lable數(shù)據(jù)重新提取這一步不能省。

(3) 紅框:問卷數(shù)據(jù)處理。

1.為什么要做?

問卷設(shè)計的原則是便于用戶理解選擇,與代碼數(shù)據(jù)上報實現(xiàn)差異很大,所以這里的數(shù)據(jù)解析是必須的,也是結(jié)果分析最核心的部分。

2.做了什么?

這里我花費了大量的時間寫腳本、調(diào)試,這里大量采用pandas,感謝它大大簡化了我的代碼量。為了便于大家熟悉了解pandas的用法,我這里會截取部分代碼來看。

Action1:drop冗余數(shù)據(jù)

經(jīng)驗:感謝pandas,定義droplist,通過dataframe的drop方法,兩行代碼:

Action2:按lableid重新定義列名

Action3:常規(guī)各列數(shù)據(jù)處理(舉個栗子)

(4)綠框:diff結(jié)果分析

1.做了什么?

在腳本處理上經(jīng)緯度會更復(fù)雜,但思路大同小異,便于解說,這里以常規(guī)數(shù)據(jù)舉例。

關(guān)鍵點1:利用dataframe將一行取出來存成array:

關(guān)鍵點2:定義diffresult文件列名:

關(guān)鍵點3:遍歷每一列數(shù)據(jù),過濾掉不存在lable:

關(guān)鍵點4:循環(huán)遍歷比較系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù):

在本part最后,再總結(jié)下不足,主要有如下三方面:?視頻資料學(xué)習(xí)分享 企(Q)鵝群 519970686

(1) 樣本覆蓋全面性不夠:覆蓋具有局限性,不能代表所有的用戶;

(2) 無法全自動化監(jiān)控:問卷設(shè)計及提數(shù)暫時無法自動化,也就僅限于一次摸底;

(3) 樣本數(shù)量不足:單個用戶的標簽不全,導(dǎo)致標簽整體數(shù)量偏少。

Part2 pandas使用總結(jié)

1、jupyter環(huán)境準備(web交互式筆記本,python快速編碼運行調(diào)試神器)。

(1)pip install jupyter

解決:下載ipython-5.7.0-py2-none-any.whl,notebook-5.5.0-py2.py3-none-any.whl放到python的Scripts目錄下,pip install xxx.whl。

(2)再次pipinstall jupyter

(3)使用jupyter notebook

new-選擇對應(yīng)類型可打開交互式筆記本界面。

2、Pandas擅長做什么?

(1)快速讀寫csv、excel、sql,以原表數(shù)據(jù)結(jié)構(gòu)存儲,便捷操作處理行、列數(shù)據(jù);

(2)數(shù)據(jù)文檔行列索引快速一鍵重定義;

(3)強大的函數(shù)支持大數(shù)據(jù)文件的快速統(tǒng)計分析;

(4)可以對整個數(shù)據(jù)結(jié)構(gòu)進行操作,不必一行行循環(huán)讀取……

如果您有上述需求,不妨繼續(xù)往下看。

3、pandas安裝

(1)安裝:一般用pip,安裝第三方庫前不妨先更新下pip。

python -m pip install -U pip

pip install pandas

(2)導(dǎo)入

import pandas as pd

(3) 幫助

查看python第三方庫幫助,利用python自帶pydoc文檔生成工具

Step1:配置pydoc服務(wù)

Cmd下python –m pydoc –p 1234

Step2:瀏覽器打開http://localhost:1234/

4、Pandas數(shù)據(jù)結(jié)構(gòu)

series:帶標簽的一維數(shù)組,標簽可以重定義。

dataframe:二維表格性數(shù)組,導(dǎo)入讀取的csv、excel就是這種結(jié)構(gòu),可以直接對行列做操作。

舉個例子:

讀取表格——得到類型是DataFrame的二維數(shù)組question_data:

其中的一列df[‘num’]就是一維數(shù)組series,像個豎起來的list。

5、pandas的數(shù)據(jù)處理

(1)數(shù)據(jù)檢索處理。

(a)查詢首尾;

(b)查詢某行,列;

注意:iloc、loc、ix(盡量用ix,避免搞不清楚index和行號)。

loc:主要通過index索引行數(shù)據(jù)。df.loc[1:]可獲取多行,df.loc[[1],[‘name’,’score’]]也可獲取某行某列iloc:主要通過行號索引行數(shù)據(jù)。與loc的區(qū)別,index可以定義,行號固定不變,index沒有重新定義的話,index與行號相同。

ix:結(jié)合loc和iloc的混合索引。df.ix[1],df.ix[‘1’]。

(c)按條件查詢指定行和列;

(d)多條件查詢;

(2)數(shù)據(jù)增刪改處理。

(a)增刪行;

(b)增刪列;

(c)行列數(shù)據(jù)相連:參看(3)(c)。

(3)多表數(shù)據(jù)處理;

(a)merge;

eg:合并兩張表:

stu_score1 = pd.merge(df_student, df_score, on='Name')——內(nèi)連接,交集。

stu_score1

stu_score2 =pd.merge(df_student, df_score, on='Name',how='left')——左連接,以左邊為準。

stu_score2

how參數(shù):inner(默認),left,right,outer,分別為內(nèi)、左、右、外連接,inner為交集,outer為并集。

(b)join——how原則同merge,默認how=‘left’

主用于索引拼接列,兩張表不同列索引合并成一個DataFram,比較少用。

(c)concat——axis=0,按行合并,axis=1,按列合并

stu_score2 = pd.concat([df_student,df_score], axis=0)。

stu_score2

(4)數(shù)據(jù)統(tǒng)計處理;

(a)df.describe()

根據(jù)某列計算一系列統(tǒng)計值,df[‘xxx’].describe(),返回如下數(shù)據(jù)表:

(b)df.set_index(‘列a’)與df.reset_index(‘列a’)

需要對某列數(shù)據(jù)處理時可以通過set_index()設(shè)為索引,再用df.sort_index()進行排序,然后再通過reset_index()設(shè)回數(shù)據(jù)。

(5)文件讀寫處理;?視頻資料學(xué)習(xí)分享 企(Q)鵝群 519970686

以csv為例

df = pd.read_csv("D:/pandas_test.csv", encoding='utf-8')

df.to_csv(r"D:\test.csv", index=False,sep=',', encoding='utf_8_sig')

寫文件時設(shè)置encoding='utf_8_sig'可解決中文亂碼問題。

(6)數(shù)據(jù)集批量處理。

(a)apply和applymap

df[‘’].apply(函數(shù))對某列數(shù)據(jù)應(yīng)用函數(shù),df.applymap(函數(shù))對整個表應(yīng)用函數(shù)。

(b)groupby

根據(jù)某列或某幾列分組,本身沒有任何計算,返回,用于做分組后的數(shù)據(jù)統(tǒng)計,如:

group_results = total_result.groupby(['lable', 'diff_value']).size()返回每個分組的個數(shù),常用的有max(),min(),mean()

如上是本次腳本分析涉及到的功能,此外,pandas還有作圖功能,這次暫未用到,就不展開說啦。

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

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

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