指数法
“指数法”就是对不同的数据进行“标准化”“归一化”,进而对综合数值进行对比评估。
很多时候,我们有数据,但不知道怎么应用。就是因为缺乏了一个有效性的方向。这个方向可以成为目标指数。通过将数据加工成指数,达到聚焦的目的。
常用的三种处理方法
- 加权法
- 反比例
- 取对数
加权法
举例:已知用户ID、忠诚度、贡献金额、社交指数
用户ID | 用户忠诚度 | 用户贡献金额 | 用户社交指数 |
---|---|---|---|
1 | 0.5543 | 0.5085 | 0.3814 |
2 | 0.9681 | 0.8274 | 0.2130 |
3 | 0.9547 | 0.6399 | 0.7672 |
4 | 0.3152 | 0.2261 | 0.1278 |
5 | 0.6593 | 0.0100 | 0.1224 |
6 | 0.2961 | 0.9011 | 0.9988 |
7 | 0.8938 | 0.9413 | 0.3851 |
8 | 0.1663 | 0.3063 | 0.4278 |
9 | 0.8011 | 0.6773 | 0.2321 |
10 | 0.5771 | 0.0294 | 0.0236 |
求:评估用户价值
用户ID | 用户忠诚度 | 用户贡献金额 | 用户社交指数 | 用户价值= 忠诚度2+贡献5+社交 |
---|---|---|---|---|
1 | 0.5543 | 0.5085 | 0.3814 | 4.0326 |
2 | 0.9681 | 0.8274 | 0.2130 | 6.2862 |
3 | 0.9547 | 0.6399 | 0.7672 | 5.8760 |
4 | 0.3152 | 0.2261 | 0.1278 | 1.8884 |
5 | 0.6593 | 0.0100 | 0.1224 | 1.4912 |
6 | 0.2961 | 0.9011 | 0.9988 | 6.0966 |
7 | 0.8938 | 0.9413 | 0.3851 | 6.8791 |
8 | 0.1663 | 0.3063 | 0.4278 | 2.2922 |
9 | 0.8011 | 0.6773 | 0.2321 | 5.2206 |
10 | 0.5771 | 0.0294 | 0.0236 | 1.3247 |
反比例法
目的是为了让数字收敛到0-1的范围。
已知:用户7到9月的消费次数
用户ID | 7月消费次数 | 8月消费次数 | 9月消费次数 |
---|---|---|---|
1 | 14 | 13 | 10 |
2 | 15 | 11 | 1 |
3 | 4 | 11 | 9 |
4 | 1 | 14 | 8 |
5 | 1 | 9 | 5 |
6 | 7 | 11 | 12 |
7 | 3 | 10 | 6 |
8 | 3 | 4 | 12 |
9 | 3 | 9 | 7 |
10 | 7 | 1 | 11 |
求:用户忠诚度
用户ID | 7月消费次数 | 8月消费次数 | 9月消费次数 | Y=1-1/7月 | Y=1-1/8月 | Y=1-1/9月 | 用户忠诚度 |
---|---|---|---|---|---|---|---|
1 | 14 | 13 | 10 | 0.929 | 0.923 | 0.900 | 1.370110 |
2 | 15 | 11 | 1 | 0.933 | 0.909 | 0.000 | 0.734545 |
3 | 4 | 11 | 9 | 0.750 | 0.909 | 0.889 | 1.301768 |
4 | 1 | 14 | 8 | 0.000 | 0.929 | 0.875 | 1.076786 |
5 | 1 | 9 | 5 | 0.000 | 0.889 | 0.800 | 1.004444 |
6 | 7 | 11 | 12 | 0.857 | 0.909 | 0.917 | 1.353355 |
7 | 3 | 10 | 6 | 0.667 | 0.900 | 0.833 | 1.233333 |
8 | 3 | 4 | 12 | 0.667 | 0.750 | 0.917 | 1.216667 |
9 | 3 | 9 | 7 | 0.667 | 0.889 | 0.857 | 1.244444 |
10 | 7 | 1 | 11 | 0.857 | 0.000 | 0.909 | 0.893506 |
只要是反比例就能收敛,所以Y=1-1/X的换算也可以用其他的,比如Y=2-2/2或Y=X/(X+1)等等。只需满足条件:转换后的值介于0-1,即达到目的。
对数法
目的是为了让数字收敛
已知:文章的发布日期、阅读量和评论量
文章ID | 发布日期 | UV | 评论 |
---|---|---|---|
1 | 2017/7/1 | 1745 | 62 |
2 | 2017/8/1 | 2799 | 24 |
3 | 2017/9/1 | 2520 | 26 |
4 | 2017/10/1 | 800 | 38 |
5 | 2017/11/1 | 2939 | 60 |
6 | 2017/12/1 | 1443 | 29 |
7 | 2018/1/1 | 1000 | 38 |
8 | 2018/2/1 | 1460 | 1000 |
9 | 2018/3/1 | 2931 | 74 |
10 | 2018/4/1 | 2576 | 20 |
求:文章的热度价值
解析:
- 难点1:发布日期是日期类型,UV和评论是数字类型,如何将日期与数字整合到一起?
- 难点2:尽管UV和评论都是数字类型,但大多数UV比评论大2个数量级,如何调权重,并将二者结合后的数值收敛?
解答:
- 第一步:处理日期(使用反比例法)
日期的错误转化:
| 文章ID | 发布日期 | UV | 评论 | 日期热度
=(今天-日期)/100 |
| :—-: | :—-: | :—-: | :—-: | :—-: |
| 1 | 2017/7/1 | 1745 | 62 | 10.55 |
| 2 | 2017/8/1 | 2799 | 24 | 10.24 |
| 3 | 2017/9/1 | 2520 | 26 | 9.93 |
| 4 | 2017/10/1 | 800 | 38 | 9.63 |
| 5 | 2017/11/1 | 2939 | 60 | 9.32 |
| 6 | 2017/12/1 | 1443 | 29 | 9.02 |
| 7 | 2018/1/1 | 1000 | 38 | 8.71 |
| 8 | 2018/2/1 | 1460 | 1000 | 8.40 |
| 9 | 2018/3/1 | 2931 | 74 | 8.12 |
| 10 | 2018/4/1 | 2576 | 20 | 7.81 |
错误分析:日期处理=(今天-日期)/100,被减数是“今天(2020/5/21)”不变,发布日期越靠后,减数越大,得到的差值越小。与期望的“日期越靠后,文章的热度值越高”相悖。比如2018/4/1的日期热度值是7.81,2017/7/1的日期热度值是10.55,显然不对。
解决办法:改成发布日期 - 初始日期,且要满足(最小的发布日期-初始日期) > 0,则初始日期需小于2017/7/1,具体转化如下。
文章ID | 发布日期 | UV | 评论 | 日期热度=(日期-2017/1/1)/100 |
---|---|---|---|---|
1 | 2017/7/1 | 1745 | 62 | 1.81 |
2 | 2017/8/1 | 2799 | 24 | 2.12 |
3 | 2017/9/1 | 2520 | 26 | 2.43 |
4 | 2017/10/1 | 800 | 38 | 2.73 |
5 | 2017/11/1 | 2939 | 60 | 3.04 |
6 | 2017/12/1 | 1443 | 29 | 3.34 |
7 | 2018/1/1 | 1000 | 38 | 3.65 |
8 | 2018/2/1 | 1460 | 1000 | 3.96 |
9 | 2018/3/1 | 2931 | 74 | 4.24 |
10 | 2018/4/1 | 2576 | 20 | 4.55 |
- 第二步:处理UV和评论(使用对数法) | 文章ID | 发布日期 | UV | 评论 | LOG10(UV+评论*10) | | :—-: | :—-: | :—-: | :—-: | :—-: | | 1 | 2017/7/1 | 1745 | 62 | 3.37 | | 2 | 2017/8/1 | 2799 | 24 | 3.48 | | 3 | 2017/9/1 | 2520 | 26 | 3.44 | | 4 | 2017/10/1 | 800 | 38 | 3.07 | | 5 | 2017/11/1 | 2939 | 60 | 3.55 | | 6 | 2017/12/1 | 1443 | 29 | 3.24 | | 7 | 2018/1/1 | 1000 | 38 | 3.14 | | 8 | 2018/2/1 | 1460 | 1000 | 4.06 | | 9 | 2018/3/1 | 2931 | 74 | 3.56 | | 10 | 2018/4/1 | 2576 | 20 | 3.44 |
解释:认为评论的权重比阅读量高,所以阅读量权重是1,评论的权重是10,但UV+评论*10得数过大,因此用对数法将结果缩小到与日期转化值差不多。此处我使用的是log10,用其他的底数或权重也行,只要找到合适的即可。
- 第三步:合并三个数值
| 文章ID | 发布日期 | UV | 评论 | 日期热度
=(日期-2017/1/1)/100 | LOG10(UV+评论*10) | 综合热度 | | :—-: | :—-: | :—-: | :—-: | :—-: | :—-: | :—-: | | 1 | 2017/7/1 | 1745 | 62 | 1.81 | 3.37 | 5.18 | | 2 | 2017/8/1 | 2799 | 24 | 2.12 | 3.48 | 5.60 | | 3 | 2017/9/1 | 2520 | 26 | 2.43 | 3.44 | 5.87 | | 4 | 2017/10/1 | 800 | 38 | 2.73 | 3.07 | 5.80 | | 5 | 2017/11/1 | 2939 | 60 | 3.04 | 3.55 | 6.59 | | 6 | 2017/12/1 | 1443 | 29 | 3.34 | 3.24 | 6.58 | | 7 | 2018/1/1 | 1000 | 38 | 3.65 | 3.14 | 6.79 | | 8 | 2018/2/1 | 1460 | 1000 | 3.96 | 4.06 | 8.02 | | 9 | 2018/3/1 | 2931 | 74 | 4.24 | 3.56 | 7.80 | | 10 | 2018/4/1 | 2576 | 20 | 4.55 | 3.44 | 7.99 |
如果前两步的转化值偏差较大,也可在第三步时再次使用“加权法”平衡综合热度得分。