大數據技術暑期實習八___構建用戶畫像(SQL語句打標簽)


一、用戶畫像的介紹

用戶畫像的核心工作是為用戶打標簽,打標簽的重要目的之一是為了讓人能 夠理解並且方便計算機處理,如,可以做分類統計:喜歡 iphone 的用戶有多少? 喜歡 iphone 的人群中,男、女比例是多少?也可以做數據挖掘工作:利用聚類 算法分析,喜歡 iphone 的人年齡段分布情況。

二、構建用戶畫像

  2.1 標簽的命名   

    標簽主題:用於刻畫屬於那種類型的標簽,如用戶屬性、用戶行為、用戶消 費、風險控 制等多種類型,可用 A、B、C、D 等字母表示各標簽主題;    

    標簽類型:標簽類型可划為分類型和統計型這兩種類型,其中分類型用於刻畫用戶屬於哪種類型,如是男是女、是否是會員、是否已流失等標簽,統計型 標簽用於刻畫統計用 戶的某些行為次數,如收藏次數、近 30 日購買次數等標簽,這類標簽都需要對應一個 用戶相應行為的權重次數;    

    開發方式:開發方式可分為統計型開發和算法型開發兩大開發方式。其中統計型開發可 直接從數據倉庫中各主題表建模加工而成,算法型開發需要對數據做機器學習的算法處 理得到相應的標簽;

    是否互斥標簽:對應同一級類目下(如一級標簽、二級標簽),各標簽之間的關系是否 為互斥,可將標簽划分為互斥關系和非互斥關系。例如對於男、女標簽就是互斥關系, 同一個用戶不是被打上男性標簽就是女性標簽,對於高活躍、中活躍、低活躍標簽也是 互斥關系;

    用戶維度:用於刻畫該標簽是打在用戶唯一標識(userid)上,還是打在用 戶使用的設 備(cookieid)上或其他的唯一標識。可用 U、 C 等字母分別標識 userid 和 cookieid 維度。

    示例:對於用戶是男是女這個標簽,標簽主題是用戶屬性,標簽類型屬於分 類型,開發 方式為統計型,為互斥關系,用戶維度為 userid。這樣給男性用戶打 上“A111U001_001”,女性用戶打上標簽“A111U001_002”,其中“A111U” 為上面介紹的命名 方式,“001”為一 級標簽的 id,后面對於用戶屬性維度的 其他一級標簽可用“002”、“003” 等方式追加 命名,“_”后面的“001” 和“002”為該一級標簽下的標簽明細,如果是划分高、中、低活 躍用戶的, 對應一級標簽下的明細可划分為“001”、“002”、“003”。

   注:本案例中標簽主題以用戶屬性和用戶行為;開發方式以統計性開發為主;用戶維度使用userid為唯一標識。

  2.2 sql語句

create table profile_tag_user_gender
(
user_id string comment '用戶編碼',
tag_id string comment '標簽 id',
tag_name string comment '用戶性別',
tag_type string comment '用戶屬性'
)
comment '用戶性別標簽表';

insert into profile_tag_user_gender (user_id,tag_id,tag_name,tag_type)
select  user_id,
case when gender='' then 'A111U001_001'
else 'A111U001_002'
end,
gender,'用戶性別'
from user_info;
----------------
create table profile_tag_user_age_region
(
user_id string comment '用戶編碼',
tag_id string comment '標簽 id',
tag_name string comment '用戶年齡段',
tag_type string comment '用戶屬性'
)
comment '用戶年齡段標簽表';

insert into profile_tag_user_age_region (user_id,tag_id,tag_name,tag_type)
select  user_id,
case   when age_region=1 then 'A111U002_001'
when age_region=2 then 'A111U002_002'
when age_region=3 then 'A111U002_003'
when age_region=4 then 'A111U002_004'
when age_region=5 then 'A111U002_005'
when age_region=6 then 'A111U002_006'
else 'A111U002_008'
end,
age_region_alias,'用戶年齡段'
from user_info;
------------------
create table profile_tag_user_grade
(
user_id string comment '用戶編碼',
tag_id string comment '標簽 id',
tag_name string comment '用戶等級',
tag_type string comment '用戶屬性'
)
comment '用戶會員標簽標簽表';

insert into profile_tag_user_grade (user_id,tag_id,tag_name,tag_type)
select  user_id,
case   when user_grade='銅牌會員' then 'A111U003_001'
when user_grade='銀牌會員' then 'A111U003_002'
when user_grade='金牌會員' then 'A111U003_003'
when user_grade='鑽石會員' then 'A111U003_004'
when user_grade='PLUS會員' then 'A111U003_005'
end,
 age_region_alias,'用戶等級'
from user_info;
----------------
create table person_user_tag_action
(
user_id string comment '用戶編碼',
tag_id string comment '標簽 id',
tag_name string comment '標簽名稱',
tag_type string comment '用戶行為',
action_count int comment '行為次數'
)
comment '用戶行為標簽表';

insert into person_user_tag_action (user_id,tag_id,tag_name,tag_type,action_count)
select  user_id,
case   when user_action='0' then 'A111U004_001'
when user_action='1' then 'A111U004_002'
when user_action='2' then 'A111U004_003'
when user_action='3' then 'A111U004_004'
end,
case   when user_action='0' then '加入購物車'
when user_action='1' then '點擊'
when user_action='2' then '購買'
when user_action='3' then '刪除'
end,
'用戶行為',
count(*) from action group by user_id,user_action;
---------------

  2.3 效果

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM