2.2 补充梯度下降理解

from matplotlib import pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

导数

引入

  • \(平均速度=\frac{位移}{时间}\)
plt.figure(figsize=(15,8),dpi=80)
x=np.linspace(0,10,num=100)
y=x**2
plt.plot(x,y)

plt.xlabel('t')
plt.ylabel('S')
x0=2
y0=4
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5,color='y')
#plt.scatter([x0, ], [y0, ], s=50, color='r')

x1=8
y1=64
plt.plot([x1, x1,], [0, y1,], 'k--', linewidth=2,color='y')

xtick_labels = ['t','u']
plt.xticks([x0,x1],xtick_labels)
#plt.scatter([x0, ], [y0, ], s=50, color='r')
plt.annotate(s='(t,$f(t)$)',xy=(2,4) ,xycoords='data',xytext=(2,3), fontsize=12)
plt.annotate(s='(t,$f(t)$)',xy=(8,64) ,xycoords='data',xytext=(8,60), fontsize=12)
plt.text(3,40,r'$v=\frac{f(u)-f(t)}{u-t}$',fontdict={'size': 16, 'color': 'b'})
plt.show()

png

  • h=u-t
  • 当t与u无限接近时,h无限接近于0,即瞬时速度
plt.figure(figsize=(15,8),dpi=80)
x=np.arange(0,10,0.1)
y=x**2
plt.plot(x,y)



plt.xlabel('t')
plt.ylabel('S')
x0=2
y0=4
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5,color='y')
#plt.scatter([x0, ], [y0, ], s=50, color='r')

x1=2.5
y1=2.5*2.5
plt.plot([x1, x1,], [0, y1,], 'k--', linewidth=2,color='y')

xtick_labels = ['x','x+h']
plt.xticks([x0,x1],xtick_labels)


x2=np.arange(0,10,0.1)
y2= 2*x
plt.plot(x2,y2,linestyle='--')

plt.text(3,40,r'$\lim_{x \to h}=\frac{f(x+h)-f(x)}{h}$',fontdict={'size': 16, 'color': 'b'})
plt.show()

png

\[f'(x)=\lim{\Delta x \to 0}\frac{f(x+\Delta x)-f(x)}{\Delta x}\]

  • \(\Delta x=x_新-x\)
  • \(\Delta y=y_新-y\)
    同理可得
    \[f'(x)=\lim{\Delta x \to 0}\frac{\Delta y}{\Delta x}\]

假设x小到以至于几乎注意不到,用\(dx\),表示x中十分微小得变化

偏导

一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化)。偏导数在向量分析和微分几何中是很有用的。

例子
圆锥的体积\(V(r,h)=\frac{r^2\pi h }{3}\)

  • \(\frac{\partial V}{\partial r}=\frac{2 \pi r h }{3}\) 高度固定,体积变化率
  • \(\frac{\partial V}{\partial r}=\frac{\pi r ^2 }{3}\) 半径固定,体积变化率

微分

求和

plt.figure(figsize=(15,8),dpi=80)
x=np.arange(0,12,3)
y=x**2
plt.bar(x,y,width=4)

xtick_labels = ['t{}'.format(i) for i in x]
plt.xticks(x,xtick_labels)
plt.xlabel('t')
plt.ylabel('v')
plt.show()

png

\[总位移=\sum_{j=1}^{n}v_j(t_j-t{j-1})\]

积分

考虑v是t得连续函数时

plt.figure(figsize=(15,8),dpi=80)
x=np.arange(0,10,1)
y=x**2

plt.plot(x,y)
plt.bar(x,y,width=1,alpha=0.3,color='g')

xtick_labels = ['t{}'.format(i) for i in x]
plt.xticks(x,xtick_labels)
plt.xlabel('t')
plt.ylabel('v')


x0=4.5
y0=25
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2,color='r')
#plt.scatter([x0, ], [y0, ], s=50, color='r')

x1=5.5
y1=25
plt.plot([x1, x1,], [0, y1,], 'k--', linewidth=2,color='r')

x2=5
y2=25
plt.plot([x2, x2,], [0, y2,], 'k--', linewidth=3,color='r')

plt.annotate(s='p',xy=(4.5,0) ,xycoords='data',xytext=(4.5,-3), fontsize=12,color='r')
plt.annotate(s='q',xy=(5.5,0) ,xycoords='data',xytext=(5.5,-3), fontsize=12,color='r')
plt.annotate(s='c',xy=(5,25) ,xycoords='data',xytext=(5,30), fontsize=12,color='r')


plt.text(3,40,r'$S\approx\sum_{j=1}^n{v(c_j)(t_j-t_{j-1})}$',fontdict={'size': 16, 'color': 'y'})
plt.show()

png

定义

\[\int_a^bf(x)\mathrm{d}x\]

  • 函数从a到b的积分
  • a,b为积分极限
  • \(dx\)说明水平轴的变量

\[\int_a^bf(x)\mathrm{d}x=\lim_{mesh \to 0}\sum_{j=1}^n{v(c_j)(t_j-t_{j-1})}\]

  • \(c_j\)为\(x_1,x_2\)区间内任意值
  • mesh表示\((x_1-x_0)\),\((x_2-x_1)\)间隔值

区分:

位移:\(\int_a^b v(t)\mathrm{d}x\)

路程:\(\int_a^b |v(t)|\mathrm{d}x\)

计算

def f(x):
    return np.exp(x*x)
x=np.linspace(0,3,num=100)
fig,ax=plt.subplots(figsize=(10,5))#绘制8*5的图形
plt.plot(x,f(x))
a,b=0,2#积分域0到1
ix=np.linspace(a,b)
iy=f(ix)
verts=[(a,0)]+list(zip(ix,iy))+[(b,0)]#表示积分的区域
#使用Polygon函数填充,表面颜色是0.7,边沿颜色是0.5
poly=Polygon(verts,facecolor='0.7',edgecolor='0.5')
ax.add_patch(poly)#将填充面积添加到图表里
plt.text(0.5*(a+b),1,r'$\int_'+str(a)+'^'+str(b)+' f(x)\mathrm{d}x$',horizontalalignment='center',fontsize=20)
#添加LaTex的标量名称需要用2个$符号包含在内才行,这标明是积分,水平居中对齐,坐标是(0.5,1),字体20
plt.xlabel('$x$')
plt.ylabel('$f(x)=x^2$')
ax.set_xticks((a,b))#x轴刻度位置
ax.set_xticklabels(('$'+str(a)+'$','$'+str(b)+'$'))#内容
plt.show()

png

  • 在[0,2]区间内等分成n份
    此时:
    \[[x_{j-1},x_j]=[\frac{2(j-1)}{n},\frac{2j}{n}]\]
    \[c_j=x_j=\frac{2j}{n}\]

\[\int_0^2 x^2\mathrm{d}x=\lim_{最大区间 \to 0}\sum_{j=1}^n f(j)(x_j-x_{j-1} )=\lim_{n \to \infty}\frac{4(n+1)(2n+1)}{3n^2} =\frac{8}{3}\]

梯度

(多变微分的一般化)

\[J(\Theta)=5\theta_1+2\theta_2-12\theta_3\]

\[\nabla J(\Theta)=<\frac{\partial J}{\partial \theta_1},\frac{\partial J}{\partial \theta_2},\frac{\partial J}{\partial \theta_3}>=<5,2,-12>\]

  • 单变量梯度:函数的微分,即斜率
  • 多变量梯度: 向量,指出函数给定点上升最快的方向
  • \[\nabla f(a)\]称点a的梯度,向量场

梯度下降法

\[\theta_1=\theta_0-\alpha \nabla J(\Theta)\]

  • J是关于\(\theta\)的函数
  • 初始位置为\(\theta_0\)
  • 从该点出发走到最低点(反梯度方向)
  • \(\alpha\)为步长,学习率

梯度下降法求解线性回归

代价函数
\[J(\Theta)=\frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2\]

  • $\frac{1}{2}\(用于抵消常量
    \)\(h_{\theta}(x^{(i)})=\theta_0+\theta_1 x^{(i)}\)$

得到代价函数:

\[J(\Theta)=\frac{1}{2m}\sum_{i=1}^m(\theta_0+\theta_1 x^{(i)}-y^{(i)})^2\]

\[\theta_0:\frac{\partial J}{\partial \theta_0}\frac{1}{m}\sum_{i=1}^m(\theta_0+\theta_1 x^{(i)}-y^{(i)})\]
\[\theta_1:\frac{\partial J}{\partial \theta_1}\frac{1}{m}\sum_{i=1}^m(\theta_0+\theta_1 x^{(i)}-y^{(i)})*x^{(i)}\]

x_train = np.array([[2.5], [3.5], [6.3], [9.9], [9.91], [8.02],
                    [4.5], [5.5], [6.23], [7.923], [2.941], [5.02],
                    [6.34], [7.543], [7.546], [8.744], [9.674], [9.643],
                    [5.33], [5.31], [6.78], [1.01], [9.68],
                    [9.99], [3.54], [6.89], [10.9]], dtype=np.float32)

y_train = np.array([[3.34], [3.86], [5.63], [7.78], [10.6453], [8.43],
                    [4.75], [5.345], [6.546], [7.5754], [2.35654], [5.43646],
                    [6.6443], [7.64534], [7.546], [8.7457], [9.6464], [9.74643],
                    [6.32], [6.42], [6.1243], [1.088], [10.342],
                    [9.24], [4.22], [5.44], [9.33]], dtype=np.float32)

y_data = np.array([[2.5], [3.5], [6.3], [9.9], [9.91], [8.02],
                    [4.5], [5.5], [6.23], [7.923], [2.941], [5.02],
                    [6.34], [7.543], [7.546], [8.744], [9.674], [9.643],
                    [5.33], [5.31], [6.78], [1.01], [9.68],
                    [9.99], [3.54], [6.89], [10.9]], dtype=np.float32)

plt.plot(x_train, y_train, 'bo',label='real')
plt.plot(x_train, y_data, 'r-',label='estimated')
plt.show()

png

2020/02/21 posted in  吴恩达_机器学习

1.1 机器学习

机器学习的应用

  • 数据库挖掘。机器学习被用于数据挖掘的原因之一是网络和自动化技术的增长,这意味着,我们有史上最大的数据集比如说,大量的硅谷公司正在收集web上的单击数据,也称为点击流数据,并尝试使用机器学习算法来分析数据,更好的了解用户,并为用户提供更好的服务。这在硅谷有巨大的市场。再比如,医疗记录。随着自动化的出现,我们现在有了电子医疗记录。如果我们可以把医疗记录变成医学知识,我们就可以更好地理解疾病。再如,
  • 计算生物学。还是因为自动化技术,生物学家们收集的大量基因数据序列、DNA序列和等等,机器运行算法让我们更好地了解人类基因组,大家都知道这对人类意味着什么。再比如,工程方面,在工程的所有领域,我们有越来越大、越来越大的数据集,我们试图使用学习算法,来理解这些数据。另外,
  • 机械应用。有些人不能直接操作。例如,我已经在无人直升机领域工作了许多年。我们不知道如何写一段程序让直升机自己飞。我们唯一能做的就是让计算机自己学习如何驾驶直升机。
  • 手写识别。现在我们能够非常便宜地把信寄到这个美国甚至全世界的原因之一就是当你写一个像这样的信封,一种学习算法已经学会如何读你信封,它可以自动选择路径,所以我们只需要花几个美分把这封信寄到数千英里外。

机器学习

在机器学习的历史上,一共出现了两种定义。

  • 1956 年,开发了西洋跳棋 AI 程序的 Arthur Samuel 在标志着人工智能学科诞生的达特茅斯会议上定义了 “机器学习” 这个词,定义为,“在没有明确设置的情况下,使计算机具有学习能力的研究领域”。

  • 1997 年,Tom Mitchell 提供了一个更现代的定义:“如果用 P 来测量程序在任务 T 中性能。若一个程序通过利用经验 E 在 T 任务中获得了性能改善,则我们就说关于任务 T 和 性能测量 P ,该程序对经验 E 进行了学习。”

例如:玩跳棋。

E = 玩很多盘跳棋游戏的经验

T = 玩跳棋的任务。

P = 程序将赢得下一场比赛的概率。

分类

一般来说,任何机器学习问题都可以分配到两大类中的一个:

有监督学习 supervised learning 和无监督学习 unsupervised learning。

简单的说,监督学习就是我们教计算机去做某件事情,无监督学习是我们让计算机自己学习。

img

监督学习

在监督式学习中,首先有一个数据集,并且已知正确的输出是什么,且输入和输出存在关联。 监督学习问题分为“回归 Regression”和“分类 Classification”问题。

在回归问题中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到某个连续函数。例如给定一个人的照片,根据照片预测年龄,这就是一个回归的问题。

img

在分类问题中,我们试图预测离散输出中的结果。换句话说,我们试图将输入变量映射到离散类别中。例如给予患有肿瘤的患者,我们必须预测肿瘤是恶性的还是良性的。

img

无监督学习

无监督学习使我们能够很少或根本不知道我们的结果应该是什么样子。我们可以从数据中得出结构,我们不一定知道变量的影响。 我们可以通过基于数据中变量之间的关系对数据进行聚类来推导出这种结构。 在无监督学习的情况下,没有基于预测结果的反馈。无监督学习可以分为“聚类”和“非聚类”。

聚类:获取1,000,000个不同基因的集合,并找到一种方法将这些基因自动分组成不同变量的相似或相关的组,例如寿命,位置,角色等。

img

非聚类:“鸡尾酒会算法”,允许您在混乱的环境中查找结果。 (即在鸡尾酒会上识别来自声音网格的个人声音和音乐)。

2020/02/21 posted in  吴恩达_机器学习

淘宝用户行为分析

理解数据

UserBehavior是阿里巴巴提供的一个淘宝用户行为数据集,数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。(数据来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=649)

列名称 说明
用户ID 整数类型,序列化后的用户ID
商品ID 整数类型,序列化后的商品ID
商品类目ID 整数类型,序列化后的商品所属类目ID
行为类型 字符串,枚举类型,包括('pv', 'buy', 'cart', 'fav')
时间戳 行为发生的时间戳

其中行为类型下对应行为为:

行为类型 说明
pv 商品详情页pv,等价于点击
buy 商品购买
cart 将商品加入购物车
fav 收藏商品

总计100,150,807条数据集,本文截取397118条数据作为数据集进行分析。

提出问题

AARRR模型

采用AARRR漏斗模型拆解用户进入APP后的每一步行为。AARRR模型是根据用户使用产品全流程的不同阶段进行划分的,针对每一环节的用户流失情况分析出不同环节的优化优先级,主要通过以下个各阶段来进行分析:

各阶段主要包括的指标有:

  • 用户获取
    1. 渠道到达量(曝光率)
    2. 渠道转化率
    3. 渠道ROI,投资回报率,利润/投资

(日应用下载量,日新增用户数,获客成本,一次会话用户数占比)

  • 用户活跃
    1. 活跃用户占比
    2. 用户会话session次数
    3. 用户访问时长
    4. 用户平均访问次数
  • 用户留存
    1. 次日/7日留存率
  • 营收
    1. 付费用户数
    2. 付费用户占比
    3. ARPU:某段时间内每位用户平均收入
    4. 客单价:销售总额/顾客总数(没有时间维度)
    5. LTV:用户生命周期价值
    6. LTV=ARPU*1/流失率
  • 传播
    1. k因子:每个用户带来几个新用户
    2. 用户分享率
    3. 活动/邀请曝光量

RFM模型

RFM模型是衡量客户价值和客户创利能力的重要工具和手段。模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱3项指标来描述该客户的价值状况。

  • 最近一次消费 (Recency)
  • 消费频率 (Frequency)
  • 消费金额 (Monetary)

根据三个维度指标数据,建立度量机制可将用户数据组合得到价值客户的体系。

  • 重要价值客户(111):最近消费时间近、消费频次和消费金额都很高,必须是VIP啊!
  • 重要保持客户(011):最近消费时间较远,但消费频次和金额都很高,说明这是个一段时间没来的忠诚客户,我们需要主动和他保持联系。
  • 重要发展客户(101):最近消费时间较近、消费金额高,但频次不高,忠诚度不高,很有潜力的用户,必须重点发展。
  • 重要挽留客户(001):最近消费时间较远、消费频次不高,但消费金额高的用户,可能是将要流失或者已经要流失的用户,应当基于挽留措施。

本文分析结构

本文根据上述模型及电商中常用指标,建立如下分析结构体系: 淘宝用户行为分析.xmind

数据清洗

选择子集,列名重复,删除重复值,缺失值处理

mysql中导入,未出现异常数据,结果总计397290

select COUNT(*) from userbehaivor;

一致化处理

将时间戳转化为可识别日期函数

ALTER TABLE UserBehavior ADD COLUMN datentime TIMESTAMP(0) NULL;
UPDATE UserBehavior
SET datentime = FROM_UNIXTIME(timestamps);

ALTER TABLE UserBehavior ADD COLUMN dates CHAR(10) NULL;
UPDATE UserBehavior
SET dates = SUBSTRING(datentime FROM 1 FOR 10);

ALTER TABLE UserBehavior ADD COLUMN time CHAR(10) NULL;
UPDATE UserBehavior
SET time = SUBSTRING(datentime FROM 12 FOR 8);

ALTER TABLE UserBehavior ADD COLUMN hours CHAR(10) NULL;
UPDATE UserBehavior SET hours = SUBSTRING(datentime FROM 12 FOR 2);

结果排序,异常值处理

将结果排序未有异样,本数据集包含了2017年11月25日至2017年12月3日之间数据,查看时间值。

select max(dates),min(dates) from userbehavior;

结果显示出现异常值。

max(dates) MIN(dates)
2017-12-03 2017-09-11

对超过时间范围数据进行删除。

DELETE  from userbehavior where datentime <'2017-11-25 00:00:00' or datentime > '2017-12-04 00:00:00';

共删除172条数据,总计397118条数据。清洗完数据如图所示

模型构建

流量指标

1. 总计PV,UV,PV/UV
SELECT  COUNT(DISTINCT 用户id)AS 'UV',SUM(case WHEN 行为类型='pv'then 1 else 0 end) as 'PV',
(SUM(case WHEN 行为类型='pv'then 1 else 0 end)/COUNT(DISTINCT 用户id)) as 'PV/UV'FROM userbehavior;
UV PV PV/UV
3879 356827 91.9894
2. 日期维度下PV,UV,PV/UV
SELECT  COUNT(DISTINCT 用户id)AS 'UV',
SUM(case WHEN 行为类型='pv'then 1 else 0 end) as 'PV',
(SUM(case WHEN 行为类型='pv'then 1 else 0 end)/COUNT(DISTINCT 用户id)) 
as 'PV/UV',dates FROM userbehavior GROUP BY dates;

3. 时间维度下PV,UV,PV/UV
SELECT  COUNT(DISTINCT 用户id)AS 'UV',
SUM(case WHEN 行为类型='pv'then 1 else 0 end) as 'PV',
(SUM(case WHEN 行为类型='pv'then 1 else 0 end)/COUNT(DISTINCT 用户id))
as 'PV/UV', hours FROM userbehavior GROUP BY hours;

4. 跳失率

跳失率,是指显示顾客通过相应入口进入,只访问了一个页面就离开的访问次数占该页面总访问次数的比例。

select COUNT(DISTINCT 用户id) as 点击用户数 ,count(用户id) as 总访问用户数, COUNT(DISTINCT 用户id)/COUNT(用户id) as 跳失率 
from userbehavior where 行为类型='pv'

用户行为指标

1. 总计点击,收藏,添加购物车,购买用户情况
select
SUM(case when 行为类型='pv' then 1 else 0 end) as '点击用户',
SUM(case when 行为类型='fav' then 1 else 0 end) as '收藏用户',
SUM(case when 行为类型='cart' then 1 else 0 end) as '添加购物车用户',
SUM(case when 行为类型='buy' then 1 else 0 end) as '购买用户'
from userbehavior


2. 日期维度下点击,收藏,添加购物车,购买用户情况
select
SUM(case when 行为类型='pv' then 1 else 0 end) as '点击用户',
SUM(case when 行为类型='fav' then 1 else 0 end) as '收藏用户',
SUM(case when 行为类型='cart' then 1 else 0 end) as '添加购物车用户',
SUM(case when 行为类型='buy' then 1 else 0 end) as '购买用户',
dates
from userbehavior group by dates


3. 时间维度下点击,收藏,添加购物车,购买用户情况
select
SUM(case when 行为类型='pv' then 1 else 0 end) as '点击用户',
SUM(case when 行为类型='fav' then 1 else 0 end) as '收藏用户',
SUM(case when 行为类型='cart' then 1 else 0 end) as '添加购物车用户',
SUM(case when 行为类型='buy' then 1 else 0 end) as '购买用户',
hours
from userbehavior group by hours


4. 购买数前十用户行为细分
select
DISTINCT 用户id,
SUM(case when 行为类型='pv' then 1 else 0 end) as '点击用户',
SUM(case when 行为类型='fav' then 1 else 0 end) as '收藏用户',
SUM(case when 行为类型='cart' then 1 else 0 end) as '添加购物车用户',
SUM(case when 行为类型='buy' then 1 else 0 end) as '购买用户'
from userbehavior group by 用户id order by 购买用户 desc limit 10


产品销售指标

1. 商品销售情况
SELECT
商品id,
SUM(case when 行为类型='buy' then 1 else 0 end ) as '购买数量'
from userbehavior group by 商品id 
having 购买数量>0
ORDER BY 购买数量 desc


2.  商品类目销售情况
SELECT
    商品类目id,
    SUM( CASE WHEN 行为类型 = 'buy' THEN 1 ELSE 0 END) AS '购买数量'
FROM userbehavior GROUP BY 商品类目id
HAVING 购买数量 >0  ORDER BY 购买数量 DESC


3.  复购率
#建立视图窗口
CREATE VIEW b
as 
SELECT 用户id,
COUNT(行为类型) as 购买次数
from userbehavior 
where 行为类型='buy'
GROUP  BY 用户id
having 购买次数>1
#计算复购率
select (select count(*) from b)/(select count(DISTINCT 用户id) from userbehavior where 行为类型='buy') as '复购率' 
from userbehavior limit 1
# 购买次数分布情况
select `购买次数`,count(*)from b
group by 购买次数 ;


客户价值指标(RFM模型)

#建立r值制图
create view r as
SELECT 用户id,max(dates) AS `近期购买时间`
FROM userbehavior
WHERE (行为类型 = 'buy') GROUP BY 用户id

#划分r值标准视图
create view r等级划分 as
SELECT
    用户id,近期购买时间,
(case  when datediff('2017-12-04',近期购买时间)<=2 then 5 
       when datediff('2017-12-04',近期购买时间)<=3 then 4
       when datediff('2017-12-04',近期购买时间)<=4 then 3
       when datediff('2017-12-04',近期购买时间)<=6 then 2
       else 1 end) as 'R'
FROM r;
#f值计算同视图b,建立f等级划分视图
create view F等级划分
as
select userid, 购买次数,(case  when 购买次数<=2 then 1 
when 购买次数<=4 then 2 
when 购买次数<=8 then 3
when 购买次数<=10 then 4 
else 5 end) as 'F' from b

select r等级划分.*,f等级划分.F`,
(case
when ((r等级划分.R >= 3.5847) and (f等级划分.F >= 1.9972)) then '重要高价值客户' 
when ((r等级划分.R < 3.5847) and (f等级划分.F >= 1.9972)) then '重要唤回客户'
when ((r等级划分.R >= 3.5847) and (f等级划分.F < 1.9972)) then '重要深耕客户' 
when ((r等级划分.R < 3.5847) and (f等级划分.F < 1.9972)) then '重要挽留客户' 
end) AS `客户分类` 
from r等级划分,f等级划分` where (r等级划分.用户id` = f等级划分.用户id)


SELECT 客户分类,count(*) as 客户数量 from rfm 
GROUP BY 客户分类

可视化分析

流量指标

幻灯片1

总时间维度下访客量达35万,合集访客数为2万人次,近平均每人次访问116次。

幻灯片2

在时间维度下,每日晚20:00-22:00时间区间内,访客量,访客数以及平均访问达到日最高值,在白天时间内15:00左右的访客量,访客数以及平均访问相比较高。
幻灯片3

日期维度下,访客量,访客数量在12月2日及3日较高,而平均访问数量较少,说明这段时间内使用用户量较大,多次频繁操作用户较少,12月2日和3日为周末时间段即双休日下访问人数增多。同时,在12月1日周五时间点下,用户平均访问达最高值。

幻灯片4

“跳失率”是指顾客通过相应入口进入,只访问了一个页面就离开的访问数占总访问次数的比例。跳失率为1.085%,跳失率较小,转化率较好。

用户行为指标

幻灯片5

日期维度下,2017年12月2日及3日(周末时间段)用户的购买,收藏,点击及添加购物车的次数普遍大于工作日时间段,数据时间节点有限,对于周期性的估算无法判定。

幻灯片6

在时间维度下,用户在晚间(以19:00为下班时间段),用户各类行为呈上升趋势,至十点出现下滑,在白天时间中,10:00及16:00相比较各指标较高。

幻灯片7

参考AARRR模型建立漏斗图,用户通过访问页面至添加购物车或收藏行为转为率为8.99%,由购物车或收藏至购买转化率达8.99%,对购物车及收藏两行为细分得到。
幻灯片8

用户通过访问页面至收藏行为转为率为2.79%,由收藏至购买转化率达82.61%;用户通过访问页面至添加购物车行为转为率为6.20%,由购物车至购买转化率达37.15%.发现用户通过点击至添加购物车转为虽高于收藏转化率,但购买转化率上,由收藏至购买的转化率可达82.61%而购物车的转化率仅为37.15%。
幻灯片9

分析购买量TOP10用户数据,用户添加购物车及收藏只达15.01%,而转化率达125.51%。购买力或购物欲较为强的这一类消费者多数不通过收藏或者购物车购买。

产品销售指标

幻灯片10

产品总体复购率达到67.33%,复购水平总体较好,多数用户复购次数为2-5。
幻灯片11

在商品类目销售下,商品类目为2735466,4145813,1464116的商品销售最高,最高销售次数达142次。

幻灯片12

在商品id销售下,商品id为4401268,3122135,3991727的商品销售最佳,最高销售次数为10次。

客户价值指标

幻灯片13

幻灯片14

根据RFM模型显示,在总计1816购买客户中,重要高价值客户占比45%,占比较高,其次为重要深耕用户。

建议与对策

针对用户行为问题使用AARRR漏斗模型进行业务分析,结合上述分析的业务指标,提出修改建议。

获取客户(Acquisition)

  1. 周末时间段以及每日19点起至11点的用户访问,点击,购买的较为高,大部分用户喜欢在周末或者晚间时间进行购物,可以在这些时间段开展相对一些促销活动获取用户关注。
  2. 淘宝作为国内电商第一平台,用户量大,可以多参与平台活动,提高曝光度,获取新用户

激活用户(Activation)

  1. 相比较而言,收藏商品的用户至购买的转化率较高,可以利用相关优惠券或其他增加用户收藏商品的频率。
  2. 点击量较大的情况下,购买数量占比较少,说明用户花费较为多的时间在寻找商品。商家可以通过产品关键词的准确率,提高转化率。
  3. 数据显示,购买能力较强的用户直接购买的转化率更高,商家可以精简下单步骤,提高用户购买体验。

提高留存(Retention)

  1. 对于重要价值客户留存率高;对这部分高质量高粘性客户,应该加强维持呵护,利用购买积分等活动增加粘合度。
  2. 对于重要唤回客户近期没有消费过,有可能发展为流失的重要客户,有可能被竞争对手拉过去了,针对这部分客户采取赠送、奖励、红包等方式唤回,刺激消费,重点转化。
  3. 对于重要深耕客户,根据这部分用户可以根据以往的消费记录,个性化推荐,增加优惠券刺激消费,增加粘性。
  4. 对于重要挽留客户,商家应找寻流失原因进行整改。

增加收入(Revenue)

  1. 产品复购率为67.33%,复购率较好,为进一步提高复购率,商家可以从产品本身更新换代,修改不足,进行升级。
  2. 做好售后相关事宜,提高用户的好感度。
  3. 策划营销内容上推陈出新,吸引用户购买或者回购。

推荐(Refer)

  1. 借鉴拼购思维,提高用户量。
  2. 利用微信等社交媒体进行传播。利用消费者打卡,分享,集赞的方式获取更多用户。
2020/02/21 posted in  项目