垃圾没有统一单位:件数、重量、体积三种口径算出来的排名会打架。 指标一变,行为就变。考核件数大家捡烟头,考核重量大家搬建筑垃圾。 精确计量不可行,就换一个能测的代理指标:不追求量得准,追求判得对。
上一篇算出了净效果,可「垃圾量」这个说法本身还是模糊的。这一篇就把这个模糊点摊开。 这一篇没有公式,全是口径上的判断。可它比公式更容易出错。
一、议员问得更细
议员追问:你们说的「垃圾量」,到底量的是什么? 邂逅集的回答含糊:件数、重量、体积都量过,各说各的。 这句话听着像敷衍,实际上是整个故事的关键:垃圾这个东西,本来就没有统一的计量单位。
二、三种口径,三个排名
| 街区 | 件数 | 重量(公斤) | 体积(升) |
|---|---|---|---|
| A 街区 | 1200 | 380 | 900 |
| B 街区 | 800 | 520 | 600 |
| C 街区 | 1500 | 410 | 1100 |
按件数排:C 最多,A 次之,B 最少。按重量排:B 最重,A 最轻。按体积排:又是 C 最多。 A 的件数排第二,重量却垫底——它那堆是泡沫箱和纸壳,轻而占地方。 三种口径都对,排名却不一样。这时候「哪个街区最脏」这个问题,就没有唯一答案了。
三、指标一变,行为就变
如果考核指标是「件数下降」,那大家都去捡烟头:件数多、重量小、好数。 如果指标是「重量下降」,那大家都去搬建筑垃圾:一件顶一百件。 这不是道德问题,是指标设计问题。任何被当成考核目标的指标,都会被优化到失去意义。
所以选指标的时候,问的不该是「哪个最准」,而是「按这个考核,人会怎么干」。
四、能不能合成一个总分
有人会想:把三个口径加权相加,不就有一个总分了? 可以,但权重一定,就带着价值判断:一件建筑垃圾算几件烟头?这个换算表没有客观答案。 权重由谁定、按什么定,是治理问题,不是数据问题。 数据能告诉你「权重变了排名怎么变」,不能告诉你「该用哪个权重」。
「无法建立统一的计量模型」这句话是对的,但它不等于「无法评估」。
五、换一条路:代理指标
既然量不准,就退一步:找一个能稳定测、且和你想管的东西高度相关的量。 这里的代理指标就是「件数」:它好数、可复核、居民投诉时说的也是「一堆垃圾」而不是「几公斤」。 代价是它会被「挑轻的捡」这种策略钻空子,所以还要配一条:大件垃圾必须清零,单独考核。
代理指标不是妥协,是有意识的选择:你知道它偏在哪,所以用别的东西补上。
六、动手 Demo:计量不出来的垃圾
三个街区,三种口径,各排一次名,看排名会不会打架。 再看两两之间的排名一致性——不一致就说明「最脏」没有唯一答案。
ST = [("A", 1200, 380, 900), ("B", 800, 520, 600), ("C", 1500, 410, 1100)]
for k, name in ((1, "件数"), (2, "重量"), (3, "体积")):
order = sorted(ST, key=lambda s: -s[k])
print("按%-2s排:%s" % (name, " > ".join(s[0] for s in order)))
print()
def rank(vals):
s = sorted(vals, reverse=True)
return [s.index(v) + 1 for v in vals]
r1 = rank([s[1] for s in ST])
r2 = rank([s[2] for s in ST])
r3 = rank([s[3] for s in ST])
print("件数名次:%s" % r1)
print("重量名次:%s" % r2)
print("体积名次:%s" % r3)
same12 = sum(1 for i in range(3) if r1[i] == r2[i])
same13 = sum(1 for i in range(3) if r1[i] == r3[i])
print("件数与重量,3 个街区里 %d 个名次相同" % same12)
print("件数与体积,3 个街区里 %d 个名次相同" % same13)
实跑输出:
--------------------------------------------------------------------
计量不出来的垃圾
--------------------------------------------------------------------
① 议员问得更细
--------------------------------------------------------------------
议员追问:所谓「垃圾量」,你们到底量的是什么?
邂逅集的回答含糊:件数、重量、体积都量过,各说各的。
问题就在这里:垃圾没有统一的计量单位。
② 三种口径,三个排名
--------------------------------------------------------------------
| 街区 | 件数 | 重量(公斤) | 体积(升) |
|---|---:|---:|---:|
| A 街区 | 1200 | 380 | 900 |
| B 街区 | 800 | 520 | 600 |
| C 街区 | 1500 | 410 | 1100 |
按件数排:C > A > B。
按重量排:B > C > A。
按体积排:C > A > B。
! A 的件数排第二,重量却垫底——它那堆是泡沫箱和纸壳,轻而占地方。
③ 排名会打架,就没法排名
--------------------------------------------------------------------
如果政府的考核指标是「件数下降」,那大家都去捡烟头(件数多、重量小)。
如果指标是「重量下降」,那大家都去搬建筑垃圾(一件顶一百件)。
指标一变,行为就变。这不是道德问题,是指标设计问题。
④ 那就没法建立统一模型了吗
--------------------------------------------------------------------
三种口径各有各的用途:件数反映「看见的脏」,重量反映「处理成本」,体积反映「运输车次」。
想合成一个总分,就得先定权重。权重一定,就带着价值判断——这不是数据能回答的。
所以「无法建立统一的散乱垃圾计量模型」这句话是对的,但它不等于「无法评估」。
⑤ 换一条路
--------------------------------------------------------------------
既然精确计量不可行,就退一步:不追求量得准,追求判得对。
判得对的意思是:给它一堆街区,能说出哪几个该先扫、哪几个已经干净了。
这就是下一节的东西:启发法。
件数和体积的排名完全一致,和重量只对上 1 个——因为重的东西往往件数少。 「哪个街区最脏」这个问题,答之前必须先说按什么算。这和 4.3 那句「先定决定、 再定指标」是同一件事。
30 秒实验
- 给三种口径各定权重(比如 0.5/0.3/0.2),算出来的总分排名是第几种口径的排名?
- 如果再加一个口径「居民投诉次数」,它会和哪一个最接近?为什么?
- 想一想:为什么说「被当成考核目标的指标会被优化到失去意义」?举一个生活里的例子。
常见误区
- 以为有一个客观的「总量」:垃圾没有统一单位,总量是拼出来的,不是量出来的。
- 指标单一还公开考核:单一指标加考核,等于公开教人怎么钻空子。
- 权重随手定:权重是价值判断,定之前要说清理由,否则就是偷偷塞私货。
- 因为量不准就放弃评估:量不准可以换代理指标,不等于什么都不能做。
自测三问(点开对答案)
1. 为什么三种口径排出来的名次不一样? —— 因为垃圾的构成不同:轻而占地方的(泡沫箱)件数多、重量小;重而紧凑的(建筑垃圾)相反。 2. 「指标一变行为就变」说的是什么? —— 任何指标一旦成为考核目标,人就会朝着「让这个数好看」的方向努力,而不是朝原本的目标。 3. 代理指标该怎么选? —— 选稳定可测、和真实目标高度相关的量,同时知道它偏在哪,用别的指标补上。精确计量这条路走不通,就得换思路:不追求量得准,追求判得对。下一篇讲启发法。
- ☐ (本篇完,下一篇 8.3 从直觉到最优化的桥梁)