实验现象回顾:
当k=2时
对于较大的簇(大部分是正确样本),如果优先选择pcs值高的或者killnum值高的,那么选择的样本几乎都是正确样本。
而对于较小的簇(大多数错误样本都集中在这个簇中),如果优先选择pcs值低的或者killnum值低的,那么选择的样本几乎都是错误样本。
❗️❗️❗️以mnist_lenet5为例找出原因
观察那些从较小的簇中挑选出的错误样本的信息(killnum、pcs值等以及它们在整个簇中的索引(从小到大))
先看簇整体的pcs和killnum的最小值、最大值、平均值
cluster_big | cluster_small | |
---|---|---|
pcs_max | 1.0 | 0.999946 |
pcs_min | 0.014751 | 0.003948 |
pcs_mean | 0.990768 | 0.672509 |
killnum_max | 344 | 1000 |
killnum_min | 0 | 343 |
killnum_mean | 6.802972 | 679.718367 |
表中的规律: 正确样本的pcs值偏高、killnum偏低
错误样本的pcs值偏低、killnum偏高
之前数据统计错误的原因:在计算killnum时使用的不是原始的01矩阵,而是降维后的矩阵
重新统计后的数据,符合预期
0.1/50 | 0.2/100 | 0.3/150 | 0.4/200 | 0.5/250 | 0.6/300 | 0.7/350 | 0.8 | 0.9 | 1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
mnist_lenet5 | bigcluster_killnum⬆️ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
smallcluster_killnum⬇️ | 0.958 | 0.918 | 0.890 | 0.765 | 0.697 | 0.626 | 0.556 | 0.500 | 0.450 | 0.424 | |
cifar10_vgg16 | bigcluster_killnum⬆️ | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
smallcluster_killnum⬇️ | 0.892 | 0.862 | 0.841 | 0.797 | 0.770 | 0.731 | 0.695 | 0.666 | 0.633 | 0.612 | |
cifar10_resnet20 | bigcluster_killnum⬆️ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
smallcluster_killnum⬇️ | 0.799 | 0.704 | 0.656 | 0.599 | 0.551 | 0.501 | 0.469 | 0.436 | 0.404 | 0.378 |
如果不对测试用例进行聚类直接按照killnum进行采样
0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0 | |
---|---|---|---|---|---|---|---|---|---|---|
mnist_lenet1(514) | 501 | 510 | 511 | 512 | 512 | 513 | 513 | 514 | 514 | 514 |
mnist_lenet4(312) | 316 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 | 321 |
mnist_lenet5(128) | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 | 128 |
fashion_lenet5(1012) | 515 | 771 | 895 | 954 | 979 | 984 | 987 | 995 | 1004 | 1012 |
cifar10_vgg16(1259) | 704 | 1050 | 1186 | 1222 | 1244 | 1248 | 1252 | 1253 | 1257 | 1259 |
cifar10_resnet20(878) | 537 | 730 | 821 | 853 | 868 | 873 | 876 | 877 | 878 | 878 |