第四章 打造你的武器库:分析方法及示例

4.1 数据分析的武器库

图4.1数据分析的武器库

图4.1数据分析的武器库

依据使用场景和分析目标不同,商业数据分析的武器可以分为基础分析和进阶分析两大类,基础分析的六大武器是日常分析中最经常使用的,它们可以细分成三小类,分别是:

  1. 业务分析方法:趋势对比和下钻分拆两个核心方法,主要应用于经营分析和问题诊断等。
  2. 用户分析方法:以漏斗分析,队列分析和用户分层为代表,用于解决用户经营中的拉新获客,留存促活,流失预警等问题。
  3. 可视化分析:以数据图形解决各类分析问题,在武器库中属于比较特殊的横向工具,它既可以独立作业输出数据产品,也可以在其他方法中辅助输出分析结果。本章中我们会看到可视化分析在其他几个工具中的结合使用,而在第五章中我们将做单独介绍打造数据产品的方法。
  • 业务分析方法:趋势对比和下钻分拆两个核心方法,主要应用于经营分析和问题诊断等。
  • 用户分析方法:以漏斗分析,队列分析和用户分层为代表,用于解决用户经营中的拉新获客,留存促活,流失预警等问题。
  • 可视化分析:以数据图形解决各类分析问题,在武器库中属于比较特殊的横向工具,它既可以独立作业输出数据产品,也可以在其他方法中辅助输出分析结果。本章中我们会看到可视化分析在其他几个工具中的结合使用,而在第五章中我们将做单独介绍打造数据产品的方法。
  • 业务分析方法:趋势对比和下钻分拆两个核心方法,主要应用于经营分析和问题诊断等。
  • 用户分析方法:以漏斗分析,队列分析和用户分层为代表,用于解决用户经营中的拉新获客,留存促活,流失预警等问题。
  • 可视化分析:以数据图形解决各类分析问题,在武器库中属于比较特殊的横向工具,它既可以独立作业输出数据产品,也可以在其他方法中辅助输出分析结果。本章中我们会看到可视化分析在其他几个工具中的结合使用,而在第五章中我们将做单独介绍打造数据产品的方法。
  • 基础分析方法主要目标是描述与诊断,而进阶分析方法则以预测作为主要目标。这类方法通常也称为机器学习方法,它是目前人工智能应用的基础,系统使用机器学习算法来处理大量历史数据,并识别数据模式,从而在没有明确指令的情况下对未来数据做出预测和判断。本章所介绍的回归,分类,时间序列,产品推荐以及聚类分析,都是其中最有代表性的方法。

    数据分析的武器众多,随之而来的是当遇到实际的商业问题,在这些方法之间该如何做出选择?这里要遵循三个原则:科学,可解释性和敏捷。

    科学是选择分析方法最重要的原则,它是指基于可用的数据,选择严谨有效的方法解决问题。用户类的分析方法依赖于底层数据能够形成“一个用户一行数“的分析表,如果企业没有底层数据建设,无法为用户设计唯一可识别的ID,那么用户分析类的方法都将无法实施应用。进阶类的方法中回归和分类预测都是以输入变量X去预测输出变量Y,但分类预测中的Y取值是0和1,而非连续型的数字,如果强行使用回归方法预测,也会有违背统计逻辑的谬误。

    可解释性指在保持同等科学严谨的前提下,优先选择更能清晰解释分析逻辑的方法。比如同样是分析哪些用户会偏好某类产品,基于规则的用户分层画像,以及通过分类预测和产品推荐方法,都能得到相似的数据产出。但从可解释性上,理解分类预测和产品推荐都要有一定的统计知识和概念。分层画像类的输出“在一线城市生活的年轻妈妈更喜欢这类产品”,和分类预测的典型输出“其他因素保持不变情况下,一线城市用户比非一线城市用户喜欢这类产品的概率提高了15%”,前者明显具有更强的可解释性。如今AI驱动的黑盒算法模型日益增多,决策者对其背后原理的不理解更加深了数据沟通的难度,因此在科学原则的前提下,应该尽可能选择可解释性更强的方法。

    敏捷是在软件开发过程中被广泛应用的思路,核心想法是从产品驱动变成价值驱动,提倡的是尽快的给客户交付可以使用的产品,并且尽早的让产品投入市场来验证商业价值。商业数据分析的应用,从本质上也是投入人力和物力去实现交付的过程,和营销活动一样也要有投入产出比的考量。在分析方法的选择上尽量避免用复杂的分析模型或者是长篇大论的专题分析,要选择“小步快跑”的方式,先看大数去判断方向和趋势,遇到需要甄别的难点再做更复杂的分析。除非有比较明确的业务场景,否则尽量避免在问题诊断上使用模型类的方法,这些开发周期长,且单个模型很可能无法在其他场景中复用,会造成极大的人力浪费。

    4.2 业务分析:观前后,看趋势,做拆分

    本节源自一次真实的京东 618 经营复盘。它的价值不在某个具体函数,而在于把"怎么判断一个活动到底好不好"这门日常运营功夫,提炼成一套可复用的对比框架与一条口径纪律。

    ============ 4.2.1 ============

    4.2.1 趋势对比:用"多把尺子"判断业务好坏

    ① 目的:找出异动,并判断它是否和业务动作相关

    趋势对比的重点,是找出是否有脱离趋势的"异动",并且通过合理的对比方式,判断异动是否和业务动作有对应关系。需要明确的是:业务分析场景中的趋势对比,一般不做 AB 实验、也不做统计显著性检验,而是从宏观层面判断业务走势——这是它与严谨统计研究最大的分野,也是后面所有方法的前提。

    ② 怎么发现异动:可视化优先

    发现异动最简单可靠的办法,是先画出来看。把一段时间的数据画成折线图,肉眼往往比任何公式都更快定位到那段"不对劲"的走势。

    80天点击率折线图:肉眼可见6月中旬的明显低谷
    图 4.3 把 80 天的点击率画成折线图,肉眼一眼就能看到 6 月中旬那段明显偏离正常波动的"不对劲"走势。这就是可视化比公式更快的地方。

    看到下跌,下一步不是急着下结论,而是问一句:这是业务问题,还是正常的波动? 要回答它,靠的不是更复杂的公式,而是——多找几把"尺子"来比。

    可选补充 · 不是主线

    想量化"异动边界"?IQR 是可选手段

    如果你希望对"多低算异常"给出一个量化门槛,可以用四分位距法(IQR):用 QUARTILE.INC 求出 Q1、Q3,以 [Q1−1.5×IQR, Q3+1.5×IQR] 作为正常区间,落在区间外的视为离群值。但务必注意:这是可选的锦上添花,不是业务判断的必需步骤。实战中,经验 + 可视化通常已经足够,绝大多数业务复盘并不会真的去算 IQR。

    原点击率数据:可用IQR方法计算离群值边界
    图 4.3(原) 用 IQR 方法标出异常边界:6 月 11–12 日两天数据低于下限(7.78%),属于可进一步分析的离群值。对不需要量化门槛的业务场景,这张图不是必需。

    ③ 怎么判断是不是真问题:三把尺子对比框架(京东 618 案例)

    判断异动是不是真问题,靠的不是更复杂的公式,而是多找几把对照的尺子。业务复盘里最实用的,是这三把:

    尺子一 · 环比

    和邻近周期比

    本周对比上周、本周末对比上周末。它回答的是"最近是不是变了"。但只看环比有个陷阱——容易把"季节性 / 大促"造成的波动误当成业务问题。

    尺子二 · 同比

    和更大周期的同一段比

    最常见的是年同比:如果去年同一天也出现了同样的下跌,那它很可能只是周期性规律,而非巨大业务问题。

    尺子三 · 动态对比

    大促 / 重点时段的必需尺子

    在 VUCA 环境里,宏观事件会制造无法用"上一周 / 去年同期"解释的数据。例如某酒业集团总结 21 年 6 月 9 日开始的夏日狂欢"销量较前一周上升 4.5 倍、较去年同期上升 4.9 倍",数据看似无懈可击——但它忽略了欧洲杯于 6 月 11 日开幕直接撑高了这段数据,使其根本无法与上周或去年同期直接相比。因此,凡是涉及大促或重点时间段,动态对比是做出正确判断的必要条件。

    落到操作上,动态对比常拆成三种具体做法:

    ① 目标对比:KPI 进度 vs 时间进度

    设定了 KPI 就要看完成率:比如 618 计划完成 600 万交易额,当时间进度已过 50% 而目标只完成 30%,就需要调整策略、加快速度。

    ② 行业对比:和标杆、竞品、行业均值比

    与行业头部企业或平均水平对比,评估自身状态,看清是"行业都在跌"还是"只有我在跌"。

    ③ 类似项目对比:和同量级活动比

    引入同类的大规模活动(如去年双 11)做横向标尺——同样是全年最大促销,今年 618 能否超越去年双 11,本身就是一把好尺子。

    作者批注 头两年的互联网商分工作,我可能有 30% 的时间都花在了怎么找尺子,以及如何给业务老板和自己老板解释为什么要选这些尺子上。

    框架落地:京东 618 复盘的三步

    下面以某品牌京东 618 经营复盘为例,看这三把尺子怎么串进一个可操作的框架。背景:今年 618 于 6 月 1 日开启(同步发新版 App + 预热),6 月 10 日正式启动,6 月 18 日达峰值。

    第一步 · 环比选基期。 活动后取 6 月 10–18 日销量;活动前的对比基期要避开 6 月 1–9 日预热期,改用 5 月整月销量作基数——否则预热期的自然爬升会被误算成"活动效果"。

    第二步 · 同比 + 动态对比(阶段对应)。 今年与去年同活动做年同比,但 21 年与 22 年的活动时程并不完全吻合(21 年预热短、抢货期长)。因此除整体年同比外,必须把"预热期 / 抢货期 / 峰值日"三个阶段拆开分别对比:

    阶段21 年统计时间22 年统计时间
    预热期6 月 1–3 日6 月 1–9 日
    抢货期6 月 4–17 日6 月 10–17 日
    峰值日6 月 18 日6 月 18 日
    表 4.1 不同大促活动的动态对比(阶段拆分)

    第三步 · 用动态对比的三种拆法交叉验证。 在环比、同比之外,再用目标对比、行业对比、类似项目对比(见上方尺子三的三个拆法)补上几把尺子,交叉验证结论。

    618大促销售评估对比:多尺子并列
    图 4.4 应用多种对比的示例。这种结构与第二章的指标体系相辅相成:配合下级指标分拆,这张表既能判断整体趋势,也能快速定位问题来源。

    ④ 对比铁律:口径统一 + 日均化

    尺子再多,如果口径不一,结论照样是错的。任何对比,都要先统一口径,再做日均化。

    一致性:对比中涉及的用户、产品、销售数据,统计口径必须一致;计量单位、计算方法、公式都要统一。日均化:由于各把尺子的时间范围不同(如活动 9 天 vs 5 月 31 天),必须全部折算成日均数据才能比。用 9 天的活动总量去环比 31 天的月度总量,必然得出荒谬结论。

    作者批注 什么是一个订单?这个问题看起来很简单,但在一家公司可能有不同的定义,描述性的口径到实际 SQL 之间的差别,懂得都懂。
    时期累计销售额天数日均销售额
    22 年活动期(6.10–18)468,225952,025
    22 年抢货期(6.10–17)443,880855,485
    22 年峰值日(6.18)107,8821107,882
    活动前(5.1–5.31)1,355,2273143,717
    21 年 618(6.4–18)684,1501545,610
    21 年抢货期(6.4–17)648,9841446,356
    21 年峰值日(6.18)93,153193,153
    21 年双 11 日均(11.1–11)593,1201153,920
    21 年双 11 峰值(11.11)111,8821111,882
    表 4.2 各时期销售额日均化结果(累计销售额 ÷ 天数)
    对比项22 年日均对比基期日均变化
    活动期 vs 活动前(环比)52,02543,717+19.0%
    活动期 vs 21 年 618(年同比)52,02545,610+14.1%
    抢货期 vs 21 年抢货期55,48546,356+19.7%
    峰值日 vs 21 年峰值日107,88293,153+15.8%
    活动期 vs 21 年双 11 日均52,02553,920−3.5%
    峰值日 vs 21 年双 11 峰值107,882111,882−3.6%
    表 4.3 日均化后的关键对比(对应上方洞见百分比)
    index-match 准备:标注时期与天数
    图 4.6 在分析框架上方标注对应时期与天数(天数用于后续算日均,完成后可隐藏以提升整洁度)。

    框架跑通后,本次 618 能得到几个扎实的洞见:销量整体增长明显(环比 +19%、年同比 +14.1%),抢货期与峰值期较上年有类似幅度增长(抢货 +19.7%、峰值 +15.8%),但对比去年双 11 略弱(整体 −3.5%、峰值 −3.6%)。——这就自然引出下一个问题:为什么比去年双 11 差?是市场整体走势,还是我们折扣力度不足? answer 要靠下钻。

    💡 工具提示:用 Index + Match 把数据拉平成可比格式(可跳过,不影响理解)
    上面这套对比看似繁琐(多尺子 + 日均处理),但本质是把散落各处的数据,按统一维度"拉平",好让同一套公式能横向套用。Excel 的 INDEX + MATCH 正是干这件事的高效工具:给定"活动期"和"指标"两个坐标,自动从另一张源表里取数。
    应用 Index + Match 函数来找到每列数据对应的销售额,并除以它所对应的天数,即可得到我们分析所用的数据。Index 函数的基本语句是 INDEX(array, row_num, [column_num]),其中 array 表示所要查找的数据区域范围,而 row_num 则是对应所要返回数据的行号或者列号。Match 函数就用于找到对应所需要的行号或者列号,它可以被看做是 VLOOKUP 的增强版,其基本语句是 MATCH(lookup_value, lookup_array, [match_type]),其中 lookup_value 是所要查找的值,而 lookup_array 是所需要查找的数据范围,而 match_type 则是匹配类型,默认是 1 表示近似匹配,选择 0 则是精确匹配,这也和 VLOOKUP 非常类似。
    图4.7 趋势分析 index+match 函数应用
    图 4.7 Index + Match 函数应用示例。
    以销售额的公式为例,取销售额对应的公式为: INDEX($A$1:$B$10, MATCH(E$9, $A:$A, 0), MATCH($D$13, $1:$1, 0)) / E10 其中 $A$1:$B$10 表示所要查找的数据位置,这部分数据通常存储在另一张工作表,此处为了清楚地展示公式故列在此处。接下来是两个 Match 函数来锁定我们需要的数据:一个是在数据源的 A 列中找到和 E9(活动期)精确匹配的值,另一个则是在数据源的第 1 行中找到和 D13(销售额)所精确匹配的值,两者都满足的时候则返回对应的数据位置(468225),再将此数据除以 E10(9)则得到了 52,025 这个活动期的日均销售额。在上述公式中通过绝对位置(销售额)和相对位置(时间和天数)的锁定,只需要将公式向右拖拽,即可得到所有对应时期的销售额日均数值。相关的对比值通过公式计算好,对于接下来要分拆的指标(比如用户数、流量等),只需要遵循类似的数据结构去获取数据,即可通过快速改动公式的方式就能生成所有的日均和相对变化值。
    更简洁地,公式形如 INDEX(数据区, MATCH(活动期, 数据源列, 0), MATCH(指标, 数据源行, 0)) / 天数。MATCH 的第三参数取 0 表示精确匹配(类似 VLOOKUP 的精确匹配)。通过锁定"指标"为绝对引用、"时期/天数"为相对引用,公式向右拖拽即可批量生成所有时期的日均与相对变化值。
    —— 函数语法属 Excel 操作细节,非数据分析思维本身;非技术读者理解"拉平维度便于对比"这一目的即可。

    趋势分析的核心,就是通过时间趋势与合理对比,用结果指标判定业务好坏。在此之上,下一步是下钻分拆:用不同维度与指标,把问题归并、拆解,找到解法。


    ============ 4.2.2 ============

    4.2.2 下钻分拆

    如第三章数据分析思维所介绍,下钻分拆是基于商业认知,使用逻辑树和 MECE 原则逐层拆解的过程。它不局限于单一维度,可通过多维组合节点进行分叉拆分。拆分时,优先找出占比或对比差别最大的维度继续下钻;若差别较小,则不再细分。能产生显著性差别的节点被保留,继续细分,直到分不出差别为止。

    第一层:从指标体系锁定异动来源

    极端波动(如 GMV 骤降 20% 以上)通常能快速锁定为单指标问题——例如访问用户数骤降,追查后发现是 App 版本迭代的 bug 导致部分机型无法打开。但这类大幅波动较少见;日常难点在第二层:量化各子类因素对整体波动的"贡献率"。

    场景一:子类与整体是"加和"关系

    各子类变化加和等于整体变化时,直接用"子类变化值 ÷ 整体变化值"得到贡献度。注意:各数据加总必须等于整体变化,且互不重叠(满足 MECE)。

    各渠道流量贡献表
    表 4.4 各渠道流量贡献表。2022 年 7 月对比 6 月,整体流量环比 +43.2 万。
    💡 工具提示:加和贡献度的计算过程
    贡献度的本质是「某一部分的变化 ÷ 整体的变化」。以表 4.4 的渠道流量为例,2022 年 7 月整体访问 UV 环比增加 43.2 万,各渠道贡献度计算如下:
    渠道6 月 UV7 月 UV环比变化(万)贡献度
    APP500505+5.05.0 / 43.2 = 11.6%
    微信300313+13.013.0 / 43.2 = 30.1%
    小红书244268.4+24.424.4 / 43.2 = 56.5%
    H5 分享链接4040.8+0.80.8 / 43.2 = 1.9%
    总计1,0841,127.2+43.2100.0%
    —— 注意:各渠道变化必须互不重叠且加总等于整体变化,满足 MECE 才能用此法。

    场景二:子类与整体是"相乘"关系

    若子类与整体为相乘关系(如 订单量 = 活跃用户数 × 转化率),可用乘积因子拆解:取自然对数把乘法转成加法,即 LN(订单量) = LN(DAU) + LN(访购率),再按各子类对数差值加权求出贡献度。例中整体订单增长 12.2%,DAU 贡献 5.6%、访购率贡献 6.6%(两项相加约 12.2%)。

    表4.3 乘积因子的影响计算
    表 4.5 乘积因子的影响计算。
    💡 工具提示:乘积因子拆解的计算过程
    当指标之间是相乘关系时,直接按「子类增长率 × 权重」拆分会重复计算交叉项。标准做法是先取自然对数,把乘法变成加法,再按对数差值的占比分配整体增长率。
    步骤操作
    1. 取对数LN(订单量8月) − LN(订单量7月) = [LN(DAU8月) − LN(DAU7月)] + [LN(访购率8月) − LN(访购率7月)]
    2. 求差值订单量 LN 差值 ≈ 0.12;DAU LN 差值 ≈ 0.05;访购率 LN 差值 ≈ 0.06
    3. 加权贡献某因子贡献度 = 该因子的 LN 差值 ÷ 总 LN 差值 × 整体增长率
    因子7 月8 月LN 差值差值权重贡献度
    订单量45,47851,0410.12100.0%+12.2%
    DAU491,790518,4900.050.05 / 0.12 = 45.8%45.8% × 12.2% ≈ 5.6%
    访购率9.25%9.84%0.060.06 / 0.12 = 54.2%54.2% × 12.2% ≈ 6.6%
    —— 因 LN 差值有舍入,贡献度相加可能与总增长率有 0.1% 以内的尾差。原始文字中「DAU 贡献 9.6%、访购率 2.6%」与表 4.5 截图数据不一致,已按截图修正。

    场景三:看子类在特征上是否偏离整体(TGI)

    下钻中也常需判断某子类在用户 / 产品特征上是否偏离整体,可使用 TGI 指数(目标群体指数)。其本质是「某标签在子类中的占比 ÷ 该标签在整体中的占比」,数值为 1.0 时表示与整体持平,大于 1.0 表示在该子类中更突出。行业中也常见把结果乘以 100 后写作 120/80 等水位线,本质一致,只是表达形式不同。

    图4.9 各会员年龄段的TGI指数
    图 4.9 各会员年龄段的 TGI 指数。颜色越偏红表示低于整体水平,越偏蓝表示高于整体水平。

    以图 4.9 中金会员 25–30 岁年龄段为例:该年龄段在金会员中占比 34%,在全体会员中占比 32%,TGI = 34% ÷ 32% = 1.06,接近 1.0,说明该特征没有明显偏离整体。而铂金会员 36–40 岁的 TGI 为 1.33(12% ÷ 9%),明显高于整体,是值得关注的人群特征。

    下钻的收口原则

    下钻是从宏观到微观的层层递进:先通过汇总层(周 / 月 / 日)对比找出显著变化的指标,再沿相关维度向下拆解——不必把每一层的维度都全量展现。在各种维度中,尽量去寻找"20–80 原则"里那 20% 的关键维度(头部城市、产品类别、用户群体),它们往往解释了 80% 的业务影响。

    4.3 用户分析:纵向(漏斗),横向(队列),全面(分层)

    4.3.1用户分析的核心概念:生命周期与终身价值

    在对业务的趋势分析和下钻分拆过程中,我们始终将所有用户视作完全相同的个体,比如在分析中发布了以往销售表现不好的产品,决定通过调整价格折扣来提升。在这种策略和分析的背后,是早期的技术和商业场景中都还无法支持让每个用户得到不同的折扣,这种千人一面背后就是资源的浪费和效率的低下。而在大数据资源和底层IT能力支持下,各家企业都开启了自己的会员体系,内部成立了CRM或者用户运营部门,资源的运营也更加精细。随之而来商业数据分析的视角也越来越多的从判断业务的整体趋势,到分析用户群体,并最终到达单个用户的粒度。本节所介绍的用户分析的三个方法,目标就是将用户视作不同群体,并能找到匹配各个群体的策略。

    三个方法分别对应三种视角:漏斗分析沿转化链路纵向追问"用户在哪一步流失";队列分析沿时间轴横向追问"同期用户是否留得住";用户分层则全面覆盖全量用户,追问"用户是谁、该怎么运营"。

    在围绕用户的经营和分析中,最常用来衡量每个用户不同的指标是终身价值(Lifetime Value,简称LTV)这个概念,它描述的是一个用户在与企业整个的生命周期中所为企业贡献的全部价值。比较简易的估算客户生命周期时长(lifespan,即首次到末次交易的时间跨度)的方式,是计算用户第一次交易和最后一次交易之间的时间差。在一些按月或者按年付费的服务(比如视频音乐会员,或者移动电信等服务商),可以通过用户开始使用和停止使用之间的时间计算。对于没有明确终点的场景(比如零售商超),则可以通过选定时间点倒推计算。将每个顾客在完整生命周期内的价值加总即可得到LTV值。不过如我们在用户分层中会提到,这个价值是否只对应于顾客的直接消费金额是值得商榷的,比如Freemium类服务的用户有很多都是免费用户,但并不代表这些用户的LTV就是零。

    图 4.10显示了一个完整的生命周期,它可分为四个阶段(1)潜在客户:注册浏览或者线下关顾,但还未产生交易的客户,(2)新客:完成首次交易的客户,(3)成长:完成2+次交易的客户,(4)流失:近期(根据行业和品类特点来确定时间)未有交易记录的客户。

    图 4.10 完整生命周期及三大分析方法 用户加入时间 → 客户价值 潜在客户 注册/浏览/关顾 新客 完成首次交易 成长 完成2+次交易 流失 近期无交易 漏斗分析:提升转化 识别流失环节与关键因子 队列分析:留存观察 同期群未来数周/月粘性 用户分层:精细运营 属性+行为标签精准投放 数据来源:京东×尼尔森《用户生命周期运营白皮书》(2019)及作者整理
    图 4.10 完整生命周期及三大分析方法

    图 4.10将三大方法对应到用户生命周期的不同阶段,回答三个不同的问题:漏斗分析纵向审视价值链路,拆解"浏览→注册→首单→复购"各关键节点的转化率,回答"用户在哪一步流失了",从而定位流失环节、识别关键因子并优化转化;队列分析以留存分析为代表,横向追踪同期加入的用户在未来数周或数月内对产品和服务的粘性,回答"用户留下来了吗";用户分层则从全局出发,基于属性与行为标签将全量用户划分为不同群体,回答"用户是谁、该怎么运营",支撑在流量不变的前提下通过精细化人群投放提升转化率。

    在京东与尼尔森于2019年联合发布的《用户生命周期运营白皮书》中,基于整体用户中潜在用户和流失用户占比,将平台经营的各品类分成了L,U和E型。啤酒,洗衣粉,牛奶乳品等均属于L型,这些品类潜在用户数量非常大,站内外拉新是品类用户运营的重点,宠物食品等品类则属于U型,流失用户占比相对较高,流失挽回是品类用户运营的重点,卫生用品和婴儿尿布属于E型,留存用户占比相对较高,存量用户的ARPU值提升是品类用户运营的重点。

    有了终身价值的理念,可以让用户经营能脱离短期获客的视角,不再只是短期用多低的成本拉来了大量的新客,而是用这些用户的终身价值去衡量获客过程中的长线ROI。苹果公司的iPhone产品可以说是个典型案例,在过去几年的产品更迭中,iPhone用户的复购率持续保持在85%以上,果粉们的这种热情直接造就了今天苹果的超高市值。长线ROI视角可以让企业重新衡量获客的有效性,重视用户留存和防流失,和建立用户分层,推进精细化运营。

    早期的多个商业研究都已经表明了,给已有顾客销售新产品成功概率会远高于给新顾客销售同样的产品,高LTV的顾客很多也是对企业的产品或者服务忠诚的顾客。而在如今流量红利逐渐消失,各大公司都在强调私域运营和存量运营的时候,LTV也必然会被更多的决策者所认可。

    4.3.2漏斗分析

    漏斗分析(Funnel Analysis),是将用户或者流量路径拟态成为漏斗,即从顶层宽大的入水口到底层细小的出水口,从而识别各层级流转效率的分析方法。漏斗分析最早见于研究用户购买流程的AIDMA模型,它描述了从对品牌注意的人群(数量最大),到最终采取行动购买的顾客。

    Attention 注意引起潜在用户关注
    Interest 兴趣激发了解产品意愿
    Desire 欲望产生购买/使用动机
    Memory 记忆形成品牌认知与记忆
    Action 行动完成最终转化行为
    图 4.11 AIDMA漏斗模型

    有效的漏斗分析通常分为三个步骤实现,第一步是设定所要分析的转化路径,比如在日常的电商环节中,用户通常从首页浏览或者搜索商品,查看商品详情,加入购物车,生成订单并最终完成支付,但在大促时间段则路径可能起点于外发促销短信,调起用户APP的特定活动页面,再到加购商品完成订单。确定这些路径的重要性在于,漏斗分析的数据底层来源于APP,H5页面以及PC官网上的各种埋点数据,他们记录了每个用户(设备)从哪里来到哪里去。在确定了所要分析的目标路径之后,必须确认这些关键节点上都有完善的埋点数据,否则漏斗分析将出现断层,影响最终决策判断。

    第二步就是找“最大出水口”的过程,即确认漏斗中哪个环节导致了主要的用户流失。漏斗各层级效率的计算,是以当前层级所留存用户除以上一层用户得来。如表 4.4所示,在一个会场转化漏斗中逐层的转化率分别是60%,30%,80%,85%(整体转化率为12.2%),可以明显看到用户将商品加到购物车的比例明显不足,是影响整体转化率的出水口。

    会场页

    商品详情页

    加购页

    支付页

    下单成功页

    用户数

    1200

    720

    216

    173

    147

    转化率

    60%

    30%

    80%

    85%

    表 4.4会场转化率漏斗

    第三步是提出相对应的优化策略。表 4.4中的例子是加购转化率较低,则可通过商品详情页面的模块点击进行分析,有可能是评价或者产品的图片等问题影响了消费者的加购意愿。如果会场页到商品详情页的转化率可以通过商品的拆解,找出哪些商品影响了用户的商品点击,可以通过加权排序或算法优化让提升商详页面的转化率。

    接下来看实战的数据案例,以天池实验室提供的淘宝用户行为数据为例,该数据包含了部分淘宝用户在2017年11月-12月期间的访问行为数据,主要分为四类数据:浏览,收藏,加购物车和购买。在本例中我们随机抽取了这个数据集中50万条记录,此外由于收藏和加购物车之间并不互斥,为了能够展示漏斗数据,数据中将两者合并,形成浏览—加购/收藏—购买的三层漏斗关系。另外原数据中产品类别做了脱敏处理,我们对其中这类数据做了假设,将产品类别分为了美妆Beauty,书籍Books,服饰Clothing,电子产品Electronics,大健康Health,家居Home和孩童Kids七类。

    user_id

    category

    date

    act

    101021

    Kids

    2017/11/14 00:00

    pv

    1013991

    Clothing

    2017/11/1600:00

    pv

    1004259

    Books

    2017/11/1700:00

    pv

    103680

    Clothing

    2017/11/1800:00

    pv

    1007503

    Home

    2017/11/1900:00

    pv

    1010679

    Beauty

    2017/11/1900:00

    pv

    表 4.5淘宝用户行为数据

    表 4.5展示了部分数据的样例,其中act表示了对应的用户行为。基于此我们对数据做透视处理,数据透视表是Excel自带的计算,汇总和分析数据的工具。在“插入”选择“数据透视表”,得到如图 4.12所示的对话框。此处选择所在的表或者区域,将漏斗数据中所有行和列都选中,对于数据透视表的位置,可放入新的工作表。

    图形用户界面, 文本

中度可信度描述已自动生成

    图 4.12 创建数据透视表

    如图 4.13所示,透视表右侧包括了数据中的可选字段,这些字段可以根据需求拖入到这四个模块:(1)筛选器,选入后可以根据该字段对整个透视表的数据做筛选,(2)列,选入后则此字段的值会在列上展开,形成同一行多列的布局,(3)行,选入后则此字段的值会在行上展开,形成同一列多行的布局,以及(4)值,选入后会计算该字段的对应值,包括计数,求和,求平均等等。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成

    图 4.13:数据透视表操作界面

    根据分析需要,我们将日期拖入行,而将act拖入列,再将user_id拖入到值中。此处需检查user_id是否是取的计数项,因为我们需要的是记录所有满足条件的用户数。之后我们生成加购率和转化率两层,其中加购率等于加购的用户数除以整体的浏览用户数,而支付率等于支付的用户数除以加购用户数,整体的转化率是支付用户数除以浏览用户数。

    图 4.14按日用户转化漏斗

    图 4.14展示了基本的数据趋势,可以看到在11.27-11.30日之间整体转化率有比较明显的提升,对这个数据变化的拆解可以看到比较明显的是这几日支付率达到了27-28%的水平,较日常的23-24%有明显的提升。有兴趣的读者也可以使用之前所介绍的贡献率,计算下加购率和支付率变化对整体转化率的影响。

    数据口径

    原始数据中用户行为以英文标签记录:pv=浏览曝光(进入商品详情页),fav_cat=加购/收藏(收藏与加购合并后的字段),buy=支付(完成下单)。本例三层漏斗的三个指标计算如下:

    • 加购率 = 加购用户数 ÷ 浏览用户数
    • 支付率 = 支付用户数 ÷ 加购用户数
    • 整体转化率 = 支付用户数 ÷ 浏览用户数

    如图 4.15所示,将透视表中的时间替换成品类,可以对比不同产品下的转化率,其中美妆和服饰类的产品整体转化率较差,但两者问题不尽相同:美妆类产品的支付率21.8%明显低于其他品类,也就是收藏加购到最终支付的漏斗有问题,而服饰类则加购率只有8.4%。这个数据背后可能的原因是,美妆类用户习惯多加购物车,但在最终支付中会比较谨慎的比价决策,而服饰类的决策可能发生在了加购之前。

    图 4.15不同品类的转化漏斗

    回到漏斗三步法的第三步,两个问题对应不同的优化方向。美妆类商品的瓶颈在支付环节(支付率仅21.8%),说明大量用户加购后仍在比价观望,可在支付页前置专柜验真、价保承诺与凑单满减,把决策周期压短;服饰类的瓶颈在加购环节(加购率仅8.4%),问题更可能出在商品详情页到加购的引导上,应重点排查主图与价格带是否匹配搜索意图、评价与尺码信息是否足以支撑下单信心。先定位出水口、再针对该环节的具体障碍给对策,这正是第三步要完成的事。

    除了这类电商场景,漏斗分析可应用于任何(1)宽入水口到细出水口,依次缩减的路径,以及(2)能明确各层级用户数量的场景。类似的商业分析模型还包括:

    可以看到这些用户经营的漏斗模型有异曲同工之处,最终都是通过跨时间段或者不同维度(如产品类别)的对比,找到出水口和做出对应策略。

    前文的三步漏斗,前提是你已经大致知道用户的转化路径——它盯住一条预设路线上的出水口。但用户在网站或APP里的真实行为常常没有固定终点:有人从首页进,有人从搜索或分享链接进,中途还会来回跳转。要理解这种"不设预设路线"的行为规律,就需要把视野从漏斗扩展到用户路径分析——它不约束起点和终点,而是去找出最频繁出现的路径,以及这些路径背后反映的用户习惯。这类分析依赖对全量点击日志的还原,分析师通常不会从零搭建,而是借助专门的数据产品。以 Google Analytics(谷歌分析)为例,它会用图 4.16来呈现网站用户的行为路径规律。

    图 4.16 Google Analytics 中的用户路径视图

    这里示例的是一家真实的电商站点的用户路径,最左侧的绿色区块表示的用户打开网站时的起始网页(首页,服饰,生活以及新品等)。用户路径分为两种,红色标记了在浏览网页之后即离开的用户,而灰色则表示了随后用户的互动行为。可以看到,部分用户从首页去了服饰页,也有的去了新品页,灰色的粗细表明了各个路径用户数量。在此之后还有第2,3次路径选择,这里可以在资源允许的范围内不断添加后续的用户动作,因为任何一次点击和页面跳转都被记录且能显示在数据中。这类路径分析和漏斗分析相比,更加像开放式的命题作文,可以去研究为什么很多用户在初始页面之后就离开了网站,也可以分析看了服饰页面之后的用户为什么又去看电子产品。若能从这些数据中总结出业务洞见,识别潜在的用户心理,都有可能帮助到产品和业务的提升。 对用户运营来说,路径分析恰好是漏斗分析的反面补充:漏斗盯住一条已知路线的出水口,路径分析则帮你发现那些未被预设、却真实高频发生的路线——两者合起来,才看得清用户到底怎么用你的产品。

    4.3.3队列分析

    队列分析(Cohort Analysis),也称群组分析或同期群分析,是将特定时间内有共同行为特征的用户归入到同一个队列(或者群组)中,以对比不同群组之间在行为上的差异。队列的概念,类似于将同一个班级或年级的学生,或者同一批入职的新人作为一个队列,通过不同批次后续的人生状态和职业发展,来衡量教育或者职业达到的效果。如前所述,有了终身价值的概念,在业务发展中我们不仅会关注新增的客户规模,也更加关注这些用户后续是否对产品和服务有了粘性。

    用队列分析评估留存效果,首先要确定评估的留存周期,并计算对应的留存率。对于各类线上APP(尤其以游戏或者零售类APP),相对会看更短的时间如日留存率。如表 4.6所示,7月1日该APP新增1956个用户,记录随后7天的留存率,是以每天留存(访问或者交易)的用户数除以总用户数。其次是加入其他队列,以形成横向对比,表 4.6中基于7月1-3日对比,可以看到总体趋势是T+1留存较差,除非是极为低频的业务,否则当天注册的用户只有约30%会在第二天再打开访问,这本身就是不健康的信号。此外7月3日的用户在T+7日只有6.3%的留存率,也是显著低于其他队列,需要进一步的诊断。

    日期

    用户数

    T+0

    T+1

    T+2

    T+3

    T+4

    T+5

    T+6

    T+7

    7月1日

    1,956

    100%

    33.9%

    23.5%

    18.7%

    15.9%

    14.2%

    12.1%

    11.0%

    7月2日

    1,954

    100%

    31.1%

    18.6%

    14.3%

    16.0%

    13.7%

    11.4%

    9.2%

    7月3日

    1,965

    100%

    27.2%

    19.6%

    14.5%

    12.9%

    13.0%

    10.8%

    6.3%

    表 4.6用户7日留存数据示例

    接下来以某零售商超的付费会员数据为例,说明从原始数据一步步算到留存率矩阵的完整过程。先说清楚我们要什么:和前面的 APP 日留存(表 4.6)一样,留存率总是按"注册时间(队列)× 对应时间段"来读——这里把时间段换成"开卡后的第几个月",目标就是得到类似表 4.6 那样、每一行是一个开卡月队列、每一列是一个在籍时长的留存率表。手里的原始数据通常只是会员级别的流水记录,要把它变成上面的矩阵,需要走下面几步:

    下面依次展开前 5 步,第 6 步放到最后单独说。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成

    图 4.17超市会员原始数据

    1. 准备原始数据:每条会员记录含 user_id、start_date(注册时间)、cancel_date(流失/注销时间,如有)、channel(渠道)四个字段——见图 4.17 的 A–D 列;cohort 是后续步骤生成的,不在原始数据里。
    2. 计算在籍时长:对每张已取消的卡,用(取消日−开卡日)÷30 粗略折算成月数;未取消的留空——生成 E 列。
    3. 归队列(cohort):按开卡年月把用户分到对应的月份队列——生成 F 列。
    4. 透视汇总:行放队列、列放在籍时长、值放用户计数,得到各队列各时长的用户数——图 4.18。
    5. 算留存率并上色:逐月减去流失数得到留存数,再除以队列总人数得到留存百分比,用蓝-白-红色阶呈现——图 4.19、图 4.20。
    6. (可选)分渠道对比:用注册渠道做筛选,横向比较不同渠道的长期留存——图 4.21。

    步骤2|计算在籍时长

    对每张已取消的卡用(cancel_date − start_date)÷30 粗略折算成月数、写入 E 列;未取消的卡留空(如图中 id 为 28 的用户,E 列即为空)。具体公式见下方工具提示。

    步骤3|归队列(cohort)

    以开卡年月把用户分到对应月份队列、写入 F 列。具体用到的 DATE / YEAR / MONTH 函数见下方工具提示。

    步骤4|透视汇总

    以图 4.18中的表生成数据透视,将队列cohort拖入行,将在籍时长拖入列,将user_id拖入值并选择计数项,得到图中的透视表。从列的汇总可以看到,各在籍时长下的用户分布相对较为均匀(合计459个用户);空白列则表示在24个月观察期内始终留存、从未流失的用户总数。

    图 4.18队列分析-数据透视

    步骤5|算留存(先求留存数)

    将每月的总用户逐月减去当月的流失用户,则可以得到图 4.19的留存数据


    图 4.19队列分析-计算留存

    步骤5|上色呈现

    将图中的第二个表的数据除以该队列的总用户数得到各队列的留存百分比,最后选中所有百分比数据,选择单元格条件格式的蓝-白-红色阶,得到如图 4.20所示留存图。从该图中可以看到,用户留存的第一个关键时间点在12个月左右,部分队列出现了到此已经流失了超过50%的开卡用户。最有明显问题的是19年12月开卡用户,在第13个月结束时仅有43%留存,在24个月结束后只有8%留存,是所观测的12个月中表现最差的,这背后的原因需要做深入的下钻分析。

    上色并不是强制要求的环节,但通常我们都会通过「条件格式 → 色阶」来快速看清结果——这是在队列留存分析里最直观的可视化呈现,一眼就能分辨哪些队列、哪段时间掉得最厉害。

    表格

描述已自动生成

    图 4.20队列分析-留存图

    步骤6|分渠道对比

    除了对比总体留存的不同时间段,队列分析也可以依据用户分层来做横向对比。在数据中我们保留了用户的注册渠道,利用透视表的筛选可以将上述数据切换对比。如图 4.21所示,可以看到在单个月份中,不同渠道也存在着长期留存率的差别,比如19年的4月用户中,淘宝注册用户长期留存率达到43%,而同期的H5队列(通过点击短信中的链接跳转网页后注册)则只有9%,但在19年9月两者数据则相反,H5队列的长期留存率为30%,而淘宝注册用户则无一留存。

    应用程序

中度可信度描述已自动生成

    图 4.21队列分析-分渠道留存图

    上述分析只是队列分析的一种场景,首先在选择以什么去做队列上,可以使用年龄或者所在地等人口统计信息,也可以使用行为特征,比如同样适用了n次某个功能或者购买额都在1000-5000这个范围内的用户,还包括用户的技术特征,比如所使用的手机或者APP版本等。这些因素可以组合形成忠诚用户(最近7天至少下过3单的用户),近期升级用户(最近30天有过版本升级的用户)等更有业务意义的队列。

    所谓魔法数字(magic number),指的是能显著预测用户留存的那个行为阈值:当用户完成某个关键动作的次数累积到一定程度,他之后留下来、持续使用的概率会明显抬升。行业里这个概念最主流、也最被看重的应用场景就是留存分析。我们这里就是用用户在特定时间段内的购买次数来做队列。这里用一个在线打车app的数据来重构这个过程,在这个数据中我们通过最近3月的用户累积打车次数,判断其下个月是否会留存(有至少一次打车)。我们所需要的数据最原始的形态如表 4.7所示,包含用户id,最近三个月打车的总次数,以及是否下月打车。注意这里的“下月”应该也是实际已经完结的月份,比如当前是2022年9月,则在分析时收集数据中的“下月”最晚应该是22年8月,而对应的最近三个月是22年5-7月。

    用户id

    近3月打车次数

    下月是否打车

    1

    1

    0

    2

    4

    1

    3

    2

    0

    4

    2

    1

    5

    6

    1

    表 4.7:留存魔法数字的原始数据

    对此数据做透视,则可得到如表 4.8所示的数据,以打车次数作为分组,累计出各分组的总用户数以及留存的用户数。总用户数由对用户id的计数得来,而留存用户数则是对“下月是否打车“的求和得到,留存比例等于留存用户数除以总用户数。

    打车次数

    1

    2

    3

    4

    5

    6

    7

    …

    50+

    总用户

    33124

    15149

    10084

    8302

    6722

    5611

    4793

    ….

    2384

    留存用户

    9345

    5938

    5690

    5193

    4616

    4130

    3727

    …

    2349

    留存比例

    28.2%

    45.8%

    56.4%

    62.5%

    68.7%

    73.6%

    77.8%

    ….

    98.5%

    表 4.8 计算留存魔法数字的数据准备

    从表 4.8可读出一条清晰规律——留存率随近3月打车次数单调上升,1次仅28.2%,到6次已升至73.6%,曲线在头2–3次出现最陡的抬升。所谓"魔法数字",就是在这条曲线上找到"再多用几次、留存就显著跃升"的阈值,把它作为促活运营要帮新用户跨过的目标次数。

    如图 4.22所示,用折线图的方式呈现出来,则可以更容易找到出比较有业务意义的拐点:近3月打车次数超过8次以上的,则次月留存率超过80%,打车次数超过14次以上的,则次月留存率超过90%。这类80%/90%的拐点对应的指标数值,通常会被当做魔法数字,这也是和业务判断通行的20-80或者抓大放小的原则一致。

    图4.22 留存魔法数字图
    图 4.22 留存魔法数字图

    根据业务场景切换不同的维度,可以找到特别的魔法数字,比如在领英的数据分析中,就发现如果新用户进来之后添加了五个以上的联系人,那么她在领英上的留存就远高于没有添加足够联系人的用户。此外队列分析所统计的指标也不一定只能是留存率,比如统计24个月的复购比例或者订单数,那上述的方法就可以得到对LTV更好的理解,以及回答不同的队列是否在消费趋势上有差别等问题。总之,队列分析的独特视角,有助于我们更深层次的分析用户行为,揭示总体指标变化下的不同趋势。

    4.3.4用户分群

    基于生命周期和终身价值,用户分群是我们做用户经营最核心的思想。如今我们能收集和观测到的用户数据众多,包括交易,访问行为,营销活动响应以及态度意愿等,都会让我们对用户有更深层次的了解。建立有效的用户分群,首先是选择分群所用的指标,然后是选择合适的分位线,最后是合并用户群组,形成对不同群组的策略。我们不妨用当下非常流行的MBTI人格测试来类比用户分群,通过回答各种倾向性问题,计算出在(1)注意力集中在何处以及从哪里获得动力,(2)获取信息方式,(3)做决定的方法以及(4)对外在世界如何取向,这四个指标上的评分。在每个指标上得分高低则会被分配到对应的两个群组之一,最终形成了2*2*2*2的16型人格分群,每个人群都会被给到对应的性格定义,并由此延伸出在职业发展和个人诉求上的不同。

    在商业场景的用户分群中,我们则依赖于行为数据而不是问卷调查。在实操中,根据交易及交易之前的用户行为数据进行分层的RFM模型,仍然是应用最为普遍的分层方法。其中R是Recency,即最近一次交易距当前的时间点,距离越近的客户更有价值,F是Frequency,指用户购买的频率,在指定时间段内购买频率越高的用户则价值更高,M是Monetary,也就是用户的总消费金额,最直接的体现用户对企业的价值,同理M越大则价值越高。

    数据口径 · RFM 三层指标

    R(Recency)最近一次交易距基准日的时间,越小(越近)价值越高。本例基准日设为 2022-1-1。

    F(Frequency)购买频率。底表含「总交易次数」,可结合「在籍年数」(首次交易→基准日,天数÷365)标准化为年交易频率,越高价值越高。

    M(Monetary)累计交易金额,越大价值越高。

    阈值切分均值 / 中位数 / 四分位数均可;本例以 500/1000(中位)将每项分高/低两档,得 2×2×2=8 组。

    我们以某个零售企业的RFM分层介绍在这个模型下数据划分和分层的过程。如表 4.9所示,我们收集了1000个顾客的信息,包括顾客ID,近三年的总交易次数,最近一次交易时间,首次交易时间和累计交易金额。这类数据一般从企业的底层交易订单记录中抽取汇总而来,RFM中的R和M已经在表中了,我们只需要计算下F,因此先计算出用户的在籍时间即首次交易时间和分析设定时间(即2022年1月1日)之间的间隔。Excel默认对日期之间的间隔结果用天数作为单位,为了解读方便我们这里将结果除以365转化成年。

    1. 准备原始数据:顾客ID、交易次数、R(最近交易时间)、首次交易时间、M(累计金额);F 需在籍年数÷365(表 4.9)。
    2. 用 RANK 函数对各指标排序(图 4.23)。
    3. 设定阈值切分点:本例以 500/1000(中位)将 R/F/M 各分高/低两档(图 4.24 参照表)。
    4. 用 VLOOKUP 按切分点给每个用户赋值高/低(图 4.24)。
    5. 用 COUNTIFS 或数据透视表汇总 8 组用户数(图 4.25)。
    6. 按业务判断将 8 组合并成高/中/低价值层,并匹配运营策略(表 4.10)。

    顾客ID

    总交易次数

    最近一次交易时间R

    首次交易时间

    总交易金额M

    1

    20

    2021/7/2

    2019/8/19

    4,564

    2

    35

    2021/4/29

    2020/5/31

    675

    3

    25

    2019/3/2

    2017/5/2

    2,045

    4

    35

    2021/3/25

    2019/4/4

    2,332

    5

    26

    2020/1/5

    2017/12/28

    3,710

    6

    33

    2020/9/1

    2020/7/14

    465

    7

    21

    2020/2/24

    2018/4/29

    3,560

    8

    35

    2021/7/9

    2020/3/29

    2,611

    9

    31

    2021/3/11

    2019/11/13

    4,343

    10

    19

    2019/4/29

    2018/9/21

    2,226

    表 4.9 零售会员数据

    步骤2|RANK 排序

    有了 RFM 的基本数据之后,我们用 RANK 函数对 R/F/M 三个指标分别做降序排序(图 4.23)。由于 RFM 取值越大越有价值,排序统一按降序进行。

    图形用户界面, 文本, 应用程序, 表格

描述已自动生成

    图 4.23 计算RFM排序

    步骤3|设定阈值切分

    现在我们根据排序的结果做分层,根据不同的行业及用户习惯,RFM的维度中可以设置一个阈值,通过阈值来划分维度的价值高低,阈值可以是平均值,中位数,四分位数等等,最后以汇总总分来将用户或分成不同的等级,根据不同的等级设定精细化营销方案。在这个例子中我们以500名作为分割线,将RFM各自分成为高和低两种,我们最后将会得到2x2x2共8组用户。

    步骤4|VLOOKUP 赋值高低

    如图 4.24所示,我们在 N1:O2 建立参照表,N 列是排序后的切分点(本例以 500 为界)。之后用 VLOOKUP 按切分点给每个用户的 R/F/M 赋值高/低:rank 在 500 以内赋「高」、大于 500 赋「低」(F、M 同理)。如果后续要把分层改成高中低三层,只需在参照表新增一行切分即可。

    表格

描述已自动生成

    图 4.24 给定RFM分位值

    步骤5|COUNTIFS 汇总

    到此我们对 1000 个顾客做好了 RFM 分层。接下来用 COUNTIFS(或数据透视表)汇总出 8 组各自的用户数(图 4.25),先看各组规模,再结合业务判断合并价值层。

    图片包含 图表

描述已自动生成

    图 4.25 RFM汇总

    步骤6|合并价值层 + 策略

    接下来基于RFM数据做业务层的汇总,通常将RFM组合成高中低价值以便策略制定。前面按高低二分得到 2×2×2=8 组,这里再把它们归并为三层:三项都是「高」的归为高价值,三项都是「低」的归为低价值,其余组合则在高/中或中/低之间,结合业务现状(侧重频率还是侧重消费金额)来判定。表 4.10展示了一种可能的切分方法,为了便于理解将R中的高低转换成了远近的表述。这三种用户对应了不同的运营策略:粘性较高的忠实用户,需要通过扩充商品种类或引入更多商家、并提供优质服务,建立长期信赖;中价值用户仍活跃且有商业价值,可通过精准广告反复触达,使其转化成为忠实用户;低价值用户则以较低成本的自动化推送和触达维系。

    表 4.10 高中低价值的用户分组
    用户分类R-距近购买时间F-消费频率M-消费金额用户数量
    高价值近高高173
    近低高79
    中价值远高高89
    远低高158
    近高低159
    近低低91
    低价值远高低78
    远低低173

    RFM模型应用广泛,但也存在一定的局限性,这个模型源于频率较高的快消零售场景,且容易受到外在因素的影响, 比如F和M会因收到促销活动的影响会导致在大促期间的购物频次较高,R和F则在一些低频行业(比如旅游出行)等会出现无法有效切分用户的问题。从本质上RFM模型的数据完全依赖于交易,也限制了这个方法在免费增值模式等商业场景下的应用,比如对于音乐或者视频类APP,从不付费但会在各种社交媒体频繁分享的用户,会被RFM归为低价值,这显然是不合理的。

    在刚才我们的例子中,对于RFM三个子项的“高”是一视同仁的,在实操中对RFM的另一个改良是结合行业背景赋予RFM各自不同的权重。比如在大家电类的RFM分析中,这类产品价值高但是购买频率低,因此应该将更多的权重赋予那些最近购买且消费金额高的用户,而降低F的权重;类似的在快消或者化妆品中,用户的高频购买则应该更被重视,但相对的这类消费的平均客单价并不高,因此R和F应该得到比M更多的权重。基于权重重新划分RFM到高中低价值用户,也能够更好的反应公司的策略导向,为营销资源分配提供更合适的基础。

    对读者而言,重要的是从上述的实操中,掌握用户分层背后的核心是选重要指标,切分位,基于业务定策略。以某个综合金融集团的线上APP为例,该集团拥有的数据包含用户的投资,存款,保险,消费,贷款以及线上行为等数据。在分层中,先结合客户当前的AUM进行价值划分,再根据其内部和外部消费数据判断客户的增长潜力(即在该集团信用卡消费占整体消费的比例),最后再结合客户在集团APP的活跃度(包含访问和对各种营销活动的响应),形成了如图 4.26的分层(这其实和前面 RFM 是同一套思路:先选三个维度指标、再定切分位、最后合并出价值层,只是把 R/F/M 换成了 AUM / 增长潜力 / 活跃度——就像开头用 MBTI 四维切分人格,换个场景只是换指标、切分逻辑不变)。左上角的深蓝色部分,高资产+高潜力+高活跃,是最为需要关注的客户,而右下角的中低价值+中低活跃的低价值用户。

    这类分层的重要应用是帮助搭建会员类的体系结构,比如图中的分层按照实际用户数量分布则会得到右侧的金字塔结构,顶端的最有价值的用户占比较少,而底层的低价值用户则占比较高,最终目的都是通过价值分层实现公司资源调配的优化。

    图 4.26 某金融集团的客户分层 增长潜力 当前价值(AUM) 高价值·高潜力 低价值·高潜力 高价值·低潜力 低价值·低潜力 高 低 高 低 高活跃 低活跃 高价值高潜力 高价值低潜力 中价值用户 低价值用户 会员体系金字塔 分层维度:AUM(价值)×消费潜力×APP活跃度
    图 4.26 某金融集团的客户分层

    4.4 进阶分析:从描述诊断走向预测

    相较于业务分析和用户分析,进阶分析方法有着三个独特的优势。首先,它能够突破人脑在分析大量数据中的思维局限,同时快速的分析多个指标,并能量化他们对业务的影响。其次,它能将用户分析的粒度从群体推动到个体,从而能实现千人千面的用户经营。最后,进阶分析方法的应用场景是在预测,这与业务及用户分析更偏诊断有很大区别。本节将先引入相关分析作为基础,接着依次介绍回归分析,分类预测,时间序列,推荐分析以及聚类分析这五个核心方法。

    在数据分析领域,这些方法也被称为机器学习或者模型方法。它们的共通之处,是由计算机基于历史数据建立X和Y之间的关系,这个抽象的关系就成为模型。其中X是“因”,即各类对结果造成影响的原始数据(二维表格,文字,图片,视频),在分析中我们通常称X为自变量。而Y是“果”,即结果数据(交易,用户产品指标等)或者类别标签。有了X->Y的抽象关系,当遇到或者是在估算新的X时,模型就能预测对应的Y,业务决策便可基于预测做规划。

    表 4.11 举例说明了五类分析方法的输入X和输出Y以及对应的商业应用。回归分析不仅可以应用于表中举例的业务分析类预测,也同样适用于对用户个人的行为预测,分类预测中最典型的二分类预测则可涵盖大部分的用户问题(用户点击vs未点击,购买vs未购买),时间序列最有助于识别数据中的周期规律,而推荐分析则是如今各类APP维持高用户活跃的重要方法,最后聚类分析则可视为用户分层的加强版,能在众多因素条件下自动化的将用户分成合理的群体。

    分析方法

    输入X

    输出Y

    常见商业应用

    回归分析

    营业商户/补贴券金额

    外卖订单量

    数字营销规划

    分类预测

    信用卡交易记录

    欺诈交易识别

    银行风控

    时间序列

    货品进销存记录

    最优库存状态

    供应链及库存管理

    推荐分析

    对已购买产品的历史评分

    对新产品的评分

    内容推荐

    聚类分析

    用户特征及消费记录

    用户分层

    建立会员体系

    表 4.11 进阶分析方法及其应用

    使用这些方法时,我们如何评估模型的效果足够好?一方面,这些模型(除了聚类以外)都提供衡量模型准确性的统计指标,这些指标尽管名称不一,但都是衡量模型所预测的值与实际值之间的差距,模型好坏与否可首先检查这些指标。另一方面,我们可将建立模型所未使用的数据做验证,如以19年-21年的广告投入和对应销售额之间建立模型,则可以该模型基于22年上半年的广告投入,预测对应时期的销售额,再与实际产生销售额做对比。这种做法在模型训练中非常普遍,即将数据随机分成为训练集和测试集,以实现模型效果的稳定。

    实际工作中能用来开发这些模型的工具繁多,在本节中我们仍以Excel为主要的分析工具,配合实际案例和公式应用,读者会更清晰的了解到诸如聚类和分类预测复杂模型背后的分析逻辑。在R和Python这类专职机器学习模型开发的工具中,他们依然遵循同样的建立模型,检查准确性以及验证模型效果的流程,本节的学习也能为读者打下良好的基础。如同本书开篇所说,写代码并不是未来商业数据分析的主要职责,面上已经出现了很多诸如Knime,Rapidminer这样的点选拖拽式的建模工具,头部互联网公司或者AI服务类公司也纷纷推出了面向普通用户的工具,我也相信掌握基本统计原理,了解如何评估模型的好坏,以及输出Y和对应的应用方法,会是商业数据分析工作的核心竞争力。

    4.4.1 相关分析

    在数据分析思维中,我们已经提到过“相关并非因果“的例子,但这并不意味着相关关系毫无用处,恰恰相反,相关关系是回归和分类预测的基础。这些模型要能有好的预测效果,需要的就是相关性高且有业务意义的X变量,我们就先来看如何能评判任何一个X和Y之间是否有高的相关性。

    相关分析主要用于两种及两种以上的数据之前的关系研究,评估相关性的主要方法是计算相关系数,相关系数是取值在-1和1(包含两者)之间的数值。当相关系数大于0,说明两种数据是正相关,是同方向变化,也就是一种数据的值越大,另一种数据的值也会越大,而如果相关系数<0,说明两种数据是负相关,是反方向变化,也就是一种数据的值越大,另一种数据的值反而会越小。如果相关系数=0,表明两种数据之间不是线性相关,但有可能是其他方式的相关(例如曲线方式),此外1和-1两个极值分别代表了两组数据之间的完全正相关和完全负相关。从分析预测的角度,我们需要的是相关系数绝对值大的变量,且正负的方向性应该与日常的业务理解一致。

    我们以第二章所介绍的外卖行业数据作为示例,如表 4.12 所示,该数据包含了连续45天的外卖订单数,营业商户数,每日活跃用户DAU,平台所投入的补贴券金额和当日活跃的外卖骑手数。从业务逻辑上,我们认为这四个数据是与订单数有比较强关系的,这也是下一节做回归分析所使用的数据集,在这里我们先通过相关分析来评估各个变量和外卖订单数之间的相关性。

    外卖订单数营业商户数日活DAU补贴券金额外卖骑手数
    1951415661985535849662
    2027115852133135883639
    2018616791925737452547
    1987815772338735577646
    1948215581945735573688
    2116216042975042196671
    1968715741858135885665
    1947015671943435957666
    1952115701835636096659
    表 4.12 外卖数据示例

    计算相关系数可以使用 Excel 的 CORREL 函数,操作结果如图 4.27 所示。

    工具提示:CORREL 函数

    函数语句为 CORREL(array1, array2),其中 array1 和 array2 分别代表两个要计算的单元格区域。如果数组或引用参数包含文本、逻辑值或空单元格,CORREL 会忽略这些单元格,但数值为 0 的单元格仍然会被计算。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.27 计算相关系数

    如图 4.27 所示,计算营业商户数和外卖订单数的相关关系,只需将两列数据都放入公式中,其他相关系数计算以此类推。我们可以看到营业商户数,活跃用户和补贴券金额都与外卖订单数高度正相关,尤其是补贴券金额的补贴系数最高(0.87)。外卖骑手数则与订单数之间呈现非常弱的相关关系(-0.05),这说明当日在平台活跃的骑手(即使用平台功能能够接单的骑手)并不能和订单涨跌有直接关系。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.28 计算多变量交叉相关

    在变量较多的情况下,也可以使用Excel的数据分析来快速计算任意两个变量之间的相关关系。如图 4.28 ,在“数据”工具栏中,点击“数据分析”并选择“相关分析”,输入区域选择我们需要分析的5列数据,分组方式在本案例中应该选择分列(计算的是每两列数据之间的相关),输出区域可任选一个单元格。结果如表 4.13 所示,第一列的结果和图 4.27 一致,营业商户数,日活DAU和补贴券金额之间的相关系数都较高,但外卖骑手数和其他变量之间相关系数都不明确,在接下来的回归分析中,我们也会看到如何处理这个变量。

    表 4.13 多变量交叉相关系数结果
    表 4.13 多变量交叉相关系数结果

    除了上述的计算相关系数外,散点图也是快速甄别相关性的一种方法。在图中可以看到,补贴券金额和外卖订单数是最强的正相关(0.87),而外卖骑手数和补贴券金额是相关最弱的(-0.01),而数据中最为负相关的是外卖骑手数和营业商户数(-0.16)。为了便于理解,在三张散点图中分别加入了趋势线作为参考。

    图 4.29 补贴券金额与外卖订单数(相关系数0.87)
    图 4.29 补贴券金额与外卖订单数(相关系数0.87)
    图 4.30 补贴券金额与外卖骑手数(相关系数-0.01)
    图 4.30 补贴券金额与外卖骑手数(相关系数-0.01)
    图 4.31 外卖骑手数和营业商户数(相关系数-0.16)
    图 4.31 外卖骑手数和营业商户数(相关系数-0.16)

    相关分析通俗易懂,许多没有统计知识的业务方和决策者,也同样能理解这个方法的原理和结论。我们所熟悉的“啤酒和尿布”的故事可以说是相关分析对业务影响力的佐证,超市店长从日常流水中发现了有很多同时购买了啤酒和尿布的组合,结合日常观察,她认为是初为人父的年轻男性顾客,在给孩子买尿布的时候也会顺手买上几瓶自己最爱的啤酒。于是她调整了货架的位置,将本来分隔很远的两类产品放在了邻近的位置,促成了两类产品的销量暴增。

    通过不同变量的相关性比较,也能在多个可能影响业务结果的因素中,判断出它们的影响力度和方向性。但需要注意的是,相关分析的计算始终是不考虑任何其他因素的影响前提下的,因此不能过度的对高相关系数做因果结论。在接下来的回归和分类预测中,我们就在相关分析基础上,更进一步的量化X和Y的关系。

    4.4.2 回归分析

    日常所使用的回归分析大多是线性回归,即模型是用1个或者多个X变量的线性组合去预测Y值。用公式表达出来,线性回归的模型就是Y= b 0 +b 1 *X 1 +….b n *X n + e ,其中b 0 被称为常数项或者截距,b 1… b n 是对各个X的回归系数。 e 是模型的误差项,它计算的是截距和各X变量之外还存在的和实际Y之间的偏差,对于每个X和Y的组合对应的偏差都不同,因此回归分析不会直接输出固定数值的 e 。

    min⁡b0,…,bn ∑i=1m(yi−y^i)2,y^i=b0+b1xi1+⋯+bnxin\min_{b_0,\ldots,b_n}\ \sum_{i=1}^{m} \bigl(y_i - \hat y_i\bigr)^2,\qquad \hat y_i = b_0 + b_1 x_{i1} + \cdots + b_n x_{in}
    Y=β0+β1X1+⋯+βnXn+εY = \beta_0 + \beta_1 X_1 + \dots + \beta_n X_n + \varepsilon

    在回归分析中,我们便是以历史数据去计算b 1… b n ,从而能够对未来的Y做预测。显而易见这个方法适用于许多业务问题,比如将产品的销量作为Y分析它与广告投入的关系,则可以用Y= b 0 +b 1 *广告投入+ e , 从业务意义上b 0 可以理解为在不做任何广告投入时也能获得的销售收入。类似的,在分析各因素对于下一年车险费用的影响,可以表达为 今年车险费用= b 0 +b 1 *出险次数+ b 2 *违章次数+ e 。

    回归分析如何计算出合理的系数,以只有单个X变量的回归分析(也称一元回归)为例,如图 4.32 所示,实际观察到的X和Y的组合形成落在坐标轴中的各个点,而线性回归则是在虚拟出一条线,实际观察到的Y和模型预测的Y(真实的X对应落在预测线上的点)就存在偏差。通过调整截距(b0)和回归系数,当这个偏差能达到最小的时候(即预测Y和真实Y之间距离最短),我们就认为得到了最合理的回归系数。

    图 4.32 拟合回归模型的过程

    我们继续以表 4.12 的外卖数据来建立回归模型,如前所述为了能更好的校正模型的效果,我们先只用前30天的数据来建立回归模型,将后续的15天留作验证。在Excel中可以非常快速的建立线性回归模型,具体的步骤如下所示:

    第1步:首先在Excel选项中加载出分析工具库,如下图 4.33

    图 4.33 加载分析工具库
    图 4.33 加载分析工具库

    第2步:在数据中找到加载的数据分析选项并点击,出现的数据分析菜单中选择回归选项,如下图 4.34

    图 4.34 在数据分析中选择回归
    图 4.34 在数据分析中选择回归

    第3步:如图 4.35 所示,在回归分析对话框中,首先选择X和Y的输入区域,此处Y对应A列,在X变量上我们先选只选择营业商户数。由于第一行含有了变量名,因此要勾选“标志”。需要注意的是X和Y都必须是数字,不能存在文本或者日期等信息,否则回归分析将无法运行。在输出区域上,输出区域可选择新工作表或者当前工作表中任何区域。残差也就是我们所说的误差 e ,这些选项此处暂时留空。

    图 4.35 回归分析对话框

    回归分析结果如图 4.36 所示,分为自上而下三个部分

    1. 回归统计,重点关注衡量模型准确性的R Square(通成R2或者R方)以及调整R方。本例中R方为0.538表示的是外卖订单数的变化有53.8%可以由营业商户数来解释,而剩下的46.2%则本模型无法解释。R方越大则代表了模型的准确度更高,虽然没有统一的标准,但通常认为R方至少要达到0.75才称得上较好的模型(不过这一阈值与领域强相关:在行为、经济类数据中,R方处于0.2~0.5之间也常有实用价值,需结合业务场景判断,而非机械套用0.75)。
    2. R2=1−SSresSStot=∑i=1m(y^i−yˉ)2∑i=1m(yi−yˉ)2R^2 = 1 - \frac{SS_{res}}{SS_{tot}} = \frac{\sum_{i=1}^{m}(\hat y_i - \bar y)^2}{\sum_{i=1}^{m}(y_i - \bar y)^2}
    3. 方差分析以F检验作为整体显著性统计量,用于判断回归模型是否整体显著(即是否至少有一个X变量对Y存在显著的线性影响),而非逐一判断每个X的影响——单个系数的显著性要看各自的t检验。其思路与t检验一脉相承,此处重点关注显著性检验结果即可:本例中回归F值为32.61,显著性远小于0.01,因此可认为营业商户数对模型整体的线性影响是显著的。
    4. 回归系数,是回归分析的核心输出结果,此处重点关注截距(intercept)和各个X变量的回归系数(coefficients)以及显著性检验的p值(p-value)。此处生成p值使用的是t检验方法,在本例中两项p值均小于0.01,因此可判断均为有统计显著性的结果。基于回归系数可得到当前所拟合的最佳模型: 外卖订单数Y=-50538.804+44.85*营业商户数。这个结果告诉我们,每增加100个营业商户,我们就可以多增加4485个外卖订单。
    图 4.36 以营业商户数预测外卖订单的回归分析
    图 4.36 以营业商户数预测外卖订单的回归分析

    由于只放入营业商户数作为X的回归模型R方偏低,我们将日活DAU,补贴券金额和外卖骑手数都纳入到模型中,将回归分析对话框中的X输入覆盖原始数据中的B列到E列,则得到如图 4.37 所示的结果。

    图 4.37 外卖订单的多元回归分析
    图 4.37 外卖订单的多元回归分析

    在回归统计中我们看到R方大幅提升到0.95,这四个变量目前已经能解释外卖订单数95%的变化。这里我们注意下调整R方,因为在建立回归模型中,很容易通过塞入和Y相关度不高的变量来强行的提升R方,而调整R方则可以避免这种问题。调整R方的计算公式如下,其中n是观测样本的数量,而p是输入变量的数量:如果观察样本小,但所使用的变量很多,那么R方和调整R方就会出现较大的偏差,因为公式中(n-1)/(n-p-1)的结果会显著大于1,这实际是限制我们在样本量固定的情况下所使用变量的数量。但在本例中R方和调整R方分别是0.95和0.94,且F检验依然显著,说明我们的回归模型是足够好的。

    Rˉ2=1−(1−R2)(n−1)n−p−1\bar{R}^2 = 1 - \frac{(1-R^2)(n-1)}{n-p-1}

    提升模型效率的方法可以从单个变量开始,逐次增加X变量并观察对应的p值和调整R方, 直到剩下的自变量选入后模型预测效果达不到预先设定的提升标准。我们也可以同样可以在加入所有变量之后,再以此剔除并不显著的变量。在相关分析中,我们已经看到了活跃的外卖骑手数和订单数之间相关度并不高,而在图 4.37 中,外卖骑手数对应的p值是0.23,可判断出它对预测订单数的效果不足。因此,我们将其从回归分析中剔除,保留其他三个变量,最终的模型结果如下图 4.38 所示。

    图 4.38 外卖订单回归分析最终模型
    图 4.38 外卖订单回归分析最终模型

    这个模型的公式表达为Y=-16763.028+11.53*营业商户数+0.136*日活DAU+0.432*补贴券金额。从业务意义上,这说明在其他因素不变的情况下,每增加100个营业商户可新增1153个订单,而日活DAU每新增1000个可带来136个订单,补贴券金额每多投入1000可以新增432个订单。这三个动作都有着一定的成本,现在有了回归分析结果,则可预估各自业务动作带来的增量效益,实现资源更合理的分布。

    但模型在这30天数据中预测效果很好,是否对于还未录入到模型中的15天数据也可以有好的预测效果呢?我们现在就对此做验证,如图 4.39 ,先将每个数据中的预测外卖订单数计算出来(对I2的数据,公式为=BB2+BB3*E2+BB4*F2+BB5*G2),接着用Excel自带的RSQ函数计算测试集的R方(用法见工具提示)。计算结果得到R方为0.91,尽管略微小于建立模型时的R方,但这也有足够的预测效力。

    工具提示:RSQ 函数

    函数语句为 RSQ(X, Y),其中 X 和 Y 分别对应要计算R方的两列数据,先后顺序无所谓。

    图 4.39 计算测试数据集的R方

    在Excel回归分析的对话框中,我们会注意到有关“残差”的选项,这是因为统计学对回归分析中残差的属性有一定的要求,以保证回归分析的准确性。对残差最重要的要求是其随机性,也就是残差的大小不应该有任何特定的规律,否则说明残差中存在着需要进一步探索找出的信息。比较直接的检测的方式,是在回归对话框中圈选“残差图”,以日活DAU对应的残差图为例,图 4.40 中的点代表了30个日活DAU预测后所产生的残差点。判断残差是否满足线性回归的假设,要看图中的点是否围绕着Y轴的0对称的分布,且残差点之间不存在明显的聚集,或者有类似线性的趋势存在。从图 4.40 的数据来看,回归分析的残差是满足回归分析的残差假设的,在Excel还提供了其他残差数据值验证,在此不赘述。

    图 4.40 日活DAU的残差图
    图 4.40 日活DAU的残差图

    回归分析操作起来简洁灵活,且可解释度高,但同时也具有一定的局限性。最显著的莫过于它将Y视为X的线性组合这个核心假设,在很多场景中我们会发现并不能满足这种条件。以上述的预测外卖订单的例子,持续的投入补贴券并不会带来外卖订单的直线上升,它可能存在一定的饱和效应,即当用户手上的券足够了之后,再发多的券也很难触发额外的购买。再比如在预测用户的登录次数和未来12个月消费金额的命题,也同样可能在初期随着前者的增加,后者也升高,但当登录次数到达一定水平之后,消费金额变不再呈现线性关系。对于这些问题,可能的解法是生成某个变量的平方(比如补贴券的平方)作为新的变量加入到模型中,从而能拟合出一个非线性的回归模型。

    在实操中,需要注意的是Excel中的回归分析只能处理数字型的X和Y,如果遇到了诸如城市,性别,受教育程度等以字符记录的变量,则应该将这些变量转化成数字(比如将性别的男女转换成1和0的编码)。由于回归分析是以最小化预测Y和实际Y之间的差异为目标的,在数据中若有极大的异常值,也会给回归分析的精确度带来挑战。比如遇到了恶劣天气或者疫情的影响,在模型中四个因素都不发生变化的情况下,可能会出现偏离日常值的外卖订单数,对于这类数据可预先从建模数据中剥离,或者将类似的外在因素编码为一个新的变量放入模型中,以此保证回归分析预测的稳定和准确。

    在本节中,我们用Excel的回归分析演示了构建模型,优化模型以及通过新的数据验证模型效果的过程。通过这个工作流程,回归分析可以更广泛的帮助我们实现有效的预测,从而在不同的业务场景中做出适合的决策。回归分析同样可应用在用户层面,比如基于用户交易数据(金额,品类,笔单价格等);用户的个人特征信息(注册渠道,所在地区等);用户线上行为(注册后登录APP频率等)特别是对以往营销活动的反应(点击过什么推送,短信链接访问次数等)来预测每位用户的LTV,可以帮助调整在营销推送上的投入,对于高LTV的用户可以适当给与更高价值的优惠券,或者人工外呼等更VIP的体验,而对于低LTV用户则更多配备自动化触达,减少相关的人工和营销活动投入成本。

    4.4.3 分类预测

    分类预测与回归分析之间最明显的区别在于所预测的因变量Y的类型不同,回归分析的因变量Y必须是连续型的数字(LTV,销售额,保险费用等)。分类预测中的Y则是基于业务场景的有限数量的类别,而其中最常见的是二分类预测,即因变量只有两种可能的取值(点击vs未点击,购买vs未购买)。在准备分类预测的数据时,这个Y的值会被对应的记录为1和0,通常以1来标记我们所关注的动作(点击/购买)。

    本节中我们所使用的案例数据来自于一家移动通信公司记录用户流失的数据,在用户分析概念中已经提到过如何定位到有流失倾向的客户并及时进行阻止是个重要的问题,对于移动通信服务商来说更是如此,一旦用户转向竞争对手,通常短期内很难再挽回。为了在实操中更好的理解分类预测的逻辑,我们先只使用少量用户和变量用于建立模型。如图 4.41 所示,原始数据中的Y变量是Churn,它用YES/NO来标记用户是否流失,我们用IF函数生成模型可用的“流失”变量,对应1表示流失,0则表示未流失,而X值则包括用户的在网时长(月数),当前资费,以及用户的性别。需要注意的是,数据中的CustomerID不应作为X使用。

    图 4.41 移动通信公司用户流失数据
    图 4.41 移动通信公司用户流失数据

    这个数据看起来和图 4.10 的外卖数据并无很大区别,我们是否可以直接使用回归分析来建立模型呢?以流失作为Y,以资费,在网时长和性别作为X,图 4.42 显示了这个回归模型的结果,可以看到的是首先模型的准确性很差,仅为0.22,其次在回归系数中,除了在网时长之外,资费和性别的p值均超过了0.05。显然回归分析对于Y值的预测效果很差。

    图 4.42 对二分类数据做线性回归
    图 4.42 对二分类数据做线性回归

    在分类预测中,我们并非直接预测 1/0,而是预测某条记录属于各个类别的概率。最常用的方法是逻辑回归(logistic regression)。为了把“X 加权求和”这种熟悉的思路变成 0~1 之间的概率,逻辑回归其实只做了四件事;下面四个公式分别对应这四步,读者可以按顺序看,不必一次性记住。

    第 1 步:先算一个综合分数。和线性回归一样,我们把每个 X 变量乘上对应的系数再加总,得到一个综合分数 g(X)。这个分数可以是任意正数或负数,本身还没有概率含义。

    g(X)=β0+β1X1+⋯+βnXng(X) = \beta_0 + \beta_1 X_1 + \cdots + \beta_n X_n

    第 2 步:把分数弯折成概率。概率必须在 0~1 之间,所以用 Sigmoid 函数把 g(X) 弯折成概率。本书案例训练模型输出的是“不流失”的概率 P(Y=0),因此:

    P(Y=0∣X)=σ(g(X))=11+e−g(X)=eg(X)1+eg(X)P(Y=0 \mid X) = \sigma(g(X)) = \frac{1}{1 + e^{-g(X)}} = \frac{e^{g(X)}}{1 + e^{g(X)}}

    第 3 步:从概率回到对数几率。Sigmoid 的反函数告诉我们:g(X) 其实是“不流失概率”与“流失概率”之比的对数,叫做对数几率(log-odds)。这意味着系数 β 每增加 1,对应的对数几率就增加 β,业务上可以直接解释方向。

    g(X)=ln⁡ ⁣(P(Y=0)P(Y=1))g(X) = \ln\!\left(\frac{P(Y=0)}{P(Y=1)}\right)

    第 4 步:让模型学会“最准”。训练模型就是找出一组最合适的 β0…βn。衡量的标准很简单:对每个样本,取它真实类别对应的概率;把所有样本的这些概率的对数加起来,得到对数似然;我们要让这个值尽可能大。

    ℓ(β)=∑i=1mln⁡P(Yi∣Xi)\ell(\beta) = \sum_{i=1}^{m} \ln P(Y_i \mid X_i)

    所以,逻辑回归的“学习”目标就是:找到一组 β,使上面的对数似然最大。在 Excel 里,这个最大化任务交给规划求解(Solver)来完成。

    具体操作上,Excel 没有逻辑回归的内置函数,所以我们需要对原始数据做一定处理,再用规划求解来最大化对数似然之和。

    如图 4.43 所示,我们先设定截距与三个 X 变量的初始系数(A3:D3),由此算出每条记录的线性预测子 g(x)。以第 17 行为例:g = A3+B3·B17+C3·C17+D3·D17(B/C/D17 为对应 X 值),本例初始值下约为 1.00;经 Sigmoid 得到“不流失”概率 G17 = e^g/(1+e^g) ≈ 0.73;因该行真实标签 A17=0,正确类别概率 H17 = G17 = 0.73,对应对数似然 LN(0.73) ≈ −0.31。把全部用户的对数似然求和得到 H2(初始值约 −22.28)。随后用规划求解(Solver)调整 A3:D3 使 H2 最大化,具体单元格公式与 Solver 设置见下方工具提示。

    工具提示:逻辑回归的 Excel 实现(规划求解)

    线性预测子(第 17 行为例):=A3 + B3*B17 + C3*C17 + D3*D17,结果记为 E17 = g(x)。

    不流失概率:=EXP(E17)/(1+EXP(E17)),记为 G17 = P(Y=0)。

    该行“正确类别概率”:=IF(A17=0, G17, 1-G17),记为 H17(A17 为真实标签,0=未流失、1=流失)。

    对数似然:=LN(H17);全部行求和得到 H2,即目标函数。

    规划求解设置:目标=H2(最大),可变单元格=A3:D3,方法选“非线性 GRG”,并取消勾选“使无约束变量为非负数”。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.43 逻辑回归数据准备

    随着三个X变量的系数取值不同,对应的g(x)和预测概率也不同,接下来就是用线性规划功能,求得在不同的系数组合下,如何让对数似然的加总值达到最大。和回归分析过程一样,首先需要在加载项处将需要使用到的规划求解加载项选中,如图 4.44 所示。

    图 4.44 加载规划求解项
    图 4.44 加载规划求解项

    加载好了之后,在“数据”栏下点击规划求解,出现如图 4.45 所示的对话框,设置目标就是Loglikelihood的加总值(H2),“通过更改可变单元格”即截距和系数(A3:D3)。默认选项中将无约束变量为非负数需要取消勾选,求解方法使用非线性GRG,然后点击求解。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.45 规划求解参数设置

    如图 4.45 所示,求解后出现了“规划求解收敛于当前的解“提示,说明模型已经运行成功。此时对应的结局和模型系数也已经被自动调整,E列到I列的各个函数也对应得到了更新。此次模型输出的公式实际上表达为Ln(流失为0的概率/流失为1的概率)=1.0494-0.0288*资费+0.0642*在网时长+0.1790*性别。以在网时长为例,0.0642表示在其他因素不变的情况下,在网时长每提升1个月,用户不流失的对数几率(log-odds)就会提升0.0642(对应 odds ratio = exp(0.0642)≈1.066,即不流失几率约提升 6.6%)。和回归分析一样,它的方向性和量级都有类似意义,正向则代表越偏向目标(流失为0),系数越大代表影响力越大。模型中在网时长系数为正,而资费系数为负也是一定程度符合预期的,在网时长越久,用户对该通信服务商的忠诚度可能更高,而如果资费很高,则很容易促使用户去寻找替代者。

    图 4.46 逻辑回归模型结果

    由于逻辑回归目前还不是Excel中的内置功能,无法像回归分析那样提供完善的统计输出报告,但这并不妨碍我们对模型的准确度做检验。原始数据中已经有了真实的Y(流失),而图 4.47 的G列就是我们的模型预测的Y=0的概率值。我们基于此概率值做划分新生成预测值,如图 4.47 所示,若概率大于等于0.5则预测值为0,若概率小于0.5则概率值为1。

    图 4.47 基于流失为0概率生成预测Y值
    图 4.47 基于流失为0概率生成预测Y值

    在有了预测值和真实值,我们可以将这两组数汇总从如表 4.14 所示的矩阵。矩阵中左上和右下是我们预测准确的用户数(25个),而左下和右上是预测错误的用户数(11个)。这个矩阵也称为混淆矩阵,是用于展示二分类模型预测准确性的标准输出之一。在这个矩阵基础之上,我们可以计算出模型准确度,即25/36得到69.4%,这个指标类似于回归分析中的R方指标,越大则代表模型的预测准确度越高。

    真实0(未流失)

    真实1(流失)

    预测0(未流失)

    21

    7

    预测1(流失)

    4

    4

    表 4.14 逻辑回归的预测与真实值矩阵(混淆矩阵)

    和回归分析一样,引入更多有意义的变量也能提升逻辑回归的预测效果,在原有数据汇总加入“现有合约类型”变量。在数据中现有合约类型是两个取值,“月度合约”和“年度合约”,将他们分别标记为0和1,这也是因为任何字符值都必须转化成数字才能进入模型计算。经过同样的模型运算过程,得到新的g(x)为0.5684-0.0255*资费+0.0661*在网时长+0.4359*性别+13.7883*现有合约类型,从这个系数中就可以看到现有合约类型有极大的影响力。从业务意义上,使用年度合约的用户更不容易流失,这也符合我们的预期。以此模型得到的混淆矩阵如表 4.15 所示,其精准度提升到了77.8%(28/36)。

    真实0(未流失)

    真实1(流失)

    预测0(未流失)

    23

    4

    预测1(流失)

    4

    5

    表 4.15 迭代后的模型混淆矩阵

    除了通过增加变量提升模型准确度,逻辑回归同样也可以用未建模的数据去做交叉验证,这个过程和回归分析中所展示的很类似,我们就不再赘述。需要提请读者注意的是,逻辑回归模型的稳定性,很大程度依赖于数据中1和0分布的均匀。试想我们的数据集,如果是100个用户且其中只有5个流失而95个未流失,那么模型只需要预测所有的用户为未流失,即可以实现95%的预测精准度,但这种模型是有偏的。因此在准备数据时,我们要检查数据中1和0的占比,而在我们例子中它们分别是30:70 这是在可接受范围内的。如果样本中1的数据占比低于5%,则可选择通过抽样的方式,即保留数据中所有1的样本,再从0 的样本中随机抽样,最终形成配比合理的建模数据集。

    基于案例中模型的结果,我们可以对用户都建立预测其流失的概率,概率越高则越有可能流失,从银行营销角度,可以筛选用户流失概率高,且客户AUM高的用户做优先触达,采取措施阻止用户的流失。这也是以逻辑回归为代表的二分类模型最典型的应用方式,即将人群中更有可能产生特定目标行为(购买,点击,流失等)的圈选出来,执行特定的业务策略动作,就能获得更佳的效果。

    逻辑回归除了用于回答上述的营销问题,也同样适用于其他1/0类的预测。在信贷风险方面,将有过坏账行为记录的用户标记为1,而将正常还款的用户作为0,使用逻辑回归可以得到对用户违约的预测概率,这些概率经过数学转化之后就会成为我们日常所见到的芝麻信用分以及人行征信分等。信贷评分体系的建立和应用,帮助了信用卡发行商和企业商户都能规避潜在的经营风险。

    不仅如此,我们还可将逻辑回归与线性回归结合使用,比如为了防止用户流失,可对有潜在风险的用户发放无门槛的优惠券,同时也希望挽回之后能带来持续的订单。因此可同时建立两个模型,模型1为预测用户在收到券之后是否会留存(用券留存为1,否则为0),而模型2则预测挽回用户后续三个月用户的交易订单数。模型1通过逻辑回归输出各个用户的挽回概率,模型2则输出预测的交易订单数,将同时在模型1和2都排列在前的用户选出,则可更大可能的提升这次用户挽回的营销ROI。

    4.4.4 时间序列

    回归分析是以X预测Y的变化,但在许多场景中的Y存在随时间而变化的趋势,时间序列分析就是将这些周期性变化的趋势从数据中识别出来,识别背后的规律并对未来做预测的方法。例如在大旅游行业中,每年固定的五一和十一长假会带来大量的航空,铁路,酒店以及相关出行服务的需求,而在服饰类企业中,季节之间的变换也会带来门店销售额的周期性变化。

    时间序列分析的方法有两种,一种称为移动平均(Moving Average),它的核心思想是,若需要预测t+1时期(天/周/季度/年)的数据,则汇总过去n个时期的历史数据并计算平均值,即t-n+1期到t期的平均数。这里对n的选择需要根据业务的背景,和预测的结果做不断优化。公式表达为

    y^t+1=1n∑i=t−n+1tyi\hat{y}_{t+1}=\frac{1}{n}\sum_{i=t-n+1}^{t} y_i

    即把最近 n 期(本例为 12 个月)的实际销售额求简单平均,作为下一期的预测值。n 越大曲线越平滑,但对近期突变也越不敏感。

    时间序列的另一种方法为指数平滑(Exponential Smoothing),它与移动平均的方法不同之处在于,后者将历史n期的数据都视为同等重要,而指数平滑则更重视近期数据,以一次指数平滑预测为例,它的预测公式为

    y^t+1=α⋅yt+(1−α)⋅y^t\hat{y}_{t+1}=\alpha\cdot y_t+(1-\alpha)\cdot\hat{y}_t

    其中 y^t+1\hat{y}_{t+1} 是对 t+1t+1 期的预测值,yty_t 是 tt 期的实际值,y^t\hat{y}_t 是对 tt 期的预测值,其中α介于0和1之间也被称为阻尼系数(注:此处 α 实为平滑系数,Excel 中“阻尼系数”指 1−α)。从这个公式可以看出,所有先前的观测值都对当前的平滑值产生了影响,但它们所起的作用随着参数α的幂的增大而逐渐减小,所以称为指数平滑方法。从这个角度,α也经常被叫做记忆衰减因子,对早期发生的历史数据更容易“遗忘“。

    相较回归和分类数据,本节我们使用的数据结构较为简单,原始数据为沃尔玛某门店连续33个月的销售数据。值得注意的是,时间序列的原始数据必须是等距离的数据分布,按天/周/月度/季度但不能在原始数据中有间隔变化。

    月

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    销售

    6,307,344

    5,871,294

    7,422,802

    5,929,939

    6,084,081

    7,244,483

    6,075,953

    5,829,794

    7,150,642

    6,485,547

    表 4.16 时间序列数据(1-10月)

    我们首先用折线图来观察下数据的周期趋势,如图 4.48 所示,数据在11月和23月都出现了高峰,其他月份之间跨年(也就是间隔12个月)的周期趋势也比较一致。

    图 4.48 月度销售额的周期趋势
    图 4.48 月度销售额的周期趋势

    在Excel中实现移动平均和指数平滑,都使用Excel中的数据分析模块。我们先以移动平均为例,在对话框中选择移动平均选项,如图 4.49 所示。

    图 4.49 选择移动平均方法
    图 4.49 选择移动平均方法

    如图 4.50 所示,在出现的移动平均对话框中,输入区域输入时间序列数据(注意只需要选择B列),间隔是前面公式中的n,这里我们填写为12,最后勾选择图表输出和标准误差选项。

    图 4.50 移动平均方法

    点击确定后得到移动平均的结果,基于预测值和真实值之间的差,我们可以计算相关的准确度指标。对于产品销售类的时间序列,业务意义是非常明显的,预测偏高时备货多库存周转就会慢,而预测偏低时备货不足销售机会就会被错失。如图 4.51 所示,时间序列分析中衡量准确度的常见指标有三个:

    1. 平均百分比误差(MPE),先计算百分比误差,即(预测值-实际值)/实际值,再取平均值,本结果中MPE为2%。
    2. 平均绝对百分比误差(MAPE),同样计算百分比误差,但对结果取绝对值,这主要是为了避免正差异和负差异互相抵消,比如数据中出现的 +10% 与 −11%,在 MPE 中正负会相互抵消,而 MAPE 取绝对值保留了这种差异,最终结果为13%。
    3. 均方根误差(RMSE),在本例中函数为SQRT(SUMXMY2(B5:B34,C5:C34)/30),即先求预测值和真实值的差值平方和,除以观测数30再开根号,这同样也是计算数据之间的偏差的一种统计方法。
    图形用户界面, 表格

描述已自动生成
    图 4.51 移动平均预测结果

    现在我们来看指数平滑的工作过程。在数据分析中选择指数平滑后,即得到如图 4.52 的对话框,和移动平均不同的是,指数平滑需要输入的是平滑系数 α(注:Excel 中“阻尼系数”实际指 1−α),通常选择0.3作为初始模型。

    图形用户界面, 应用程序

描述已自动生成
    图 4.52 指数平滑模型参数

    在取得预测值之后,利用类似的方法计算出准确度指标,MPE为3%,MAPE为15%,而RMSE为1,268,373,都劣于前述的移动平均方法。如图 4.53 所示,以折线图表示实际值和两种模型的预测值,也能看到移动平均的预测值要略微更贴近实际值,和三个指标之间的比较结果是一致的。

    图 4.53 图形对比移动平均和指数平滑预测
    图 4.53 图形对比移动平均和指数平滑预测

    原则上移动平均方法对序列的波动是有抑制作用的,特别是加大间隔n,拉长时间距离就能让预测更平滑,但同时也容易使得预测数据不敏感,指数平滑方法则更容易被近期数据异常所影响,但同时也一定程度能呈现数据中应该有的波动。在2016版之后的Excel中,基于指数平滑Excel提供了新的时间预测函数FORECAST.ETS(),在这个函数中,提供了更加自动化识别数据中周期性的能力。需要提示读者的是,在Windows版本的Excel中,“数据“下面会有”预测分析“的专门栏目,但在部分旧版 Mac 版本中无此选项,函数则在两个版本中均可使用,因此此处我们只介绍函数的使用。

    该函数的基本语法是FORECAST.ETS(target_date, values, timeline, [seasonality] ),其中target_date是所要预测的目标时间,timeline和values分别对应历史的观测时间和实际数据,可选项seasonality是对应季节性的参数:设置为 0 或省略时,Excel 自动检测周期性;设置为 1 表示无季节性(周期长度为 1);设置为 ≥2 时由用户手动指定周期长度。图 4.54 基于前面24个月对25-33月的数据做了预测,这里我们选择将seasonality留空以实现更优化的选择,所以示例中25行的公式为FORECAST.ETS(A26,BB2:BB25,AA2:AA25)。经过测算,准确度指标为 MAE 3%(见下方批注)、MAPE 11%、RMSE 831,080,三项指标均优于移动平均,说明 ETS 实现了较大幅度的优化。

    图 4.54 FORECAST.ETS函数预测

    在应用上,和其他分析模型一样,时间序列除了必要的精准度,更需要的是同时能找出驱动因素。以典型的销售额预测为例,从人货场中识别出销售驱动因素诸如价格,促销,产品特性,用户分层等,从而能够支持在订货,库存,店铺发注等方面的经营决策。

    4.4.5 推荐分析

    协同过滤(Collaborative Filtering)是最常见的推荐引擎算法之一。区别于传统的基于人口统计学的方法,协同过滤的机制核心是根据所有用户对产品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,然后基于这些邻居的历史偏好信息,为当前用户进行推荐。可以看到,这个方法的基本假设是,喜欢类似产品的用户可能有相同或者相似的口味和偏好。

    图 4.55 用户为基础的协同推荐

    图 4.55 展示了这个方法的基本原理,它的基本原理是通过各个用户在已有的产品上的偏好记录,计算不同用户之间的相似度。假如用户A和用户B/C在产品的偏好上比较近似,且用户B/C都喜欢产品D,则我们推测用户A也会喜欢产品D。

    让产品推荐成为聚光灯下焦点的事件,是美国著名的视频点播服务商Netflix于2006发起一项竞赛,任何组织或个人只要能够提交比它现有电影推荐系统Cinematch效果好10%的新方法,就可以获得一百万美元的奖金。竞赛已经吸引了来自168个国家的27600多支队伍参加,但直到2009年6月26日,这一大关才终于被由一些顶级团队联手形成的BellKor团队打破,成绩提高了10.05%。别小看了这10%的提升,对于拥有巨大群体的互联网公司来说,这可能就意味着千万级的营业收入增长。

    接下来我们以某视频网站基于用户对电影的评分来进行推荐预测,如表 4.17 所示,6 位用户都已经看过了哪吒、流浪地球、复仇者联盟以及冰雪奇缘四部电影,并且前 5 位用户还额外评价了绿皮书和中国机长两部电影(第 6 位用户只看过这四部共同电影,绿皮书评分已知为 3,但对中国机长尚未打分)。现在需要基于前 5 位用户对「中国机长」的评分,来预测第 6 位用户对中国机长的评分,以此判断她是否会倾向于观看这部电影。

    用户

    电影评分

    哪吒

    流浪地球

    复仇者联盟

    冰雪奇缘

    绿皮书

    中国机长

    1

    1

    3.5

    3

    2.5

    5

    3.5

    2

    2

    4

    1.5

    3.5

    3

    5

    3

    2.5

    3

    3

    3.5

    3.5

    3.5

    4

    2.5

    5

    1.5

    2

    4

    3

    5

    3

    4

    3.5

    3.5

    2.5

    5

    6

    3

    3.5

    3

    2.5

    3

    表 4.17 电影评分数据表

    基于用户的协同推荐,首先是计算用户6和其他5个用户的相似度,如图 4.57 ,这里使用的是在计算相关系数所使用的CORREL()函数。注意必须是用户都看过的电影作为计算相关系数的基础,如果某个空缺则应该略过,从图中可以看到用户6和用户4的偏好相关系数达到了0.79是最为正相关的,而和用户3的评分则是相关系数-0.5,这些相关系数会接下来影响对评分的预测。

    图形用户界面, 表格

描述已自动生成
    图 4.57 计算用户评分之间相关系数

    第二步是计算各个用户在已有电影中的平均分,这里用average()函数即可得到,接着计算所要预测的目标电影和该平均分之间的差,比如用户1在已经看过的四部电影平均分是2.5,而给绿皮书他打出了5分,则偏差是2.5。

    表格

描述已自动生成
    图 4.58 计算用户评分加权及最终预测分

    第三步是接下来评分加权,如图 4.58 所示,以用户6和其他各个用户的相关系数与偏差的乘积作为分子,而分母则是各用户相关系数之和(即 C11:C15 的加和)。这里应用的函数是SUMPRODUCT(),它的语句格式是SUMPRODUCT(array1,[array2],[array3],...),图中所展示的公式所要实现的效果就是0.38*2.5+0.17*0.25-0.50*0.5+0.79*1.25-1*0.5,再除以C11:C15的加和。

    把上面三步合起来,用户 u 对电影 i 的预测评分可以写成下面这个式子:

    r^u,i=rˉu+∑v∈Nusim(u,v) (rv,i−rˉv)∑v∈Nusim(u,v)\hat r_{u,i} = \bar r_u + \frac{\sum_{v\in N_u}\text{sim}(u,v)\,(r_{v,i}-\bar r_v)}{\sum_{v\in N_u}\text{sim}(u,v)}

    其中:rˉu\bar r_u 是用户 u(本例用户6)自己已看电影的平均分(=3.0);sim(u,v)\text{sim}(u,v) 是用户 u 与邻居 v 的相关系数(相似度);(rv,i−rˉv)(r_{v,i}-\bar r_v) 是邻居 v 对目标电影的相对偏好,也就是上一步算出的“偏差”;分母把所有邻居的相关系数加起来做归一化。本例用 图 4.58 中的实际单元格代入,结合表 4.17 中中国机长列的数据,最终对用户 6 的预测评分为 4.09(详见下文)。

    最终,按照上面的公式对中国机长这个电影进行预测(在 Excel 中只需把计算偏差的引用从绿皮书所在列改到中国机长所在列),我们得到用户 6 的预测评分约为 **4.09**(3 + 1.09)。考虑到用户 6 已经给出的绿皮书评分为 3,而对中国机长的预测分明显高于自身基准,可以初步判断她更倾向于观看中国机长。

    在这个电影推荐案例中,我们通过用户之间的相似度实现了推荐分析的基本方法。在数据量和种类越来越丰富多样的今天,如何让用户发现自己潜在的兴趣和需求,无论是电商、社交还是其他网络应用,这都至关重要。换个角度思考,这类问题也可以被拆解为用户是否喜欢某个产品的预测问题,因此可以将分类预测和推荐类型的结果做横向比较,选择其中更优的解法。早期亚马逊的“为你推荐”就是横向将两种方法结合应用,一方面根据用户历史的购物和浏览信息做推荐,另一方面也配合使用不同用户评分交叉。据报道亚马逊在2016年将相关推荐功能整合到购物全流程中之后,该季度亚马逊销售额增长29%,从2015年同期的99亿美元增长至 128.3亿美元。

    4.4.6 聚类分析

    聚类分析,是基于各种数据特征,将产品,用户或者其他分析对象中类似进行组合,最终形成有限类别的过程。所谓“物以类聚,人以群分”,这个分析的过程最核心的就是判断人与人或者物与物之间的相似度或者距离,距离近或者相似度高的,就应该被归纳到一组,而距离远或者相似度低的就应该在不同组。

    聚类分析和前面四种方法最大的差别在于,聚类数据最终形成的“类”,并不是已经有明确定义可以被观察到的Y值,比如同样是对用户的分析,分类分析中就必须是要观察到1/0的分类然后在预测,而对用户推荐不同的产品,也同样可以根据她后续的购买行为给与验证。由于这种差别,我们通常将回归和分类等分析方法称为有监督(supervised)或者有标注的(labeled)的分析方法,而聚类这样的分析则称为无监督(unsupervised)或者无标注(unlabeled)。因为没有实际的Y值,聚类分析也也没有绝对意义上的对错和精准度的评价。在实际操作中,通常以指标后验和业务策略落地的效果来评估聚类的好坏。

    聚类方法最常见的应用场景是对客户分群,利用顾客的各种特征将其分成若干顾客群组,从而使得组内顾客较为相似,而不同组之间顾客差别更明显。提到聚类分析,我们经常把它看做RFM分析的加强版,也因为两者都遵循三个步骤

    1. 选择用于分群的重要用户特征
    2. 基于用户这些特征上的差异划定分层
    3. 将分层聚合,确定最终分群,用户特征和经营策略

    但两者也存在许多差别,在(1)中RFM已经预先设定了三个特征,而聚类分析则可以融入尽可能多的变量,在(2)的划分过程中,RFM的划分主要依靠人工判断,容易被抽样得到的数据所影响,而聚类分析则基于标准化的距离衡量,也因为此在最终(3)的分群中,聚类分析的结果能找到更多业务思维看不到的盲点。

    在Excel中我们以最常用的K均值聚类方法为例,这个方法需要先随机选择K个样本(可以理解为种子用户)作为初始的聚类中心,这里K也是最终的输出的类别数量。聚类的分组通常根据实际需要会控制在4-5个左右。在分组数目较少的时候,分组不足以真正细化区分用户之间的差异,而在分组数目太多(比如超过8个以上),则通常不利于后续实际的营销操作,增加实施的成本。

    在确定了这些聚类中心之后,我们就会计算其他用户和这些用户之间的距离,将每个用户分配给离他最近的聚类中心,如此反复,直到最后全部用户都有了属于自己的类别。在R/Python类的工具中,还会根据类别的聚类中心重新计算,重复上述过程,直到聚类中心不发生明显变化。

    除了选择K的数量,计算用户之间距离就成了聚类方法中最重要的问题。这里要特别注意数据的量级对距离计算的影响。我们先看个简单的例子,我们有4个用户的数据,他们的年龄和收入分别如表 4.18 所示

    表 4.18 未标准化的年龄与收入数据
    表 4.18 未标准化的年龄与收入数据

    如果我们将这四个数据简单的放在散点图上,看起来Adam和Mike用户属于同一类型,但如果我们做了标准化的处理之后,实际上四个都属于不同类型。在这里的标准化使用的是将所有变量变为均值0,方差为1的过程,这也是在下面的聚类分析时所使用的标准化方法,对于每个变量它的计算公式是

    对每个变量的标准化公式为 z=x−μσz = \frac{x - \mu}{\sigma},其中 μ\mu 是原始变量的均值,σ\sigma 是标准差。

    这个标准化过程是考虑了年龄本身是在0到100之间,而收入可能在几千到几万之间,年龄之间的差距5,和收入之间的差距5背后的“距离“是不一样的。图 4.59 可以很明显的看到这四个用户在不同距离标准下的差别,原本看起来是两组用户被分散到了坐标轴的四角。

    图表, 散点图

描述已自动生成 图表, 散点图

描述已自动生成

    图 4.59 标准化与未标准化的距离对比

    接下来我们以某公司的会员数据为例,现收集到了1000名用户的年龄,预估月收入,当年购买品类数以及总消费额。如图 4.60 所示,这四个变量呈现出了明显的量级差异,品类数目通常小于10,而年龄则是在100以内,消费额在几千元左右,而预估月收入则有高于2-3万元的数据。此处将选择对数据做标准化处理,即将所有数据都转化为以0为均值的标准正态分布值。如图所示,我们先用AVERAGE()和STDEV()函数取出四个变量的均值和标准差。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.60 计算原始数据的均值和标准差

    Excel提供对数据做标准化的函数是STANDARDIZE(),它的语句格式是STANDARDIZE(x, mean, standard_dev),其中x是需要进行正态化处理的数字,mean和standard_dev就是我们已经预先计算好的算数平均值和标准差。如图 4.61 所示,我们将生成的新变量称为z_age,对于其中每行数据都固定的调用B2和B3。以此方法,对应的生成z_income,z_category,z_spending三个标准化后的收入,品类数以及消费变量。

    表格

中度可信度描述已自动生成
    图 4.61 对四个变量做标准化处理

    如前所述,k-means类型的聚类方法是以随机挑选k个数据作为聚类的起点,我们在此也随机挑选了三个用户作为种子,用户id分别为6,60和600。如果对数据中的用户有比较明确的预判断,也可以选择特定的用户作为起点。接下来任务是计算所剩余的994个用户和这三个用户之间的距离,距离使用对应元素差值的平方和(即欧氏距离的平方)来计算。这里Excel提供了非常好用的SUMXMY2函数,它的语法是SUMXMY2(array_x,array_y),而这个函数就是计算x和y两组数据中对应数值之差的平方和。如图 4.62 所示,对于第4个用户,计算他和种子用户(id=6)的距离,使用的公式是SUMXMY2(MM2:PP2,F10:I10),这里将种子用户的数组做锁定,以便在公式拖动时能正确的应用到其他所有用户。K列生成的数据我们称为distance-1,即对种子用户1的距离,应用此公式计算出distance-2和distance-3。这里可以注意到第6个用户和自己的距离是0,这也是符合预期的。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.62 计算各用户与种子用户之间的距离

    如图所示,先用MIN()函数取出三个距离中的最小值,再用MATCH()函数得到对应的分组cluster。Match函数的作用是在指定单元格中搜索特定的项,然后返回该项在此区域中的相对位置,它的语法是 MATCH(lookup_value, lookup_array, [match_type]),其中 lookup_value 是要查找的值,在图 4.63 中示例数据中就是 M17(三个距离中最小的),而 lookup_array 是要查找的范围,示例数据是 J17:L17(每一行即该用户三个距离值)。⚠️ match_type 若省略,Excel 默认按「升序近似匹配」查找小于或等于查找值的项,要求数组已排序;而此处三个距离并未排序,因此应当显式指定 match_type 为 0(精确匹配),否则结果不可靠。对于图中所示 M17 值是 4.92,精确匹配后即返回它所在的列位置(公式结果为 2),将次公式应用到N列所有即得到每个用户对应的聚类值。

    图形用户界面, 应用程序, 表格, Excel

描述已自动生成
    图 4.63 选择最近距离的用户归类

    我们可以用数据透视表来看下这三类用户的特征,对年龄,预估收入,品类数和总消费额取平均值,如图 4.64 ,可以看到第1类用户年龄中等,收入较低但购买品类和消费金额是最高,推测可能是有较强忠诚度的用户群体,而第二类用户较年轻,收入也最高,购买品类少但总消费额居中,推测可能是对特定品类偏好的年轻用户,而第三类用户则是年龄偏高,收入中低且总消费额最低,推测是价值属性较低的一类用户。

    图 4.64 各组用户的指标
    图 4.64 各组用户的指标

    如果数据中变量众多(比如超过10个以上),则可以考虑先进行相关分析,找出彼此强相关的变量,再结合业务背景筛选出较合适的因素。比如在某个保险公司的用户分群中,有关用户的数据包括了高尔夫球爱好者,爱好游轮旅游,以及白金信用卡持卡者这三个变量。它们其实都反映了用户属于高端人群的信息,因此可以选择其中之一(比如白金信用卡持卡)作为聚类分析的模型变量。这个筛选过程也被称为降维的过程,是从众多信息中提取中精炼的部分予以保留,剔除信息杂草让模型更精简稳定。

    客户管理和市场营销的从业者们基于顾客的个人,行为和交易等数据对顾客和市场进行分群,然后深入了解和认识各个顾客群体,制定更有效的顾客管理策略和更具针对性的市场营销策略。我们需要在结果之后对数据重新审视:聚类之后的用户分群是否有明显的特征?聚类之后用户分群是否有足够数量的用户?这些分群是否能够被触达?也正因为聚类分析是比较偏探索性的分析,这些问题的答案能够更好的确定什么是好的聚类结果。

    总结与思考

    我们先回顾下本章所介绍的各个武器,趋势分析和下钻对比主要用于大的业务趋势判断,找到需要具体分析的异常点。用户分析则建立在生命周期和终身价值的概念之上,所谓没有两个顾客是一样的,通过漏斗,队列和用户分层我们找到他们特征和行为上的差异。进阶分析方法则提供了让分析更自动化更高效的武器,有监督的方法基于历史数据提供丰富多样的X,找出影响Y的关键变量,形成能够预测未来的模型,无监督的方法则帮助在众多无序的信息中找到关联。

    在介绍这些方法之前,我们强调了选择方法的科学性,可解释性和敏捷三大原则。一个商业问题可以被多种方法解决,比如对用户特征的分析,可以用下钻分析结合TGI,也可对用户分层,或者用自动化的聚类分析方法。但三者在可解释性和敏捷性上各有差别,在挑选过程中我们要考虑分析工作的ROI,做出合理的选择。

    本章的思考题也用于帮助读者思考方法选择,主题是新产品销量预测。这是个非常有业务价值的分析问题,如果能对新产品销量有了精准的预测,那就能更好的控制上游供应链和生产环节的规划,也能做好门店层面的库存管理。以全球知名的玩具品达积木制造商乐高为例,这家公司每年都会有各种主题的新品上市。和其他快消类产品不一样的是,乐高的生产流程比较长,不可能像食品饮料类产品对市场做出更快的反应,因此预测新的乐高产品销量就更加意义重大。

    这类预测问题最大的挑战是,我们并没有这个商品历史上的销售数据,所以回归和时间序列类的方法是无法直接使用的,那么该如何设计预测方法?这里我们暂且不考虑任何复杂的AI模型,读者不妨有空可以去乐高门店看看,从中也许能找到一些灵感。关于这个问题,我也曾在线上向美国知名的数据竞赛网站Kaggle的创始人安东尼戈德布鲁姆提问,我会在视频中介绍他的答案,相信也会让读者眼前一亮。