广电大数据用户画像

来自CloudWiki
跳转至: 导航搜索

用户画像是什么?

用户画像是指根据用户属性、用户偏好、生活习惯、用户行为等信息抽像出来的标签化用户模型。就是给用户打标签,而标签通过对用户信息分析而来的高度精炼的特征标识。

通过打标签可以利用一些高度概括、容易理解的特征来描述用户,可以让人更容易理解用户,并且可以方便计算机处理。

用户画像的作用 ?

在互联网、电商领域用户画像常用来作为精准营销、推荐系统的基础性工作,其作用总体包括:

(1)精准营销:根据历史用户特征,分析产品的潜在用户和用户的潜在需求,针对特定群体,利用短信、邮件等方式进行营销。

(2)用户统计:根据用户的属性、行为特征对用户进行分类后,统计不同特征下的用户数量、分布;分析不同用户画像群体的分布特征。

(3)数据挖掘:以用户画像为基础构建推荐系统、搜索引擎、广告投放系统,提升服务精准度。

(4)服务产品:对产品进行用户画像,对产品进行受众分析,更透彻地理解用户使用产品的心理动机和行为习惯,完善产品运营,提升服务质量。

(5)行业报告&用户研究:通过用户画像分析可以了解行业动态,比如人群消费习惯、消费偏好分析、不同地域品类消费差异分析


项目背景与挖掘目标

随着互联网技术的快速发展和应用扩展,国家正式推进三网融合政策,三网融合是指电信网、广播电视网、互联网在向宽带通信网、数字电视网、下一代互联网演进过程中,三大网络通过技术改造,其技术功能趋于一致,业务范围趋于相同,网络互联互通、资源共享,能为用户提供语音、数据和广播电视等多种服务。 新媒体业务的飞速发展对传统媒体造成了巨大冲击,广电行业依靠资源稀缺形成的垄断优势已经失去。

项目目标:

1. 挖掘分析用户相关数据,对用户数据进行标签化,建立一个用户画像模型,可提供标签的增加和删除。

2. 利用SVM算法建立分类模型,预测用户是否值得挽留,并将预测结果作为用户画像的一个标签。

3. 提出的系统架构能适应用户数据大量增长时不需要调整系统架构的情况,即支持动态横向扩展。

数据存储-数据说明

用户信息数据:mediamatch_usermsg


字段 描述

terminal_no 客户地址编号

phone_no 客户编号

sm_name 品牌名称

run_name 状态名称

sm_code 品牌编号

owner_name 客户等级名称

owner_code 客户等级

run_time 状态变更时间

addressoj 完整地址

estate_name 街道或小区地址

force 宽带是否生效

open_time 开户时间


用户状态变更信息数据:mediamatch_userevent


字段 描述

run_name 状态名称

run_time 更改状态时间

owner_code 客户等级编号

owner_name 客户等级名称

sm_name 品牌名称

open_time 开户时间

phone_no 客户编号


账单信息数据:mmconsume_billevents


字段 描述

fee_code 费用类型

phone_no 客户编号

owner_code 客户等级

owner_name 客户等级编号

sm_name 品牌名

year_month 账单时间

terminal_no 用户地址编号

favour_fee 优惠金额(+代表优惠,-代表额外费用)

should_pay 应收金额,单位:元


用户收视行为数据:media_index


字段名 描述 terminal no 用户地址编号

phone no 用户编号

duration 观看时长,单位:毫秒

station name 直播频道名称

origin_time 观看行为开始时间

end_time 观看行为结束时间

owner_code 客户等级

owner_name 客户等级名称

vod_cat_tags vod节目包相关信息(nested object)按不同的节目包目录组织

resolution 点播节目的清晰度

audio Jlang 点播节目的语言类别

region 节目地区信息

res_name 设备名称

res_type 媒体节目类型0是直播,1是点播或回看

vod_titlevod 节目名称

category_name 节目所属分类

program_title 直播节目名称

sm_name 用户品牌名称


订单信息数据 media_index


字段 描述

phone_no 用户编号

owner_name 客户等级名称

optdate 产品订购状态更新时间

Prodname 订购产品名称

sm_name 用户品牌名称

offerid 订购套餐编号

offername 订购套餐名称

business_name 订购业务状态

owner_code 客户等级

prodprcid 订购产品名称(带价格)的编号

prodprcname 订购产品名称(带价格)

effdate 产品生效时间

expdate 产品失效时间

orderdate 产品订购时间

cost 订购产品价格

mode_time 产品标识,辅助标识电视主、附销售品

prodstatus 订购产品状态

run_name 状态名

orderno 订单编号

实训步骤-数据存储操作

接下来我们使用xftp将数据上传到opt目录下 依次将上传的五个文件删除第一行数据,因为第一行数据为表结构

sed -i 1d mediamatch_usermsg.csv 
sed -i 1d media_index.csv 
sed -i 1d mediamatch_userevent.csv 
sed -i 1d mmconsume_billevents.csv 
sed -i 1d order_index.csv 


然后我们打开虚拟机启动Hadoop服务、Zookeeper服务

启动hive:

hive --service metastore &

进入hive:

hive

创建一个数据库zjsm:

create database zjsm;


我们需要创建五个表:

mediamatch_usermsg   用户信息表
mediamatch_userevent  状态变更表
mmconsume_billevents  账单表
order_index   订单表
media_index    收视表


在Hive中执行以下命令创建表并且导入数据到Hive中


1.账单表

创建mmconsume_billevents表

create table mmconsume_billevents(
terminal_no string, 
phone_no string,
fee_code string,
year_month string,
owner_name string,
owner_code string,
sm_name string,
should_pay double,
favour_fee double)
row format delimited fields terminated by '\073';

将数据导入到mmconsume_billevents表中

load data local inpath '/opt/mmconsume_billevents.csv' overwrite into table mmconsume_billevents;


2.收视表

创建media_index表

create table media_index(
terminal_no string,
phone_no string,
duration bigint,
station_name string,
origin_time string,
end_time string,
owner_code string,
owner_name string,
vod_cat_tags string,
resolution string,
audio_lang string,
region string,
res_name string,
res_type int,
vod_title string,
category_name string,
program_title string,
sm_name string)
row format delimited fields terminated by '\073';

将数据导入到media_index表中

load data local inpath '/opt/media_index.csv' overwrite into table media_index;


3.用户信息表

创建mediamatch_usermsg表

 create table mediamatch_usermsg(
 terminal_no string,
 phone_no string,
 sm_name string,
 run_name string,
 sm_code string,
 owner_name string,
 owner_code string,
 run_time string,
 addressoj string,
 open_time string,
 force string)
 row format delimited fields terminated by '\073';

将数据导入到mediamatch_usermsg表中

 load data local inpath '/opt/mediamatch_usermsg.csv' overwrite into table mediamatch_usermsg;


4.订单表


创建order_index表

create table order_index(
phone_no string,
owner_name string,
optdate string,
prodname string,
sm_name string,
offerid int,
offername string,
business_name string,
owner_code string,
prodprcid int,
prodprcname string,
effdate string,
expdate string,
orderdate string,
cost string,
mode_time string,
prodstatus string,
run_name string,
orderno string,
offertype string)
row format delimited fields terminated by '\073';

将数据导入到order_index表中

load data local inpath '/opt/order_index.csv' overwrite into table order_index;


5.状态变更表

创建mediamatch_userevent表

create table mediamatch_userevent(
phone_no string,
run_name string,
run_time string,
owner_name string,
owner_code string,
open_time string,
sm_name string)
row format delimited fields terminated by '\073';

将数据导入到 mediamatch_userevent表中

load data local inpath '/opt/mediamatch_userevent.csv' overwrite into table mediamatch_userevent;


数据存储工作完成