一提到「人物畫像」,比較常見的解釋是對人物或者事物進行特徵化,可是您真的明白了嗎?機器學習
它能在實踐中起到什麼做用?工具
它的構建思路是什麼?學習
最終的結果是怎麼出來的?設計
在構建畫像的時候,咱們應該注意什麼?對象
今天咱們就來填補這90%的空白,用OpenFEA做爲分析、畫像構建工具來答疑解惑。blog
1、人物畫像概念及意義排序
爲了讓你們直白地理解「人物畫像」,我舉個例子來講明一下。若是您對歷史感興趣,熟悉三國演義中的人物,那麼當您看到「素衣綸巾,手搖羽扇 」形象時,立刻就能想到諸葛亮,這就是諸葛亮這一人物的標籤之一,若是再加上「草船借箭,舌戰羣儒」這樣更爲具體的標籤,而後再將全部標籤整合在一次,就造成了諸葛亮的「人物畫像」。所以,也能夠說人物畫像就是判斷一我的是什麼樣的人(興趣愛好、行爲習慣、標誌性事件等)。事件
人物畫像能對用戶進行精肯定位、統計分析,從而爲精準營銷等商業行爲提供較大的幫助。好比,在產品還未定型的初創期,人物畫像能進行業務經營分析以及競爭分析,幫助制定發展戰略;在產品運營的成長期,能使產品的服務對象更加聚焦,更好地知足用戶的需求,提高公司的經營效益;在產品成熟期,能幫助尋找新的增加點和突破口。ip
理解了人物畫像是個什麼東東後,咱們接下經過教育行業的學生數據,來介紹人物畫像的思路、實踐過程及注意事項。內存
2、數據準備
先介紹一下本次數據構成:
一、充值記錄數據:學生卡全部的充值記錄(包括充值、補卡、補貼等信息);
二、消費記錄數據:學生全部的消費地點、消費方式、消費金額等信息的記錄;
三、學生成績數據:經過得到學分的總和除學分總數得到排名;
四、宿舍入住數據:學生宿舍的進出數據;
五、圖書館借書數據:學生的借書記錄;
六、圖書館進出數據:學生到圖書館的記錄,有一部分沒有分進出;
七、助學金數據:學生的助學金數據;
最終目標,爲每一個學生(大約爲2萬多個學生)都能展現7個維度,本文只講思路,不講代碼。
3、畫像構建思路
人物畫像的總體設計思路是把全部的維度集中在一張DF表中,一條記錄就是一個學生的畫像或者說一個學生的標籤。步驟以下:
1. 載入studentIP_test.csv/subsidy_train.csv文件,去重,只保留學生ID列數據,即肯定了哪些學生將被計算(生產人物畫像),生產df表A;
2. 充值維度計算生成B表,總共充值多少、平均每次充值多少、最大充值金額,總共充值了多少次;
3. 消費維度計算生成C表,消費了多少次、方式消費有幾種、消費平均金額、消費的最大值是多少、消費地方前5名、消費內容前5名(中間用「|」隔開);
4. 圖書館進出數據維度計算生成D表,進出多少次、在圖書館有多少天、學平生均在圖書館天數有多少,暫時不考慮在圖書館的總計時間;
5. 圖書館借書維度計算生成E表,借了多少本數、借書最多的種類有哪些(種類是指文學、數學等科目);
6. 宿舍維度計算生成F表,進多少次、出多少次、進與出差值是多少,在宿舍有多少天,晚歸天數有多少,最後一天入住的時間是多少。
7. 助學金維度計算生成G表,直接加入助學金維度;
8. 所有經過id,使用左鏈接,進行合併生產X表;
4、畫像實踐
(一)消費維度的計算方法
本次計算的難點在消費與充值維度上,總共有1.5G的數據。由於一開始單純使用foreach爲每一個學生輪詢計算,計算效率低下,後來從新使用cluster+foreach的辦法,至少節省大約一半的時間。具體辦法以下:
1. 定義10個引擎(define c1 as ip地址:端口號)。
2. 把2萬多個學號,排序後分紅10組,建立df表z,z的表結構是分組序號,開始序號,結束序號。
3. 建立一個新的腳本x.fea,讓cluster調用x.fea。
4. 在x.fea腳本中,把傳遞進來的型號,直接建立foreach的運行母表y。
5. 再次新建立y.fea腳本,本腳本就是用於處理每一個學生的就餐地點排名、消費種類排名等數據。
Cluster和foreach基本上用以上步驟來結合使用。
存在一些以下問題:
1. 10個引擎都要導入這1.5G的數據,導入內存大約須要7G。由於每一個引擎的數據都是隔離的,而引擎之間沒有公共的取數據區概念,致使重複導入9次。使用cluster並行計算後一下就使用掉63G的內存。
2. 使用foreach,循環體需儘可能簡短,才能增長效率。
(二)其餘時間相關維度計算方法
在宿舍、圖書館數據中,要計算在宿舍或者在圖書館天數的維度,須要如下兩步操做:
1. 須要分割時間,保留天,例如2015/05/09 12:15:03,須要把12:15:03去除,保留2015/05/09 。
2. 須要多數據作兩次group by 操做,第一次是學生號和時間,第二次是學生號。
(三)人物畫像交互面板的設計
交互面板設計實踐,主要是使用兩個技巧性的東西,來避免存2萬各ssdb key,說明以下:
1. 本次是使用隨時計算來實時獲取學生ID號的畫像,都保存爲一個KEY,本KEY值不帶任何參數。也就是說你算完學號1,再算學號2時,學號2的信息會覆蓋學號1的信息,那就避免了存2萬ssdb key的尷尬。
2. 各維度合併後的df表X,每一個記錄就是一個畫像,因此就必須有腳原本處理、拆分,使之符合人物畫像的數據格式要求。因此交互面板調用的腳本,就是拆分記錄的腳本。
5、畫像結果輸出
(一)各維度合併後的df表X
X表保存了,每一個學生對應的各類維度。
(二)對學生ID分解後符合人物畫像結構
主表的表結構,以及對應的記錄。
從表的表格以及記錄。
(三)門戶展現畫像
6、總結
一、本文總體都是寫分析思路,沒有附帶代碼,若是有須要能夠發郵件至fea@hzhz.co索取。
二、本文思路不必定是最好的,仍是要你們多作實踐,實踐出真知。
三、各類維度的提取是預測或者說是機器學習的基礎。