|
|
|
@ -39,9 +39,7 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
<img src="@/assets/images/caseIcon.png" alt="" />
|
|
|
|
<img src="@/assets/images/caseIcon.png" alt="" />
|
|
|
|
<span>案例背景:</span>
|
|
|
|
<span>案例背景:</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
<span style="line-height: 25px; font-size: 14px">本案例模拟企业搭建用户的标签系统、用户画像系统,以及用户画像的应用。</span>
|
|
|
|
本案例模拟企业搭建用户的标签系统、用户画像系统,以及用户画像的应用。
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="line"></div>
|
|
|
|
<div class="line"></div>
|
|
|
|
<div class="caseBack">
|
|
|
|
<div class="caseBack">
|
|
|
|
@ -50,128 +48,98 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
<span>第一步,获取原始数据</span>
|
|
|
|
<span>第一步,获取原始数据</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
用户画像体系依赖于完善的用户标签体系,而用户标签体系则采用完备的数据来源--原始数据,这一层我们需要获得尽量多的原始数据,因后面的所有的应用场景都依托于原始数据的计算、分析、建模,所以在原始数据库搭建时需要考虑更全面。<br />
|
|
|
|
用户画像体系依赖于完善的用户标签体系,而用户标签体系则采用完备的数据来源--原始数据,这一层我们需要获得尽量多的原始数据,因后面的所有的应用场景都依托于原始数据的计算、分析、建模,所以在原始数据库搭建时需要考虑更全面。
|
|
|
|
以电商平台为例,用到用户仓库中的表主要有:用户信息表、商品订单表、商品信息表、App端日志表、Web端日志表、商品评论表等。<br />
|
|
|
|
<br />
|
|
|
|
|
|
|
|
以电商平台为例,用到用户仓库中的表主要有:用户信息表、商品订单表、商品信息表、App端日志表、Web端日志表、商品评论表等。
|
|
|
|
|
|
|
|
<br />
|
|
|
|
请根据字段的相关属性判断该表属于数据库中哪一个?
|
|
|
|
请根据字段的相关属性判断该表属于数据库中哪一个?
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<div style="margin-top: 10px">
|
|
|
|
<div style="margin-top: 10px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams1" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams1"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams1 != '用户信息表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams1 == '用户信息表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable1" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable1" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams2" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams2"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams2 != '商品订单表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams2 == '商品订单表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable2" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable2" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams3" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams3"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams3 != '访问日志表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams3 == '访问日志表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable3" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable3" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams4" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams4"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams4 != '商品评论表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams4 == '商品评论表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable4" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable4" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams5" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams5"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams5 != '搜索日志表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams5 == '搜索日志表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable5" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable5" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="display: flex; margin-bottom: 20px">
|
|
|
|
<div style="display: flex; margin-bottom: 20px; align-items: center">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="step1SelectParams6" placeholder="请选择" style="width: 160px">
|
|
|
|
v-model="step1SelectParams6"
|
|
|
|
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 160px"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
|
|
v-for="item in selectList"
|
|
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams6 != '销售明细表'" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="step1SelectParams6 == '销售明细表'" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<ul class="selectUl">
|
|
|
|
<ul class="selectUl">
|
|
|
|
<li class="selectLi" v-for="item in selectTable6" :key="item">
|
|
|
|
<li class="selectLi" v-for="item in selectTable6" :key="item">
|
|
|
|
{{ item }}
|
|
|
|
{{ item }}
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="submit" style="margin-top: 25px" @click="step1Submit">
|
|
|
|
<div class="submit" style="margin-top: 25px" @click="step1Submit">提交</div>
|
|
|
|
提交
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="line"></div>
|
|
|
|
<div class="line"></div>
|
|
|
|
@ -181,10 +149,14 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
<span>第二步,构建用户标签体系</span>
|
|
|
|
<span>第二步,构建用户标签体系</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
基于原始数据的转换,文本字段的数量化表示,以及统计汇总,建立属性标签体系。按统计方式分类,可分为事实类标签、规则类标签、预测类标签:<br />
|
|
|
|
基于原始数据的转换,文本字段的数量化表示,以及统计汇总,建立属性标签体系。按统计方式分类,可分为事实类标签、规则类标签、预测类标签:
|
|
|
|
1)事实标签:从原始数据中提取,通常是基于原始数据清理后的归类,用于描述客观事实。例如用户注册信息中提取用户性别、生日、注册手机号、注册城市等。<br />
|
|
|
|
<br />
|
|
|
|
2)规则标签:没有直接对应数据,需要通过规则进行定义(可以自定义规则,或者利用常用的RFM、波士顿矩阵、漏斗模型、复购分析、AARRR模型等),通过计算来得出标签,例如流失用户、支付偏好等。<br />
|
|
|
|
1)事实标签:从原始数据中提取,通常是基于原始数据清理后的归类,用于描述客观事实。例如用户注册信息中提取用户性别、生日、注册手机号、注册城市等。
|
|
|
|
3)预测标签:基于现有事实及规则无法得出,需要运用决策树算法、贝叶斯算法等进行数据挖掘与训练,得出标签预测结果,来预测用户的偏好,例如根据用户历史的购买行为来预测其群体特性。<br />
|
|
|
|
<br />
|
|
|
|
|
|
|
|
2)规则标签:没有直接对应数据,需要通过规则进行定义(可以自定义规则,或者利用常用的RFM、波士顿矩阵、漏斗模型、复购分析、AARRR模型等),通过计算来得出标签,例如流失用户、支付偏好等。
|
|
|
|
|
|
|
|
<br />
|
|
|
|
|
|
|
|
3)预测标签:基于现有事实及规则无法得出,需要运用决策树算法、贝叶斯算法等进行数据挖掘与训练,得出标签预测结果,来预测用户的偏好,例如根据用户历史的购买行为来预测其群体特性。
|
|
|
|
|
|
|
|
<br />
|
|
|
|
不同行业,客户标签体系会有差异,以电商行业为例,常用的标签体系如下表,请对标签进行分类:
|
|
|
|
不同行业,客户标签体系会有差异,以电商行业为例,常用的标签体系如下表,请对标签进行分类:
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<div style="margin-top: 10px; display: flex">
|
|
|
|
<div style="margin-top: 10px; display: flex">
|
|
|
|
@ -199,29 +171,20 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
backgroundColor: '#6A7DE9!important',
|
|
|
|
backgroundColor: '#6A7DE9!important',
|
|
|
|
}"
|
|
|
|
}"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<el-table-column label="一级标签" align="center" prop="firstTag">
|
|
|
|
<el-table-column label="一级标签" align="center" prop="firstTag"></el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="二级标签" align="center" prop="secondTag"></el-table-column>
|
|
|
|
<el-table-column label="二级标签" align="center" prop="secondTag">
|
|
|
|
<el-table-column label="三级标签" align="center" prop="thirdTag" width="500"></el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="标签属性" align="center" prop="description" width="170">
|
|
|
|
<el-table-column
|
|
|
|
|
|
|
|
label="三级标签"
|
|
|
|
|
|
|
|
align="center"
|
|
|
|
|
|
|
|
prop="thirdTag"
|
|
|
|
|
|
|
|
width="500"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
<el-table-column label="标签属性" align="center" prop="description">
|
|
|
|
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-select
|
|
|
|
<el-select v-model="scope.row.params" placeholder="请选择" style="width: 130px" size="small">
|
|
|
|
v-model="scope.row.params"
|
|
|
|
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
|
|
style="width: 130px"
|
|
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-option :label="'事实标签'" :value="'事实标签'" />
|
|
|
|
<el-option :label="'事实标签'" :value="'事实标签'" />
|
|
|
|
<el-option :label="'规则标签'" :value="'规则标签'" />
|
|
|
|
<el-option :label="'规则标签'" :value="'规则标签'" />
|
|
|
|
<el-option :label="'预测标签'" :value="'预测标签'" />
|
|
|
|
<el-option :label="'预测标签'" :value="'预测标签'" />
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<div v-if="showAnswerFlag" style="margin-left: 3px; display: inline-block">
|
|
|
|
|
|
|
|
<span v-if="scope.row.isError" style="color: red">X</span>
|
|
|
|
|
|
|
|
<span v-if="!scope.row.isError" style="color: #00bb00">√</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</el-table>
|
|
|
|
@ -235,9 +198,7 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
<img src="@/assets/images/步骤.png" alt="" />
|
|
|
|
<img src="@/assets/images/步骤.png" alt="" />
|
|
|
|
<span>第三步,构建用户画像</span>
|
|
|
|
<span>第三步,构建用户画像</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
<span style="line-height: 25px; font-size: 14px">基于构建的用户标签体系,经过数据的采集、预处理、挖掘、可视化,采用文本挖掘算法、分类聚类算法、相似度计算、推荐算法、机器学习算法、预测算法等,以及用户画像分析的各类常用模型(RFM模型、漏斗模型、AARRR模型等),根据不同的业务场景需求,构建相应的用户画像。</span>
|
|
|
|
基于构建的用户标签体系,经过数据的采集、预处理、挖掘、可视化,采用文本挖掘算法、分类聚类算法、相似度计算、推荐算法、机器学习算法、预测算法等,以及用户画像分析的各类常用模型(RFM模型、漏斗模型、AARRR模型等),根据不同的业务场景需求,构建相应的用户画像。
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<div style="margin-top: 10px; display: flex">
|
|
|
|
<div style="margin-top: 10px; display: flex">
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<img src="@/assets/images/u6063.png" alt="" />
|
|
|
|
<img src="@/assets/images/u6063.png" alt="" />
|
|
|
|
@ -272,18 +233,19 @@ https://help.fanruan.com/finebi5.1/doc-view-1256.html"
|
|
|
|
<span>第四步,用户画像应用场景</span>
|
|
|
|
<span>第四步,用户画像应用场景</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
<span style="line-height: 25px; font-size: 14px">
|
|
|
|
1、人群分析:人群分析是用户画像最基础的应用场景之一,运营人员可借助标签深入分析不同用户画像群体的分布特征,又或是不同人群的消费习惯、消费偏好、不同地域的差异分析等。<br />
|
|
|
|
1、人群分析:人群分析是用户画像最基础的应用场景之一,运营人员可借助标签深入分析不同用户画像群体的分布特征,又或是不同人群的消费习惯、消费偏好、不同地域的差异分析等。
|
|
|
|
2、广告优化:用户画像可以圈选定位更准确的人群,同时也为素材文案、广告创意提供了更具体的撰写方向,做到精准且有效的投放。此外,用户画像可以助力广告主完成洞察到决策的环节,让投放工作更有目标方向,广告主也可基于标签高效触达目标人群,提升用户体验,实现营销价值的最大化。<br />
|
|
|
|
<br />
|
|
|
|
3、精细化消费者运营:运营人员可以通过快速分析用户特征,找到不同运营场景下的目标用户,从而精准圈定目标人群,进行更灵活、更有针对性的营销活动和个性化消息推送。基于用户画像分析,在合适的时间通过最佳渠道,给用户传递最感兴趣的内容。可以根据用户历史数据,实现基于用户兴趣的个性化推荐,也可在文案中植入用户个性化标签,增加用户的好感度亲密度。还可以通过用户历史购买时间,判断用户最容易消费的时间点,在合适时间给用户发送营销信息。<br />
|
|
|
|
2、广告优化:用户画像可以圈选定位更准确的人群,同时也为素材文案、广告创意提供了更具体的撰写方向,做到精准且有效的投放。此外,用户画像可以助力广告主完成洞察到决策的环节,让投放工作更有目标方向,广告主也可基于标签高效触达目标人群,提升用户体验,实现营销价值的最大化。
|
|
|
|
|
|
|
|
<br />
|
|
|
|
|
|
|
|
3、精细化消费者运营:运营人员可以通过快速分析用户特征,找到不同运营场景下的目标用户,从而精准圈定目标人群,进行更灵活、更有针对性的营销活动和个性化消息推送。基于用户画像分析,在合适的时间通过最佳渠道,给用户传递最感兴趣的内容。可以根据用户历史数据,实现基于用户兴趣的个性化推荐,也可在文案中植入用户个性化标签,增加用户的好感度亲密度。还可以通过用户历史购买时间,判断用户最容易消费的时间点,在合适时间给用户发送营销信息。
|
|
|
|
|
|
|
|
<br />
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="line"></div>
|
|
|
|
<div class="line"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<pop-modal :showModel="dialogVisible" @closePop="dialogVisible = false">
|
|
|
|
<pop-modal :showModel="dialogVisible" @closePop="dialogVisible = false">
|
|
|
|
<template v-slot:content>
|
|
|
|
<template v-slot:content>
|
|
|
|
<div v-html="knowledgeHtml">
|
|
|
|
<div v-html="knowledgeHtml"></div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</pop-modal>
|
|
|
|
</pop-modal>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -317,6 +279,7 @@ const step1SelectParams3 = ref("");
|
|
|
|
const step1SelectParams4 = ref("");
|
|
|
|
const step1SelectParams4 = ref("");
|
|
|
|
const step1SelectParams5 = ref("");
|
|
|
|
const step1SelectParams5 = ref("");
|
|
|
|
const step1SelectParams6 = ref("");
|
|
|
|
const step1SelectParams6 = ref("");
|
|
|
|
|
|
|
|
const showAnswerFlag = ref(false);
|
|
|
|
const selectList = ref([
|
|
|
|
const selectList = ref([
|
|
|
|
{
|
|
|
|
{
|
|
|
|
value: "用户信息表",
|
|
|
|
value: "用户信息表",
|
|
|
|
@ -343,84 +306,12 @@ const selectList = ref([
|
|
|
|
label: "销售明细表",
|
|
|
|
label: "销售明细表",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
]);
|
|
|
|
const selectTable1 = ref([
|
|
|
|
const selectTable1 = ref(["用户编码", "用户姓名", "用户状态", "出生日期", "性别", "电话号码", "注册日期", "归属省", "归属市", "学历", "职业", "行业", "婚姻状况", "子女状况"]);
|
|
|
|
"用户编码",
|
|
|
|
const selectTable2 = ref(["订单号", "订单来源标识", "用户编码", "用户姓名", "商品编码", "商品名称", "订单生成时间", "订单日期", "订单备注", "订单状态", "订单金额", "付款账户", "付款方式"]);
|
|
|
|
"用户姓名",
|
|
|
|
const selectTable3 = ref(["设备登录名", "用户ID", "设备ID", "访问时间", "IP所在省份", "IP所在城市", "上一个页面URL", "当前页面URL", "操作系统", "登录日期", "经度", "纬度", "付款方式"]);
|
|
|
|
"用户状态",
|
|
|
|
const selectTable4 = ref(["用户ID", "用户姓名", "评论内容", "评论图片", "评论状态", "综合评分", "订单ID", "创建日期", "评论用户IP", "更新时间"]);
|
|
|
|
"出生日期",
|
|
|
|
const selectTable5 = ref(["设备登录名", "用户ID", "设备ID", "搜索ID", "搜索日期", "用户搜索的关键词", "搜索匹配标签内容"]);
|
|
|
|
"性别",
|
|
|
|
const selectTable6 = ref(["商品编码", "商品名称", "商品归属类目", "销售额", "销售数量", "订单号", "用户编码", "用户姓名", "销售时间"]);
|
|
|
|
"电话号码",
|
|
|
|
|
|
|
|
"注册日期",
|
|
|
|
|
|
|
|
"归属省",
|
|
|
|
|
|
|
|
"归属市",
|
|
|
|
|
|
|
|
"学历",
|
|
|
|
|
|
|
|
"职业",
|
|
|
|
|
|
|
|
"行业",
|
|
|
|
|
|
|
|
"婚姻状况",
|
|
|
|
|
|
|
|
"子女状况",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const selectTable2 = ref([
|
|
|
|
|
|
|
|
"订单号",
|
|
|
|
|
|
|
|
"订单来源标识",
|
|
|
|
|
|
|
|
"用户编码",
|
|
|
|
|
|
|
|
"用户姓名",
|
|
|
|
|
|
|
|
"商品编码",
|
|
|
|
|
|
|
|
"商品名称",
|
|
|
|
|
|
|
|
"订单生成时间",
|
|
|
|
|
|
|
|
"订单日期",
|
|
|
|
|
|
|
|
"订单备注",
|
|
|
|
|
|
|
|
"订单状态",
|
|
|
|
|
|
|
|
"订单金额",
|
|
|
|
|
|
|
|
"付款账户",
|
|
|
|
|
|
|
|
"付款方式",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const selectTable3 = ref([
|
|
|
|
|
|
|
|
"设备登录名",
|
|
|
|
|
|
|
|
"用户ID",
|
|
|
|
|
|
|
|
"设备ID",
|
|
|
|
|
|
|
|
"访问时间",
|
|
|
|
|
|
|
|
"IP所在省份",
|
|
|
|
|
|
|
|
"IP所在城市",
|
|
|
|
|
|
|
|
"上一个页面URL",
|
|
|
|
|
|
|
|
"当前页面URL",
|
|
|
|
|
|
|
|
"操作系统",
|
|
|
|
|
|
|
|
"登录日期",
|
|
|
|
|
|
|
|
"经度",
|
|
|
|
|
|
|
|
"纬度",
|
|
|
|
|
|
|
|
"付款方式",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const selectTable4 = ref([
|
|
|
|
|
|
|
|
"用户ID",
|
|
|
|
|
|
|
|
"用户姓名",
|
|
|
|
|
|
|
|
"评论内容",
|
|
|
|
|
|
|
|
"评论图片",
|
|
|
|
|
|
|
|
"评论状态",
|
|
|
|
|
|
|
|
"综合评分",
|
|
|
|
|
|
|
|
"订单ID",
|
|
|
|
|
|
|
|
"创建日期",
|
|
|
|
|
|
|
|
"评论用户IP",
|
|
|
|
|
|
|
|
"更新时间",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const selectTable5 = ref([
|
|
|
|
|
|
|
|
"设备登录名",
|
|
|
|
|
|
|
|
"用户ID",
|
|
|
|
|
|
|
|
"设备ID",
|
|
|
|
|
|
|
|
"搜索ID",
|
|
|
|
|
|
|
|
"搜索日期",
|
|
|
|
|
|
|
|
"用户搜索的关键词",
|
|
|
|
|
|
|
|
"搜索匹配标签内容",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const selectTable6 = ref([
|
|
|
|
|
|
|
|
"商品编码",
|
|
|
|
|
|
|
|
"商品名称",
|
|
|
|
|
|
|
|
"商品归属类目",
|
|
|
|
|
|
|
|
"销售额",
|
|
|
|
|
|
|
|
"销售数量",
|
|
|
|
|
|
|
|
"订单号",
|
|
|
|
|
|
|
|
"用户编码",
|
|
|
|
|
|
|
|
"用户姓名",
|
|
|
|
|
|
|
|
"销售时间",
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
const knowledgeFlag = ref(false);
|
|
|
|
const knowledgeFlag = ref(false);
|
|
|
|
//时间间隔分组数-7天内
|
|
|
|
//时间间隔分组数-7天内
|
|
|
|
const sevenNum = ref(0);
|
|
|
|
const sevenNum = ref(0);
|
|
|
|
@ -601,8 +492,7 @@ const step2Data = ref([
|
|
|
|
{
|
|
|
|
{
|
|
|
|
firstTag: "用户价值标签",
|
|
|
|
firstTag: "用户价值标签",
|
|
|
|
secondTag: "用户价值RFM等级",
|
|
|
|
secondTag: "用户价值RFM等级",
|
|
|
|
thirdTag:
|
|
|
|
thirdTag: "1.重要价值用户;2.重要发展用户;3.重要保持用户;4.重要挽留用户;5.一般价值用户;6.一般发展用户;7.一般保持用户;8.一般挽留用户",
|
|
|
|
"1.重要价值用户;2.重要发展用户;3.重要保持用户;4.重要挽留用户;5.一般价值用户;6.一般发展用户;7.一般保持用户;8.一般挽留用户",
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
firstTag: "用户价值标签",
|
|
|
|
firstTag: "用户价值标签",
|
|
|
|
@ -953,22 +843,7 @@ const draw = () => {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
xAxis: {
|
|
|
|
xAxis: {
|
|
|
|
type: "category",
|
|
|
|
type: "category",
|
|
|
|
data: [
|
|
|
|
data: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"],
|
|
|
|
"1",
|
|
|
|
|
|
|
|
"2",
|
|
|
|
|
|
|
|
"3",
|
|
|
|
|
|
|
|
"4",
|
|
|
|
|
|
|
|
"5",
|
|
|
|
|
|
|
|
"6",
|
|
|
|
|
|
|
|
"7",
|
|
|
|
|
|
|
|
"8",
|
|
|
|
|
|
|
|
"9",
|
|
|
|
|
|
|
|
"10",
|
|
|
|
|
|
|
|
"11",
|
|
|
|
|
|
|
|
"12",
|
|
|
|
|
|
|
|
"13",
|
|
|
|
|
|
|
|
"14",
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
yAxis: {
|
|
|
|
yAxis: {
|
|
|
|
type: "value",
|
|
|
|
type: "value",
|
|
|
|
@ -1035,14 +910,7 @@ const drawEcharts = () => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const step1Submit = () => {
|
|
|
|
const step1Submit = () => {
|
|
|
|
step1Error.value = 0;
|
|
|
|
step1Error.value = 0;
|
|
|
|
if (
|
|
|
|
if (step1SelectParams1.value == "" || step1SelectParams2.value == "" || step1SelectParams3.value == "" || step1SelectParams4.value == "" || step1SelectParams5.value == "" || step1SelectParams6.value == "") {
|
|
|
|
step1SelectParams1.value == "" ||
|
|
|
|
|
|
|
|
step1SelectParams2.value == "" ||
|
|
|
|
|
|
|
|
step1SelectParams3.value == "" ||
|
|
|
|
|
|
|
|
step1SelectParams4.value == "" ||
|
|
|
|
|
|
|
|
step1SelectParams5.value == "" ||
|
|
|
|
|
|
|
|
step1SelectParams6.value == ""
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
proxy.$modal.msgError("请先完成所有填空");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1080,18 +948,27 @@ const step2Submit = () => {
|
|
|
|
for (let i in sliceList1) {
|
|
|
|
for (let i in sliceList1) {
|
|
|
|
if (sliceList1[i].params != "事实标签") {
|
|
|
|
if (sliceList1[i].params != "事实标签") {
|
|
|
|
step2Error.value++;
|
|
|
|
step2Error.value++;
|
|
|
|
|
|
|
|
sliceList1[i].isError = true;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sliceList1[i].isError = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let sliceList2 = step2Data.value.slice(29, 34);
|
|
|
|
let sliceList2 = step2Data.value.slice(29, 34);
|
|
|
|
for (let i in sliceList2) {
|
|
|
|
for (let i in sliceList2) {
|
|
|
|
if (sliceList2[i].params != "规则标签") {
|
|
|
|
if (sliceList2[i].params != "规则标签") {
|
|
|
|
step2Error.value++;
|
|
|
|
step2Error.value++;
|
|
|
|
|
|
|
|
sliceList2[i].isError = true;
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
sliceList2[i].isError = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let sliceList3 = step2Data.value.slice(34);
|
|
|
|
let sliceList3 = step2Data.value.slice(34);
|
|
|
|
for (let i in sliceList3) {
|
|
|
|
for (let i in sliceList3) {
|
|
|
|
if (sliceList3[i].params != "预测标签") {
|
|
|
|
if (sliceList3[i].params != "预测标签") {
|
|
|
|
step2Error.value++;
|
|
|
|
step2Error.value++;
|
|
|
|
|
|
|
|
sliceList3[i].isError = true;
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
sliceList3[i].isError = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(step2Error.value, "错误数");
|
|
|
|
console.log(step2Error.value, "错误数");
|
|
|
|
@ -1228,6 +1105,7 @@ const submitData = () => {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((res) => {
|
|
|
|
.then((res) => {
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
proxy.$modal.msgSuccess("提交成功");
|
|
|
|
|
|
|
|
showAnswerFlag.value = true;
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch((error) => {});
|
|
|
|
.catch((error) => {});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
@ -1293,9 +1171,9 @@ defineExpose({
|
|
|
|
padding: 0;
|
|
|
|
padding: 0;
|
|
|
|
margin-left: 20px;
|
|
|
|
margin-left: 20px;
|
|
|
|
// background: #022603;
|
|
|
|
// background: #022603;
|
|
|
|
background: #FDEFDD;
|
|
|
|
background: #fdefdd;
|
|
|
|
// border: 1px solid #338554;
|
|
|
|
// border: 1px solid #338554;
|
|
|
|
border: 1px solid #F7B55F;
|
|
|
|
border: 1px solid #f7b55f;
|
|
|
|
.selectLi {
|
|
|
|
.selectLi {
|
|
|
|
list-style-type: none;
|
|
|
|
list-style-type: none;
|
|
|
|
display: inline-block;
|
|
|
|
display: inline-block;
|
|
|
|
@ -1307,7 +1185,7 @@ defineExpose({
|
|
|
|
text-align: center;
|
|
|
|
text-align: center;
|
|
|
|
font-size: 14px;
|
|
|
|
font-size: 14px;
|
|
|
|
// border-right: 1px solid #338554;
|
|
|
|
// border-right: 1px solid #338554;
|
|
|
|
border-right: 1px solid #F7B55F;
|
|
|
|
border-right: 1px solid #f7b55f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.selectLi:nth-last-of-type(1) {
|
|
|
|
.selectLi:nth-last-of-type(1) {
|
|
|
|
border-right: none;
|
|
|
|
border-right: none;
|
|
|
|
|