关于k-匿名化Mondrian算法中标准化值范围的疑问
你提到的Mondrian算法里的“标准化值范围”,并不是你默认的全局min-max归一化(把整个数据集的特征值缩到[0,1]),这里的标准化逻辑主要有两种常见解读,对应算法的不同实现细节:
基于当前划分子集的局部量纲消除
Mondrian是递归划分数据集的算法,每次只处理当前的样本子集,而非整个全局数据集。这里的“标准化”是为了消除不同特征的量纲差异:比如年龄的取值范围是几十,而收入的取值范围是几万,直接比原始范围会导致算法总是优先选收入划分,这显然不合理。所以会把每个特征的当前子集范围,除以该特征的全局范围,得到相对范围值——比如全局Age范围是17(30-13),当前子集Age范围是17,相对范围就是1;全局Income范围是10000,当前子集Income范围是5000,相对范围就是0.5,这时就会选Age作为划分特征。采用
z-score标准化而非min-max归一化
LeFevre提到的“标准化”更可能是z-score标准化(将特征值转换为均值为0、方差为1的分布),这种方式不会把值压缩到[0,1]区间,而是保留了特征值的离散程度:比如当前子集的Age值波动大,z-score转换后的取值范围可能是[-1.5, 2.2],宽度为3.7;而另一个特征z-score后的范围是[-0.8, 1.1],宽度为1.9,这时就会选Age划分,因为它的标准化后范围更大,拆分后能更高效得到满足k-匿名的子集。
补充一句:Mondrian选划分特征的核心是优先挑当前子集中离散程度最高的特征,“标准化”只是公平比较的手段。你找不到明确说明,是因为这个细节属于算法的实现变体,不同资料或代码实现可能会用不同的标准化方式,但核心逻辑都是一致的。
内容的提问来源于stack exchange,提问作者Sanzor

