2019年用户流失分析(五)——Python实现

2023-11-19

5、 模型应用

       选择4月份为正常状态的电视用户,计算他们的收视时长、收视在线天数、距最近一次收视时间、入网时长、用户主动办理次数和投诉与报障次数6个特征指标,利用构建好的用户流失模型预测5月份的用户流失情况。

5.1 离网倾向阈值

       在4月份为正常状态的电视用户数为98201。5月份真实流失的电视用户数为1391,流失率为1.40%。此时通过构建好的预测模型预测之后,计算与2019年5月真实流失的5161个用户的匹配度,即模型应用的召回率为22.57%。

       在用户流失模型的输出结果中有一个指标为离网倾向阈值,可以用来作为用户流失的概率(0~1),以区分不同用户间流失可能性的高低,概率越高越可能流失。

       在不用模型的情况下,任意给出X%的用户名单,其命中率为常数,等于离网率(均值为1.5%),召回率等于X%。

在使用模型的情况下,给出离网倾向最高的前X%的用户名单。其预测效果如表格11所示。

表格11

离网倾向阈值

流失人数

准确率

(命中率)

召回率

(查全率)

0.76

35278

0.88%

22.57%

0.63

48777

1.02%

35.73%

0.58

63129

1.35%

61.11%

0.33

80996

1.45%

84.40%

5.2 条件选择预测分析

       除了离网倾向阈值这个指标外,还可以通过特征指标的选择,观察模型的效果是否有变化。如表格12所示。

  1. 全网的用户月均在线天数为15天。
  2. 全网的用户月均收视时长为200小时。
  3. 全网的用户月均办理业务和缴费次数(包括主动缴费与被动缴费)为0.3次。
  4. 全网的用户年均投诉与报障次数为1.96次。

表格12

条件

用户数

流失人数

准确率

(命中率)

召回率

(查全率)

无条件

98201

35278

0.88%

22.57%

在线天数高于75天的用户

50841

41936

0.57%

17.04%

在线天数低于75天的用户

47360

17096

2.87%

35.23%

收视时长高于1000小时的用户

86976

72147

0.98%

51.11%

收视时长低于1000小时的用户

11225

10617

3.71%

28.32%

办理次数高于2次的用户

24631

18951

1.37%

18.62%

办理次数低于2次的用户

73570

30534

1.47%

46.08%

投诉与报障次数高于2次的用户

35691

27111

1.05%

20.56%

投诉与报障次数低于2次的用户

62510

23486

2.63%

44.43%

       从条件选择预测的分析结果可以看出,增加在线天数低于75天、收视时长低于1000小时、办理次数低于2次、投诉与报障次数低于2次的4个条件后,预测的准确率和查准率均有提高。

       后面又进行4个条件的随机组合实验,发现投诉与报障次数、在线天数这两个指标的影响显著。

5.3 模型指导意义

       在一系列用户流失的分析、建模、预测、应用的过程中,大家肯定比较关心:在流失预测模型的指导下对高流失用户开展挽留关怀活动,下个月的用户流失率会不会显著地降低呢?

       答案是不一定,因为用户流失预测模型只是揭示了“什么样的用户更可能会流失”这样一个客观规律。实际情况是在使用用户流失预测模型之后,用户流失率往往得不到大幅度的降低。下面通过一个例子来说明。

       假设当前有效用户数120万,月平均流失1.8万,流失率为1.5%。

       按照流失预测模型给出的流失倾向评分从高到低,从120万的有效用户中选取前5%的高流失倾向用户,即6万,其中真实流失的用户有120×5%×1.5%×5=0.45万个。

       用户挽留过程,会有用户的接触成功率,假设为50%。成功接触用户后又存在挽留成功率问题,假设为30%。

       此时计算根据流失预测模型来采取挽留关怀活动能够成功挽留下来的用户数量:

       高流失倾向用户数×有效用户的平均流失率×模型提升度×接触成功率×接触到的用户的成功挽留率=1200000×5%×1.5%×5×50%×30%=675人

       在这种情况下,流失率=(18000-675)/1200000=0.0144%,和不做活动的1.5%几乎没有区别。从这里我们可以看出,用户流失预测模型并没有给企业带来关于用户流失率方面的多大改变。

       那还要不要做流失预测模型呢?

       答案是肯定的。如果是单纯为了大幅度降低用户流失率,流失预测模型所起到的效果是相对较少的。原因很简单,流失预测模型其实是一种方法论,它并不能直接带来用户流失率的降低。有些用户虽然看起来还是正常的用户,但已由活跃用户逐渐转为不活跃,不再贡献利润价值。

       但是通过挽留关怀让用户继续保持活跃,继续贡献利润价值,用户流失预测模型是可以的,最大限度地让用户保持活跃状态。

       假定每月可以接触6万用户,根据由用户流失预测模型给出的高流失倾向的前5%的用户名单开展关怀与挽留工作,刚好120×5%=6万人,这时每月可以成功挽留住的用户数为675人。

       如果没有模型指导,每月可以成功挽留住的用户数:

       高流失倾向用户数×高价值用户的平均流失率×接触成功率×接触到的用户的成功挽留率=1200000×5%×1.5%×50%×30%= 135人

       可以发现有模型指导的挽留比没有模型指导的挽留在每月的工作中成功地多挽留了675-135=540个用户。假设这些成功留住的用户可以继续保持活跃状态的时长为3个月,有效用户平均贡献金额每月50元,则每月由于挽留效率的提高可以获得的额外收益将为540×50×3=81000元。

       一年内,年总收益将增加81000×12=972000元。若用户的月平均金额贡献为几百元,则更多收益。即使模型的提升度为3的情况下,每年的收益依然能够增加486000元。

       所以,用户流失预测模型不能只看到模型预测结果准还是不准,还需要应用到实际的用户挽留关怀工作当中去,这样才能看到实实在在的效益变化。

Python用户流失系列文章一月一更!

文章未经博主同意,禁止转载!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2019年用户流失分析(五)——Python实现 的相关文章

  • 在 python pandas 中将级别附加到列索引

    我有几个具有相同列的数据框 我只想在它们的索引上合并 print df1 out Value ISO Id 200001 8432000000 USD 200230 22588186000 USD 200247 4633000000 USD
  • 如何并行安装/编译 pip 要求(使 -j 等效)

    我的 pip 要求中有很多软件包需要安装 我想并行处理它们 我知道 例如 如果我想要n并行作业来自make我必须写make j n 是否有满足 pip 要求的等效命令 Thanks 有时 pip 使用 make 来构建依赖项 如果在开始之前
  • 如何获取Python对象父级?

    所以 我试图获取自定义对象 内部 的对象 这是一个例子 假设 o 是一个对象 无论是什么类型 它都可以存储变量 o Object class Test def init self self parent o This is where I
  • 如何在仍然使用 unique = True 的同时允许 ModelForm 中的空字段?

    目前在models py I have class ModelName models Model rowname models CharField max length 100 blank True unique True 就确保相同的值不
  • python解释器自动重启而不返回答案

    调用递归函数时 python解释器会自动重新启动吗 我正在编写一个快速排序算法 并尝试对一个大的数字数组 顺序 10 4 进行排序 但是当我尝试对整个数组进行排序时 python 正在重新启动 即给我 重新启动 并且存储在内存中的所有值 函
  • IndexError:布尔索引与维度 0 上的索引数组不匹配

    在我将 Numpy 更新到 1 13 1 之前 我的代码工作正常 现在我收到以下错误 IndexError boolean index did not match indexed array along dimension 0 dimens
  • xlwt 可以在单元格中创建一个包含标题和链接变量的超链接吗?

    例如 如何更改以下行 使 test 为变量 T 且 http google com http google com 是变量L ws write 0 0 xlwt Formula test HYPERLINK http google com
  • 需要Python字长函数示例

    我的家庭作业有点困难 我本来应该编写一个函数 limitWords 将输入限制为 20 个单词 如果输入超过 20 个单词 则将输入截断为仅 20 个单词 我使用 len text split 作为计算单词的方法 因此 20 个或更少的部分
  • [matplotlib]:理解“set_ydata”方法

    我试图了解如何使用 set ydata 方法 我在 matplotlib 网页上找到了很多示例 但我只找到了 set ydata 被 淹没 在大型且难以理解的代码中的代码 我想要一个简短且易于理解的代码来帮助我理解 set ydata 的工
  • 增加 sigmoid 预测输出值?

    我创建了一个用于文本分类的 Conv1D 模型 当在最后一个密集处使用 softmax sigmoid 时 它产生的结果为 softmax gt 0 98502016 0 0149798 sigmoid gt 0 03902826 0 00
  • 字段“id”期望一个数字,但得到“natsu”django

    我想创建一个 user posts 视图 其中包含与特定用户相关的所有帖子 假设有用户 Natsu 撰写的博客帖子 那么登录用户 Testuser 将能够查看所有帖子由该用户发布 即用户 Natsu 的所有帖子 blog models py
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • 如何在Python Selenium中获取WebElement的类名?

    我使用 Selenium WebDriver 来抓取从网页中获取的 用 JavaScript 编写的表格 我正在迭代表行列表 每行可能属于不同的类别 我想获取此类的名称 以便我可以为每一行选择适当的操作 table body table f
  • 2D 矩阵上的 Numpy where()

    我有一个像这样的矩阵 t np array 1 2 3 foo 2 3 4 bar 5 6 7 hello 8 9 1 bar 我想获取行包含字符串 bar 的索引 在一维数组中 rows np where t bar 应该给我索引 0 3
  • 使用 python 将多个 JSON 文件插入 MongoDB

    JSON文件如下a json b json z json 26个json文件 每个文件的 json 格式如下 a cappella word a cappella wordset id 5feb6f679a meanings id 4920
  • 无法使用python和beautifulsoup抓取网页中的某些href

    我目前正在使用 Python 3 4 和 bs4 爬取网页 以收集塞尔维亚在里约 2016 年的比赛结果 所以网址here http rio2016 fivb com en volleyball women teams srb serbia
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • 如何在我的 heroku 应用程序上安装软件包?

    我有一个使用 Shortuuid 的应用程序 https pypi python org pypi shortuuid 0 1 https pypi python org pypi shortuuid 0 1 当我使用 runapp py
  • 子进程调用,它们是并行完成的吗?

    我一直在谷歌搜索这个问题的答案 但似乎没有一个答案 谁能告诉我如果subprocess模块是否并行调用 Python 文档建议它可用于生成新进程 但没有提及它们是否并行 如果它们可以并行完成 您能否给我举一个例子或将我链接到一个例子 这取决
  • gis计算点和多边形/边界之间的距离

    我想使用 python 计算一个点到一个国家边界之间的距离shapely 它应该工作得很好 point distance poly 例如在这里展示查找多边形形状上最近点的坐标 https stackoverflow com question

随机推荐

  • Spring的跨域解决方案总结

    前言 跨域是什么 浏览器从一个域名的网页去请求另一个域名的资源时 域名 端口和协议 只要有一个不同就是跨域 我们的项目通常是采用前后端分离开发的 也就是前后端分离部署的 所以必然会存在跨域问题 CORS Cross Origin Resou
  • 【Liunx常用操作】LVM逻辑卷的介绍和相关操作(创建、删除、扩缩容)

    提示 为保证文章的正确性和实用性 文章内容可能会不定时优化改进 若您有建议或者文章存在错误请私信留言或评论指正 下面以CentOS7 6操作系统为例 介绍具体的操作步骤 如果本文对你有帮助 记得关注加收藏 1 文章前言 LVM Logica
  • 浅谈微服务异步解决方案

    导言 异步是一种设计思想 不是设计目的 因此不要为了异步而异步 要有所为 有所不为 异步不是 银弹 避免试图套用一个 异步框架 解决所有问题 需要根据不同的业务特点或要求 选择合适的设计实现方式 同步和异步问题是大型分布式系统中需要慎重等待
  • vue数据导出

    点击按钮 async download this buttonLoading true this http responseType blob params this formInline 这是默认页数 一些项目配置数据 then resp
  • SimpleDateFormat线程不安全及解决办法

    以前没有注意到SimpleDateFormat线程不安全的问题 写时间工具类 一般写成静态的成员变量 不知 此种写法的危险性 在此讨论一下SimpleDateFormat线程不安全问题 以及解决方法 为什么SimpleDateFormat不
  • Android studio 3.0+ 为模拟器导入图片

    问题 很多时候 写一个 App 的 Demo 需要加载本地图片 但是模拟器直接打开会发现 图库中是空的 这时候就需要我们手动向里面添加图片 在 Android 3 0 以前 通过 DDMS 很轻松的把图片拖进去就是了 但是 在 Androi
  • 西门子PLC各个通信协议解析,分析

    1 协议分类 0 协议背景介绍1 1 mpi接口 dp接口 rs485接口 rs232接口具体区别 一 mpi接口 dp接口 这两者均为基于RS485接口 可以理解为硬件标准 mpi与dp是通信协议的名称 可以理解为软件 二 MPI MPI
  • Linux下Qt可执行程序设置动态库及插件路径

    在linux下直接双击编译完的可执行程序发现压根跑不起来 但是在Qt Creator中能够执行和调试 那是因为可执行程序无法加载Qt的库导致的 下面提供一种解决办法 新建run sh 名称可随意修改 将以下内容写入文件中 bin bash
  • 【直观详解】什么是正则化

    转自 https charlesliuyx github io 2017 10 03 E3 80 90 E7 9B B4 E8 A7 82 E8 AF A6 E8 A7 A3 E3 80 91 E4 BB 80 E4 B9 88 E6 98
  • 一起学nRF51xx 9 -  pwm

    前言 上一讲我们学习了nrf51822定的器的使用 那行如何用定时器实现PWM输出呢 NRF51的time模块不支持 PWM 功能 不可我们可以通过定时器 PPI GPIOTE模块一起工作的方式在NRF51XX上产生 PWM 信号 下面以使
  • 2023华为OD机试真题【最佳植树位置/二分法】

    题目内容 小明在直线的公路上种树 现在给定可以种树的坑位的数量和位置 以及需要种多少棵树苗 问树苗之间的最小间距是多少时 可以保证种的最均匀 两棵树苗之间的最小间距最大 输入描述 输入三行 第一行一个整数 坑位的数量 第二行以空格分隔的数组
  • 2023年考证时间一览表

    2022年已经成为历史 在疫情背景全面开放下给大家整理了2023年全年的考试时间以及报名时间新鲜出炉 了解清楚 为2023年提前做好规划 1月份 2022年下半年中小学教师资格考试面试 报名时间 2022年12月9日 12日 考试时间 20
  • Java Web如何限制访问的IP的两种方法

    Java Web限制IP访问的两种方法 前一阵子因为在做项目时碰到了这个功能 现在好好总结一下 至于为什么要限制IP访问 我就不多说了 然后百度了一下 现在主要有两种方式去限制IP访问 第一种是最简单的方便的 第二种是通过过滤器来限制访问
  • vuforia模型脱卡功能的实现

    思路是这样 识别图视野脱离之后 将被识别的物体不再作为识别图的子物体 转而作为相机的子物体 并置于屏幕中央位置 1 首先 写个小script C 纯文本查看 复制代码 01
  • Mybatis/Mybatis-Plus驼峰式命名映射

    目录 一 mybatis驼峰式命名 二 mybatisPlus默认开启驼峰命名映射 一 mybatis驼峰式命名 方法一 使用前提 数据库表设计按照规范 字段名中各单词使用下划线 划分 使用好处 省去mapper xml文件中繁琐编写表字段
  • 团队梯队人才培养模型,60页人才梯队建设与人才培养

    团队梯队人才培养模型 60页人才梯队建设与人才培养 果断收藏 今日头条 人才梯队建设与人才培养 目录 1 人才梯队建设理念 2 人才梯队建设路径 3 梯队人才培养内容与方法 团队总监以上人员管理不成熟的表现 1 无法从项目运作导向转变到战略
  • yolov5 deepsort 行人/车辆(检测 +计数+跟踪+测距+测速)

    功能 简介 实现了局域的出 入 分别计数 显示检测类别 ID数量 默认是 南 北 方向检测 若要检测不同位置和方向 需要加以修改 可在 count car traffic py 点击运行 默认检测类别 行人 自行车 小汽车 摩托车 公交车
  • C++开源序列化库:FStruct

    FStruct是一个用于C 对象 结构体 STL容器等 和json xml字符串之间进行转换的库 采用非入侵方式 无需在原有结构体上进行修改 目前支持基础类型 结构体 以及vector list deque set map等复杂数据类型的序
  • 【C语言】字符串函数介绍三(strstr、strtok、streeror)

    前言 之前我们用两篇文章介绍了strlen strcpy stract strcmp strncpy strncat strncmp这些函数 第一篇文章strlen strcpy stract 第二篇文章strcmp strncpy str
  • 2019年用户流失分析(五)——Python实现

    5 模型应用 选择4月份为正常状态的电视用户 计算他们的收视时长 收视在线天数 距最近一次收视时间 入网时长 用户主动办理次数和投诉与报障次数6个特征指标 利用构建好的用户流失模型预测5月份的用户流失情况 5 1 离网倾向阈值 在4月份为正