数字人bot

2021-08-10   阅读量: 124

大数据 数据分析师 Excel

真正傻瓜式操作:这款国产BI软件,轻松实现数据分析预测与可视化

最近朋友推荐一款名为Yonghong Desktop的工具,号称既有BI,又有AI,而且还是免费的,于是二话不说,下载->安装->启动产品,一系列操作快速搞定后,马上就想体验一下。

这里我们使用天池开放的数据资源里下载的两个 csv 数据
资源地址:
Tianchi_mum_baby.csv(儿童信息)
Tianchi_mum_baby_trade_history.csv(交易记录)
作为体验该软件的样例数据。表结构如下两张表所示。
表1 儿童信息如下,共有 3 个字段:

列名描述
user_id整数类型,用户ID
birthday时间类型,出生年月日
gender性别(“0”是女,“1”是男,“2”是未知)

表2 交易记录信息如下,共有 7 个字段:

列名描述
auction_id整数类型,交易ID
user_id整数类型,用户ID
cat_id整数类型,品类ID
cat1整数类型,基础品类ID
property文本类型,商品相关属性
buy_mount整数类型,购买数量
day时间戳,交易日期

通过两个表的数据,实现“根据用户购买的儿童用品交易记录预测儿童的年龄”。
后续就可以基于预测的结果向用户推荐该年龄段可能需要的商品,促成更多商品销售,用数据分析提升产品转换,最终实现做成了一幅可视化报表,如下:

经过研读在线帮助文档和一番摸索发现,Yonghong Desktop功能确实强大,数据探索、准备和处理、模型构建和推理,报告制作等各方面功能都很完善。
接下来我们就来一起学习下,如何利用这些数据来实现分析与预测吧~
01. 做好基础准备——数据的导入与探索
1.1 数据导入
数据源的格式为CSV格式,直接在 Yonghong Desktop 上选择下图1这个功能上传数据即可形成数据集。

图1 CSV数据导入功能

导入后的数据集分别存放在如下位置

图2 导入的原始数据集

1.2 数据探索
在Yonghong Desktop 上“深度分析”模块创建一个新实验,将数据集“baby”、“baby_trade_history”拖入画布,在右侧查看各个数据的元数据、探索数据功能。
可以发现以下信息:

  1. “baby”数据集的user_id字段唯一值数量为953个;

  2. “baby_trade_history”数据集的user_id字段唯一值数量为29944个,因此只有3.18%的用户关联有baby数据的;

  3. “baby_trade_history”数据集的property字段是关于购买商品的属性信息且均已脱敏,无法知道其具体含义。

这么多的交易记录都查不到对应的儿童信息,我的想法是通过有儿童信息的交易记录,经过模型构建推理剩下那些交易记录对应的儿童信息。
02. 简单五步——轻松完成数据处理
将“baby_trade_history”数据集关联有儿童信息的交易记录作为儿童年龄已标注的训练集,未关联儿童信息的记录作为待预测数据集。
根据对业务和数据集的理解,儿童年龄与字段cat_id (商品品类)、cat1 (商品基础品类)、property (商品属性)、buy_mount(购买数量)相关性较高。
2.1 构造“baby_trade_history_train”数据集作为模型的训练集
它是由数据集“baby”、“baby_trade_history”数据集内部联接而成。构造数据流如下图3所示,“联接”算子的配置如图4所示。

图3 baby_trade_history_train数据集的工作流图4 训练集的内部联接配置

2.2 通过交易日期和生日,算出年龄字段
在“baby_trade_history_train”数据集上通过新建计算列生成一个计算列字段age,其取值为根据字段birthday计算出的儿童年龄。该计算列:
“roundUp((dateValue(parseDate(col['day'],'yyyyMMdd'))-dateValue(parseDate(col['birthday'],'yyyyMMdd')))/365,1)”
2.3 构造“baby_trade_history_predict”数据集作为模型推理用的待预测数据集
它是由数据集“baby”、“baby_trade_history”数据集右侧联接而成,如图5所示。

图5 测试集的右侧联接配置

2.4 待预测数据集过滤掉年龄字段不为空的数据行
由于“baby_trade_history”数据集的user_id唯一值数量多于“baby”数据集的记录,右联接后“baby_trade_history_predict”数据集中关于”baby”的有大量空值。
如图6所示。在该数据集上添加过滤条件滤出birthday字段含有空值的行作为“baby_trade_history_predict”数据集最终输出,过滤完的结果只剩下在baby数据集里查询不到的数据。过滤条件配置如图7所示。

图6 有空值的字段图7 过滤条件

2.5 从property字段构造新特征
property字段的数据如图8所示。

图8 baby_trade_history数据

该字段集中了商品的所有属性名及其取值,但显然不同类型的商品,其属性必然有差异,比如用途、尺寸、重量、材质、商品细分类型等等,不同年龄段的儿童用商品必然有所不同或者儿童偏好不同,这决定了商品属性必然与年龄存在相关性。
通过观察数据(图8)发现,property字段将商品属性及其取值以冒号分割同时以分号分割不同的属性,虽然属性及取值均已脱敏,但仍然有利用的价值。
于是我尝试用计算列拆分该字段构造出新字段。由于商品属性较多,我分离出了几个常见的商品属性作为计算列,如图9所示,其中:property_len是商品属性个数,其内容为:
len(col['property'])-len(substitute(col['property'],';',''))
property_21458是属性21458对应的值,其计算列内容为:
if contains(ifNull(col['property'],'0'),'21458:') then parseInt(split(split(col['property'],'21458:',2),';',1))/1000 else 0 end
其它属性列对应的计算列同property_21458列。

图9 property分离出的新字段(红框内)

经过以上步骤,数据处理完成。
03. 快速搭建实验——模型的构建与推理
3.1 模型构建
模型构建涉及特征工程和训练过程,在深度分析中是以实验的形式存在的。经过前面数据处理之后,搭建模型实验已经比较简单了。在Yonghong Desktop上创建一个实验,将“数据集”tab下的训练集“baby_trade_history_train”数据集和“操作”tab下“/算法/回归/决策树回归”算子及视图节点拖至实验画布,构建的实验如下图10所示,用到的节点位于图11中标注的位置。

图10 创建的模型训练实验工作流图11 使用的算子

决策树回归的参数配置表如图12所示,调参过程略过,这里大家可以根据对数据和业务的理解自行设置。
特征列选择如图13所示,注意字段的顺序是有用的,模型应用的时候字段的含义和顺序需要与这个特征列顺序保持一致。

图12 决策树回归算法的参数配置表图13 特征列

训练完模型后通过“多视图”节点可以查看其性能指标、特征重要性等,如下图14所示。
为了后续应用训练好的模型,我通过“保存为训练模型”及时将模型保存下来(操作过程略),保存的训练模型存放于如图15所示的位置,取名为:儿童年龄预测_训练模型。

图14 模型性能指标视图图15 保存的训练模型

特别注意:在搭建模型训练实验的时候,遇到一个小坑。在“创建数据集”模块构建训练集时,如果添加计算列或者更新了计算列的计算逻辑后,在深度分析实验工作流中的训练集“baby_trade_history_train”节点上需要鼠标右键菜单点击“刷新”。
3.2 模型推理
保存了训练模型,就可以开始用它搭建模型推理服务工作流了。
第一步,新建一个实验,将预测数据集:baby_trade_history_predict,和刚保存的训练模型:儿童年龄预测_训练模型拖入画布中,创建工作流如图16所示。
第二步,配置模型应用节点。由于训练集和测试集的所选的特征字段完全一样,所以模型应用中填写的特征列与训练模型的字段和顺序完全一致,本实验中的配置如图17所示。

图16 模型推理工作流图17 模型应用算子的配置项

predict_age字段是新建的字段,点击图18里的icon进行创建。

图18 新建字段写入模型预测的结果

第三步,设置制作报告可以使用的节点输出。这里显然模型应用节点的输出是我需要的,直接选择该节点即可,节点设置页面如图19所示。

图19 设置用于制作报告的节点

保存该实验,取名为:儿童年龄预测实验。
04. 让结果一目了然——制作可视化报告
训练数据集baby_trade_history_train里有age字段,待预测数据集里有预测结果字段predict_age。现在的一个想法,就是把所有交易记录的age和predict_age拼接到一列里,就可以得到所有交易记录的年龄(一部分是实际的,一部分是预测的)。
4.1 合并训练数据集和待预测数据集
这里又用到了自服务数据集进行数据处理,将待预测数据集baby_trade_history_predict和训练数据集baby_trade_history_train做联合得到新数据集baby_trade,如图20。

图20 联合之后的数据集baby_trade

特别注意:联合的数据集需要字段相同,字段类型也匹配。
4.3 基于合并的数据集新建报告,并应用实验
基于baby_trade新建报告,选择绑定pane上的应用实验,如图20。

图20 应用实验入口

在弹出的选择实验窗口中,如图21 选择实验窗口,选择儿童年龄预测实验,并选择模型应用节点,点击确定。

图21 选择实验窗口

在此绑定数据集上,出现模型应用上新增的字段,见图22。

图22 应用实验

4.3 合并age和predict_age字段
新建计算列age_new,进行拼接,见图23。

图23 字段拼接

4.4 对每个年龄段进行分组
基于age_new字段新建数据分箱,设置见图24。

图24 数据分箱

4.5 制作报告
用上面预测和准备的数据,即可在Yonghong Desktop上通过可视化的方式拖拽得到消费商品的年龄分布,不同年龄段的购买情况,不同年龄的商品偏好,不同商品的年龄分布,并由此做精准的商品推荐。
我拖拽做了四个图表,基本在分钟级以内搞定,最终展示效果如图25所示。

图25 可视化效果

好了,现在整体的数据分析+预测已经完成,来做一个简单的总结:
回溯整个过程,可以发现,Yonghong Desktop有强大的数据治理功能,其中自服务数据集和计算列异常惊艳。深度分析模块内置了丰富的算子,模型构建和推理通过简单的工作流,拖拽即可实现,无需编码。通过在实验上设置可用于报告制作的算子节点,即可实现AI和BI结合,将AI的预测结果通过报表进行分析和呈现。


0.0000 0 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子