数据预测 | 基于智能标签,精准管理数据

优采云 发布时间: 2020-08-04 18:05

  腾讯:社交广告,不同用户的朋友圈或者其他媒体场景下的广告信息是不同的,会基于用户特性推荐。

  头条:信息价值,根据用户浏览信息,分析用户相关喜好,针对分析结果推荐相关的信息流,越关注某类内容,获取相关的信息越多。

  如上几种场景的逻辑就是:基于不断分析用户的行为,生成用户的特点画像,然后再基于用户标签,定制化的推荐相关内容。

  2、基本概念

  通过里面的场景,衍生出来两个概念:

  用户画像

  用户画像,作为一种勾画目标用户、联系用户诉求与设计方向的有效工具,把该用户相关联的数据的可视化的凸显,就产生了用户画像。用户画像在各领域得到了广泛的应用,最初是在电商领域得到应用的,在大数据时代背景下,用户信息充斥在网络中,将用户的每个具体信息抽象成标签,利用这种标签将用户形象具体化,从而为用户提供有针对性的服务。

  标签数据

  标签在生活中特别常用,比如商品标签,个人标签,行业标签,例如提及996就想起程序员,提到程序员就想到格子衫。

  标签是把分散的多方数据进行整合纳入统一的技术平台,并对这种数据进行标准化和细分,进行结构化存储和更新管理,让业务线可以把这种细分结果推向现有的互动营销环境里的平台,产生价值,这些数据称为标签数据,也就是常说的标签库。数据标签的概念只是在近期几年大数据的发展中不断火热起来的。

  标签价值

  标签的核心价值,或者说更常用的场景:实时智能推荐,精准化数字营销。

  二、数据标签1、标签划分

  属性标签

  属性标签是变化最小的,例如用户实名认证之后,基于身份信息获得相关:性别,生日,出生年月,年龄,等相关标签。变动频率小,且更具备精准性。

  行为标签

  行为标签就是用户通过在产品上的一系列操作,基于行为日志分析得出:例如购买能力、消费爱好、季节性消费标签等。在信息流的APP上,通过相关浏览行为,不断推荐用户感兴趣的内容就是基于该逻辑。

  规则标签

  根据业务场景需求,配置指定规则,基于规则生成分析结果,例如:

  这类标签可以基于动态的规则配置,经过估算和预测,生成描述结果,也就是规则标签。

  拟合标签

  拟合类的标签更具备复杂性,通过用户上述几种标签,智能组合分析,给的预测值,例如:未婚、浏览相关婚礼内容,通过剖析分析用户将会开展婚礼,得到一个拟合结果:预测将会结婚。这个分析逻辑也可以逆向执行,用户选购婴儿用品:预测已婚已育。

  这就是数据时代常说的一句话:用户在某个应用上一通操作以后,算法分析的结果也许比用户对自己的描述需要真实。

  2、标签加工步骤

  

  数据采集

  数据采集的渠道相对较差,比如同一APP内的各类业务线:购物、支付、理财、外卖、信息浏览等等。通过数据通道传输到统一的数据聚合平台。有了很多海量日志数据的支撑,才具备数据预测的基础条件。不管是数据智能,深度学习,算法等都是建立在海量数据的基础条件上,这样就能获得带有价值的预测结果。

  数据加工

  结合如上业务,通过对海量数据的加工,分析和提取,获取相对精准的用户标签,这里也有关键的一步,就是对已有的用户标签进行不断的验证和修复,尤其是规则类跟拟合类的相关标签。

  标签库

  通过标签库,管理复杂的标签结果,除了复杂的标签,和基于时间线的标签变,标签数据至这里,已经具备非常大的价值,可以围绕标签库开放一些收费服务,例如常用的,用户在某电商APP浏览这些商品,可以在某信息流平台看到商品推荐。大数据时代就是这么令人觉得智能和窒息。

  标签业务

  数据走了一大圈转换成标签,自然还是要回归到业务层面,通过对标签数据的用户的剖析,可以进行精准营销,和智能推荐等相关操作,电商应用中可以减少成交量,信息流中可以更好的吸引用户。

  应用层

  把上述业务研发成服务,集成到带有的应用层面,不断提升应用服务的品质,不断的吸引用户,提供服务。当然用户的数据不断在应用层面产生,在转到数据采集服务中,最终产生完整的闭环流程。

  3、应用案例

  从步骤和业务层面描述都是简单的,到开发层面都会显得复杂和不好处理,这或许就是产品跟开发之间的隔阂。

  标签的数据类别

  不同标签的预测结果必须用不同的数据类别描述,在标签体系中,常用描述标签的数据类别如下:枚举、数值、日期、布尔、文本种类。不同的类别必须不一样的预测步骤。

  商品和标签

  这里提供一个基础案例,用商品的标签来预测商品,例如通过商品产地,价格,状态等条件,来查询产品库有多少符合条件的商品。

  数据表设计

  主要分四张表:标签分类,标签库,标签值,标签数据。

  CREATE TABLE `tc_tag_catalog` (

`id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`catalog_name` VARCHAR (50) NOT NULL DEFAULT '' COMMENT '名称',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`update_time` datetime DEFAULT NULL COMMENT '更新时间',

`state` INT (1) DEFAULT '1' COMMENT '状态1启用,2禁用',

PRIMARY KEY (`id`)

) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签层级目录';

CREATE TABLE `tc_tag_cloud` (

`id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`catalog_id` INT (11) NOT NULL COMMENT '目录ID',

`tag_name` VARCHAR (100) DEFAULT '' COMMENT '标签名称',

`tag_code` INT (11) DEFAULT NULL COMMENT '标签编码',

`bind_column` VARCHAR (100) DEFAULT '' COMMENT '绑定数据列',

`data_type` INT (2) NOT NULL COMMENT '1枚举,2数值,3日期,4布尔,5值类型',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`update_time` datetime DEFAULT NULL COMMENT '更新时间',

`remark` VARCHAR (150) DEFAULT NULL COMMENT '备注',

`state` INT (1) DEFAULT '1' COMMENT '状态1启用,2禁用',

PRIMARY KEY (`id`)

) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签云';

CREATE TABLE `tc_tag_data_enum` (

`tag_code` INT (11) NOT NULL COMMENT '标签编码',

`data_value` VARCHAR (150) NOT NULL COMMENT '枚举值',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

KEY `tag_code_index` (`tag_code`) USING BTREE

) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签枚举值';

CREATE TABLE `tc_tag_data_set` (

`id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`product_name` VARCHAR (100) DEFAULT '' COMMENT '商品名称',

`unit_price` DECIMAL (10, 2) DEFAULT '0.00' COMMENT '单价',

`is_shelves` INT (1) DEFAULT '1' COMMENT '是否上架:1否,2是',

`origin_place` VARCHAR (100) DEFAULT '' COMMENT '产地',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签数据集';

  

  模拟入参接口

  这里的参数必须是基于需求,动态选取,进行组织至一起:

  

  例如图片中这里给定的标签值列表,称为枚举值。

  @RestController

public class AnalyzeController {

@Resource

private TagDataSetService tagDataSetService ;

@GetMapping("/analyze")

public String analyze (){

List tagParamList = new ArrayList() ;

TagParam tagParam1 = new TagParam(1,"产地","origin_place") ;

List valueList1 = new ArrayList() ;

valueList1.add("深圳");

valueList1.add("广东");

tagParam1.setValueList(valueList1);

tagParamList.add(tagParam1) ;

TagParam tagParam2 = new TagParam(2,"价格","unit_price") ;

List valueList2 = new ArrayList() ;

valueList2.add("1999");

tagParam2.setValueList(valueList2);

tagParamList.add(tagParam2) ;

TagParam tagParam3 = new TagParam(3,"生产日期","create_time") ;

List valueList3 = new ArrayList() ;

valueList3.add("2020-05-01 13:43:54");

tagParam3.setValueList(valueList3);

tagParamList.add(tagParam3) ;

TagParam tagParam4 = new TagParam(4,"是否上架","is_shelves") ;

List valueList4 = new ArrayList() ;

valueList4.add("1");

tagParam4.setValueList(valueList4);

tagParamList.add(tagParam4) ;

TagParam tagParam5 = new TagParam(5,"产品名称","product_name") ;

List valueList5 = new ArrayList() ;

valueList5.add("智能");

tagParam5.setValueList(valueList5);

tagParamList.add(tagParam5) ;

Integer count = tagDataSetService.analyze(tagParamList) ;

return "Result:" + count ;

}

}

  参数解析查询

  通过对参数的解读,最终产生查询的SQL语句,获取精准的结果数据。

  @Service

public class TagDataSetServiceImpl extends ServiceImpl implements TagDataSetService {

@Resource

private TagDataSetMapper tagDataSetMapper ;

@Override

public Integer analyze(List tagParamList) {

StringBuffer querySQL = new StringBuffer() ;

for (TagParam tagParam:tagParamList){

querySQL.append(" AND ") ;

querySQL.append(tagParam.getBindColumn()) ;

// 1枚举,2数值,3日期,4布尔,5值类型

List valueList = tagParam.getValueList();

switch (tagParam.getDataType()){

case 1:

querySQL.append(" IN (") ;

for (int i = 0 ; i < valueList.size() ;i++){

if (i != valueList.size()-1){

querySQL.append("'").append(valueList.get(i)).append("',");

} else {

querySQL.append("'").append(valueList.get(i)).append("'");

}

}

querySQL.append(" )") ;

break;

case 2:

querySQL.append("=").append(tagParam.getValueList().get(0)) ;

break;

case 3:

querySQL.append(">='").append(tagParam.getValueList().get(0)).append("'") ;

break;

case 4:

querySQL.append("=").append(tagParam.getValueList().get(0)) ;

break;

case 5:

querySQL.append(" LIKE '%").append(tagParam.getValueList().get(0)).append("%'") ;

break;

default:

break;

}

}

/* 最终执行的 SQL

SELECT COUNT(*) FROM tc_tag_data_set

WHERE 1 = 1

AND origin_place IN ('深圳', '广东')

AND unit_price = 1999

AND create_time >= '2020-05-01 13:43:54'

AND is_shelves = 1

AND product_name LIKE '%智能%'

*/

String whereCondition = String.valueOf(querySQL);

return tagDataSetMapper.analyze(whereCondition);

}

}

  可能有人会说这不就是个查询流程吗?如果有这么的疑问,把上述案例换成用户查询,标签数据的价值会更直观。

  三、智能画像1、基本概念

  用户画像

  作为一种勾画目标用户、联系用户诉求与设计方向的有效工具,用户画像在各领域得到了广泛的应用。最初是在电商领域得到应用的,在大数据时代背景下,用户信息充斥在网络中,将用户的每个具体信息抽象成标签,利用这种标签将用户形象具体化,从而为用户提供有针对性的服务。

  行业画像

  通过市场属性标签,行业下用户标签的综合预测,生成行业分析报告,提供极有价值的导向,这是最近两年极其热门的应用。

  画像补全

  通过不断分析用户数据,丰富标签库,使用户的画像非常丰富立体。

  2、画像报告

  通过标签数据的预测,生成一份分析报告,报告内容包含丰富的用户标签统计数据。

  例如:90后画像报告

  这个报告,互联网用户一定或多或少都看见过。主要是一些标签统计,共性标签展示,或者这些群体对80后三观影响最大,收入来源,*敏*感*词*等诸多分析探讨。

  四、源代码地址

  GitHub·地址

https://github.com/cicadasmile/data-manage-parent

GitEE·地址

https://gitee.com/cicadasmile/data-manage-parent

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线