about云開發

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

打印 上一主題 下一主題

[介紹解說] 用戶畫像拼圖——ID-Mapping介紹

[復制鏈接]
跳轉到指定樓層
樓主
阿飛 發表于 2019-7-3 17:09:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
問題導讀

1.什么是IDMapping?
2.ID-Mapping算法本文介紹了哪些概念?
3.本文ID-Mapping算法的思路是什么?

1.IDMapping
ID-Mapping是大數據分析中非常基本但又關鍵的環節,ID-Mapping通俗的說就是把幾份不同來源的數據,通過各種技術手段識別為同一個對象或主題,例如同一臺設備(直接),同一個用戶(間接),同一家企業(間接)等等,可以形象地理解為用戶畫像的“拼圖”過程。一個用戶的行為信息、屬性數據是分散在很多不同的數據來源的,因此從單個數據來看,都相當于“盲人摸象”,看到的只是這個用戶一個片面的畫像,而ID-Mapping能把碎片化的數據全部串聯起來,消除數據孤島,提供一個用戶的完整信息視圖,同時讓某一個領域的數據在另一個領域綻放出巨大的價值。ID-Mapping有非常多的用處,比如跨屏跟蹤和跨設備跟蹤,將一個用戶的手機、PC、平板等設備的上的行為信息串聯到一起。

2.ID-Mapping算法
講解ID-Mapping算法之前,先說幾個重要概念:
  • MAC(Media Access Control),MAC位址,為網卡的標識,唯一標識網絡設備。
  • IMEI(International Mobile Equipment Identity),通常說的手機序列號、手機“串號”,在移動電話網絡中識別每一部獨立的手機等行動通訊裝置;序列號共有15位數字,前6位(TAC)是型號核準號碼,代表手機類型。接著2位(FAC)是最后裝配號,代表產地。后6位(SNR)是串號,代表生產順序號。最后1位(SP)一般為0,是檢驗碼,備用。
  • IMSI(International Mobile SubscriberIdentification Number),儲存在SIM卡中,區別移動用戶的有效信息;其總長度不超過15位,同樣使用0~9的數字。其中MCC是移動用戶所屬國家代號,占3位數字,中國的MCC規定為460;MNC是移動網號碼,最多由兩位數字組成,用于識別移動用戶所歸屬的移動通信網;MSIN是移動用戶識別碼,用以識別某一移動通信網中的移動用戶。
  • Android ID是系統隨機生成的設備ID 為一串64位的編碼(十六進制的字符串),通過它可以知道設備的壽命(在設備恢復出廠設置或刷機后,該值可能會改變)。
  • UDID (Unique Device Identifier),蘋果IOS設備的唯一識別碼,它由40個字符的字母和數字組成,為了保護用戶隱私蘋果已經禁止讀取這個標識了。
  • UUID(Universally Unique IDentifier),是基于iOS設備上面某個單個的應用程序,只要用戶沒有完全刪除應用程序,則這個 UUID 在用戶使用該應用程序的時候一直保持不變。如果用戶刪除了這個應用程序,然后再重新安裝,那么這個 UUID 已經發生了改變。缺點是用戶刪除了你開發的程序后,基本上無法獲取關聯之前的數據。
  • OpenUDID,不是蘋果官方的,是一個替代 UDID 的第三發解決方案, 缺點是如果你完全刪除全部帶有OpenUDID SDK 包的App(比如恢復系統等),那么OpenUDID 會重新生成,而且和之前的值會不同。
  • IDFA (廣告標示符),蘋果禁用UDID后想出了折中辦法,就是提供另外一套和硬件無關的標識符,用于給商家監測廣告效果,這就是IDFA。用戶可以在手機設置里改變這串字符,會導致商家沒有辦法長期跟蹤用戶行為。
  • telphone(手機號)。 手機號也可以唯一的標識用戶。因為兩個人的手機號在同一時間內不會一樣。
上面給出的這幾個信息都可以唯一標識一位用戶,可以作為用戶ID號。
假設有一位用戶張三,在第一個手機上使用百度地圖, 在ipad上觀看百度愛奇藝視頻,在第二個手機上使用手機百度app, 在pc電腦上使用百度搜索,如何將同一個用戶在這些不同端的用戶信息聚合起來呢?
ID-Mapping主要解決這個問題,用來關聯ID信息。

3.算法思路
我們把用戶在各個端的信息收集起來,假設輸入兩條日志的id信息為:
line1: < mac1,mac2> < imei1> < tel1>
line2: < mac1> < imei2> < tel1,tel2>
上下是兩條用戶行為日志,看到他們都有mac1,兩條數據應該是同一個用戶。
使用多輪map-reduce的聚合方法,map做數據分塊,reduce做歸并
第一輪,以mac1和 mac2為key字段來map和reduce
Map 輸出:
mac1 line1 < mac1,mac2 > < imei1> < tel1>
mac2 line1 < mac1,mac2> < imei1> < tel1>
mac1 line2 < mac1> < imei2> < tel1,tel2>
Reduce 輸出:
line1 < mac1,mac2> < imei1,imei2> < tel1,tel2>
line1 < mac1,mac2> < imei1> < tel1>
line2 < mac1,mac2> < imei2,imei1> < tel1,tel2>
第二輪, 以line1和 line2為key字段來map和reduce
Map 輸出:
line1 < mac1,mac2> < imei1,imei2> < tel1,tel2>
line1 < mac1,mac2> < imei1> < tel1>
line2 < mac1,mac2> < imei2,imei1> < tel1,tel2>
Reduce 輸出:
line1 < mac1,mac2> < imei1,imei2> < tel1,tel2>
line2 < mac1,mac2> < imei1,imei2> < tel1,tel2>
第三輪, 以< mac1,mac2>為key字段來map和reduce
Map輸出:
< mac1,mac2> < imei1,imei2> < tel1,tel2>
< mac1,mac2> < imei1,imei2> < tel1,tel2>
Reduce輸出:
< mac1, mac2> < imei1,imei2> < tel1,tel2>

依次指定< id >重復上述過程,直到無法歸并


數據和索引設計
數據庫表的設計,設置global-id作為主key,(類似身份證號的作用),其他的字段都可以有多個(map< string,int>),這些用來表示一個用戶的多個身份標識。

[Bash shell] 純文本查看 復制代碼
//數據表
global_id               string,
imei                    map<string,int>
mac                     map<string,int>
imsi                    map<string,int>
phone_number            map<string,int>
idfa                    map<string,int>
openudid                map<string,int>
uid                     map<string,int>
did                     map<string,int> 


例如這四條記錄可以看到其實是一個用戶,存儲的時候就把它們存為一個用戶,用global_id作為key。
由此得到
global_id <=> imei,mac,imsi,phone_number,idfa,openudid,uid,did的相互映射關系。
用戶畫像——ID-Mapping

[Bash shell] 純文本查看 復制代碼
//索引表
id               string
global_id        string


線上查詢的時候,假設獲取了mac1類型ID, 根據mac的索引表獲取global_id,然后根據global_id數據表獲取用戶imei、phone_number等其他ID信息。

ID過期問題
對于僵尸用戶,或者長期不用的用戶,保存數據沒有意義,浪費資源而且數據長期不更新后可能數據不準確。
可以對每個ID加入活躍度參數,一方面代表用戶的活躍程度,一方面可以對ID的存儲做控制。

用戶行為數據:代表了用戶的活躍度,數據入表活躍度設置為0
ID Mapping歷史數據:按周更新,代表上周用戶的數據,迭代計算時,活躍度+1
全量用戶信息數據:代表全量用戶,數據引入時,設置活躍度參數為一個合理值。(eg: 60)





本帖被以下淘專輯推薦:

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關閉

推薦上一條 /4 下一條

QQ|小黑屋|about云開發-學問論壇|社區 ( 京ICP備12023829號 )

GMT+8, 2019-12-16 10:05 , Processed in 1.109375 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2018 Comsenz Inc.Designed by u179

快速回復 返回頂部 返回列表
梭哈电子游艺 大无限彩票是黑平台 卖美甲贴赚钱照片 kk彩票平台官方网站 黑龙江36选7走势图大星 劳务不收费怎么赚钱 骑马与砍杀战团 占领城市赚钱 双色球单式投和复式投注 16172期彩票中奖号码 海南彩票开奖结果查询 闲来南昌麻将群 五子棋游戏双人 闲来麻将app官网版下载 一定牛辽宁十一选五预测 彩票大本营彩民村 排列五这个彩票中奖大不 甘肃快三遗漏号统计表