数据处理:计算用户得分进行用户重要性排名

不妥之处,欢迎评论指出。

场景说明

假设我们有10000个用户的信息(涉及四个指标,不排除指标之间有相关性),我们希望能够对用户进行重要性排名,找出最重要的用户进行业务上的重点观察(业务方设定这部分用户占总体用户的20%).

四个指标的特性如下:

指标名称指标特性单因素排序时的处理方式指标重要级别
历史消费金额越大越好降序取前20%****
历史违约次数越小越好升序取前20%***
历史消费次数越大越好降序取前20%**
用户月收入越大越好降序取前20%*

我们通过上表可以发现这四个指标有以下特性:
1.前三个指标的业务意义明显相近,而第四个指标(用户月收入)则与前三个指标明显并不属于同一类别,但是该指标确实又会对前三个指标有一定的影响。同时,第四个指标的数据质量很难保证,也就是说企业所获取的用户月收入数据真实性无法衡量。
2.有的指标需要降序处理,有的指标需要升序处理,那么如何进行综合处理呢?
3.指标量纲不一。单从数值来看次数与金额明显不会是一个数量级别。

处理方式

业务方提出了一个需求:我们想知道最重要的20%用户都是谁。

方案一
业务方也没非说要计算一个总得分再进行排名,那么数据分析方想到的第一个方案是,既然业务方已经划定了各指标的重要性级别,那么我们就分层进行过滤就好啦。我们计算出一个方案,每一层抽取ai%用户进入下一层的抽取。只要保证20%= ∑ i = 1 4 a i \sum_{i=1}^4 {ai} i=14ai就可以了。
那么如何保证能在ai上体现各个指标的重要性差别呢?我们需要给更重要的指标更大的过滤权利,也就是使a1<a2<a3<a4,这样就能使第一个指标过滤掉大部分的用户(比如说a1=30,那么在最重要的指标这里我们一下子就能筛去70%的用户),而最不重要的指标(比如说a4=95,那么最后一层仅仅能筛掉上一层留下来的用户中5%的用户)则无法筛掉太多用户。
在这里插入图片描述

方案二
但是方案一的ai组合很难计算得出,并且具有一定的偶然性,我们希望能够对这个计算的结果进行非常强势的把控,于是我们想到了方案2。我们真的想计算一个总得分再排名,那么怎么办呢?
一般来说我们会给各指标根据重要性赋权重(重要性越高权重值越大),然后对数值进行归一化处理,最后计算就好啦。但是!我们这里有的指标是越大越好,有的指标是越小越好,因此直接使用数值进行加权计算是不合理的。
针对这种让人头大的数据情况,我们使用了一个比较骚的方法,我们先对每个指标按其指标特性进行升序或者降序排序,以其排序值代替其原始数值作为特征,然后再对处理后的特征进行加权计算,最终得到一个总得分。
比如我们对历史消费金额、历史消费次数、用户月收入进行降序排序,用户违约次数进行升序排序,一共进行4次排序(N个指标就进行N次排序,每次独立地针对一个指标),记录下每一个用户id的数据在每一次排序时的排序数值。对排序值进行加权计算,那么最后对得到的总得分进行升序排序,排在前20%的就是我们要的用户群体啦。
关于对指标进行排序时使用的方法,由于需要使用排序值进行加权计算,因此我们需要保证具有相同数值的记录排序数值也相同,也就是需要使用rank()进行排序而不是row_number()。
关于排序时如何选择升序还是降序,原则是我们需要保证各个指标排序的前x%部分都是(注意!要都是)我们想要的,或者都是我们不想要的。也就是在排序上要将我们的偏好统一,统一排序的前x%是满足我们偏好的,或者后x%是满足我们偏好的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值