experiment: validate beta selection on one paired full condition

This commit is contained in:
willtanoe committed 2026-09-25 04:22:55 +00:00
1 parent ad9aa53ba7
commit 50f2da7216
8 files changed
+12434 -150

No files matched your search

@@ -0,0 +1,51 @@
beta,client_id,n_train,min_pos_Nij,max_Nij,test_rare_f1,test_rare_recall,test_macro_f1,test_acc,val_rare_f1,val_rare_recall
0.00,0,94564,18,48503,0.4995519291027485,0.9921372408863474,0.6068173367966223,0.8913947112408243,0.8875379939209728,0.9864864864864865
0.00,1,50631,69,34165,0.3843553008595989,0.6648852971845672,0.6486242436476237,0.9225095530080867,0.43045783132530124,0.6944444444444444
0.00,2,52476,5,32409,0.8823127539462803,1.0,0.7728569293315674,0.9196444444444445,0.7407407407407407,1.0
0.00,3,69609,140,49283,0.6162162162162163,0.5757575757575758,0.8397394354975644,0.9857448851466135,0.7126436781609196,0.6888888888888889
0.00,4,18521,1,14033,0.1375107083096483,0.7972972972972974,0.6020588243275056,0.6915242824678057,0.8619718309859155,0.9807692307692307
0.00,5,41886,2,27596,0.7126436781609197,0.9959839357429718,0.7651475774621735,0.9101290574892452,0.28180563997182917,0.9848484848484849
0.00,6,45085,44,34309,0.3787878787878788,1.0,0.7092622710304912,0.9331267329962486,0.5320018964086761,1.0
0.00,7,84396,10,57789,0.047041500368117176,0.8571428571428572,0.6094373847709916,0.9094209211825521,0.29411764705882354,0.9444444444444444
0.00,8,85073,4,68657,0.6316180325004368,0.975206611570248,0.8034446527877533,0.9593320235756385,0.5012611838161273,0.9813953488372094
0.00,9,27668,12,22604,0.391006006006006,0.6304721030042919,0.5530864277589688,0.8042184646202792,0.3308578745198464,0.641025641025641
0.25,0,94564,18,48503,0.5110279671296534,0.9917798427448177,0.6122053493827229,0.9059432210135314,0.8971962616822431,0.972972972972973
0.25,1,50631,69,34165,0.39677115606585267,0.683133472367049,0.6640266458191656,0.9332918629106313,0.4363790334821964,0.7013888888888888
0.25,2,52476,5,32409,0.8932300313595277,1.0,0.7822731669528147,0.9262222222222222,0.8,1.0
0.25,3,69609,140,49283,0.6096256684491979,0.5757575757575758,0.842542396138789,0.9864096314351134,0.7272727272727273,0.7111111111111111
0.25,4,18521,1,14033,0.1370011419201827,0.7972972972972974,0.6132568687939982,0.7093678983250569,0.8571428571428572,0.9807692307692307
0.25,5,41886,2,27596,0.7626339969372129,1.0,0.7656983269300117,0.9234258897145092,0.3131615278416935,0.9898989898989898
0.25,6,45085,44,34309,0.40922072623419015,1.0,0.7176182213955545,0.9372043712281847,0.5400683913172762,0.9642857142857143
0.25,7,84396,10,57789,0.05790960451977401,0.8571428571428572,0.6190468740355366,0.9239124121507812,0.29858525688756515,0.9444444444444444
0.25,8,85073,4,68657,0.6614490161001789,0.9594155844155845,0.8123526609102988,0.9671905697445973,0.5063361579319026,0.9837209302325581
0.25,9,27668,12,22604,0.3979347640285311,0.6412017167381974,0.5633288254699136,0.8157072998291404,0.3417318982387475,0.6688034188034189
0.50,0,94564,18,48503,0.512290254862411,0.9885632594710507,0.6157506652321422,0.8995754842133192,0.9306930693069307,0.9527027027027027
0.50,1,50631,69,34165,0.3997755462609072,0.6940823774765381,0.6661761632145973,0.9264788648952872,0.4413828325877919,0.7124999999999999
0.50,2,52476,5,32409,0.9038072776280324,0.976,0.7840044573244555,0.9194666666666667,0.8333333333333333,1.0
0.50,3,69609,140,49283,0.548076923076923,0.5757575757575758,0.8283908856029829,0.9845631139670581,0.7555555555555555,0.7555555555555555
0.50,4,18521,1,14033,0.14114416475972538,0.7972972972972974,0.633397359958961,0.7090312263277502,0.8660968660968661,0.9743589743589743
0.50,5,41886,2,27596,0.8330522765598651,0.9919678714859438,0.7897951478339219,0.9199843566679703,0.3727944926058133,0.9898989898989898
0.50,6,45085,44,34309,0.4421820010055304,1.0,0.7242896435001043,0.9334529440548035,0.536609144974164,0.9642857142857143
0.50,7,84396,10,57789,0.0476701869438899,0.8492063492063492,0.6201912087601653,0.9144740663297903,0.2654713707345286,0.9444444444444444
0.50,8,85073,4,68657,0.6342776536969554,0.9532172373081464,0.8037879798749075,0.9589390962671905,0.5000157678965627,0.9767441860465116
0.50,9,27668,12,22604,0.4051075371940363,0.6540772532188841,0.5706270497272496,0.8158251340364108,0.35566502463054184,0.6965811965811965
0.75,0,94564,18,48503,0.49852708011546776,0.9305694543721705,0.6157366471089164,0.8903334217741222,0.9166666666666667,0.8918918918918919
0.75,1,50631,69,34165,0.3950598098818963,0.6940823774765381,0.6616396943744374,0.9189253236174058,0.4390983440522611,0.711111111111111
0.75,2,52476,5,32409,0.8949207257273619,0.952,0.7766807853440173,0.8968888888888888,0.8333333333333333,1.0
0.75,3,69609,140,49283,0.35962145110410093,0.5757575757575758,0.7905690740085016,0.9793190043577812,0.7415730337078651,0.7333333333333333
0.75,4,18521,1,14033,0.15006641568143958,0.7972972972972974,0.6440684296718677,0.7001094183991247,0.8411764705882353,0.9166666666666666
0.75,5,41886,2,27596,0.8338983050847457,0.9879518072289156,0.7926623902258025,0.9104419241298397,0.37074068149096145,0.9898989898989898
0.75,6,45085,44,34309,0.4477565595404441,1.0,0.7195049733487044,0.9106181699559615,0.5318530266983875,0.9642857142857143
0.75,7,84396,10,57789,0.03969509578636252,0.8174603174603174,0.6169939163182777,0.904571063483766,0.25831969448990727,0.9444444444444444
0.75,8,85073,4,68657,0.6208429867121025,0.9487898465171193,0.7924831635124538,0.9469548133595285,0.5019948230864674,0.9304909560723513
0.75,9,27668,12,22604,0.400258937520882,0.6476394849785407,0.5718262874717445,0.8091675013256349,0.34527541424093144,0.6965811965811965
1.00,0,94564,18,48503,0.4818296933718207,0.8849535382416012,0.612389815191912,0.8770673034403467,0.9077490774907748,0.831081081081081
1.00,1,50631,69,34165,0.39042298483639265,0.683133472367049,0.6565215242583741,0.9103054000414704,0.4280463143311497,0.6916666666666667
1.00,2,52476,5,32409,0.8458762886597938,0.9079999999999999,0.7579100758793161,0.8709333333333333,0.7692307692307693,1.0
1.00,3,69609,140,49283,0.27403846153846156,0.5757575757575758,0.7713507627602365,0.9729669842676711,0.7272727272727273,0.7111111111111111
1.00,4,18521,1,14033,0.12323186430410421,0.7639639639639639,0.6411866463651053,0.7410992340712061,0.7859237536656892,0.8589743589743589
1.00,5,41886,2,27596,0.7748031496062993,0.9879518072289156,0.7790197411231496,0.8925303089558075,0.32319994363815696,0.9848484848484849
1.00,6,45085,44,34309,0.41129575567033466,1.0,0.7087816117284831,0.8851737073886805,0.5186591560629684,0.9285714285714286
1.00,7,84396,10,57789,0.033061148495890626,0.7857142857142857,0.6117787034769915,0.8940872393564501,0.2510204081632653,0.9444444444444444
1.00,8,85073,4,68657,0.6041990809422151,0.9487898465171193,0.7637750644835428,0.9316306483300589,0.5004931186519341,0.9304909560723513
1.00,9,27668,12,22604,0.3936995850971967,0.6390557939914163,0.5889039404362588,0.838802804454133,0.3028365305787834,0.6688034188034189
1 beta client_id n_train min_pos_Nij max_Nij test_rare_f1 test_rare_recall test_macro_f1 test_acc val_rare_f1 val_rare_recall
2 0.00 0 94564 18 48503 0.4995519291027485 0.9921372408863474 0.6068173367966223 0.8913947112408243 0.8875379939209728 0.9864864864864865
3 0.00 1 50631 69 34165 0.3843553008595989 0.6648852971845672 0.6486242436476237 0.9225095530080867 0.43045783132530124 0.6944444444444444
4 0.00 2 52476 5 32409 0.8823127539462803 1.0 0.7728569293315674 0.9196444444444445 0.7407407407407407 1.0
5 0.00 3 69609 140 49283 0.6162162162162163 0.5757575757575758 0.8397394354975644 0.9857448851466135 0.7126436781609196 0.6888888888888889
6 0.00 4 18521 1 14033 0.1375107083096483 0.7972972972972974 0.6020588243275056 0.6915242824678057 0.8619718309859155 0.9807692307692307
7 0.00 5 41886 2 27596 0.7126436781609197 0.9959839357429718 0.7651475774621735 0.9101290574892452 0.28180563997182917 0.9848484848484849
8 0.00 6 45085 44 34309 0.3787878787878788 1.0 0.7092622710304912 0.9331267329962486 0.5320018964086761 1.0
9 0.00 7 84396 10 57789 0.047041500368117176 0.8571428571428572 0.6094373847709916 0.9094209211825521 0.29411764705882354 0.9444444444444444
10 0.00 8 85073 4 68657 0.6316180325004368 0.975206611570248 0.8034446527877533 0.9593320235756385 0.5012611838161273 0.9813953488372094
11 0.00 9 27668 12 22604 0.391006006006006 0.6304721030042919 0.5530864277589688 0.8042184646202792 0.3308578745198464 0.641025641025641
12 0.25 0 94564 18 48503 0.5110279671296534 0.9917798427448177 0.6122053493827229 0.9059432210135314 0.8971962616822431 0.972972972972973
13 0.25 1 50631 69 34165 0.39677115606585267 0.683133472367049 0.6640266458191656 0.9332918629106313 0.4363790334821964 0.7013888888888888
14 0.25 2 52476 5 32409 0.8932300313595277 1.0 0.7822731669528147 0.9262222222222222 0.8 1.0
15 0.25 3 69609 140 49283 0.6096256684491979 0.5757575757575758 0.842542396138789 0.9864096314351134 0.7272727272727273 0.7111111111111111
16 0.25 4 18521 1 14033 0.1370011419201827 0.7972972972972974 0.6132568687939982 0.7093678983250569 0.8571428571428572 0.9807692307692307
17 0.25 5 41886 2 27596 0.7626339969372129 1.0 0.7656983269300117 0.9234258897145092 0.3131615278416935 0.9898989898989898
18 0.25 6 45085 44 34309 0.40922072623419015 1.0 0.7176182213955545 0.9372043712281847 0.5400683913172762 0.9642857142857143
19 0.25 7 84396 10 57789 0.05790960451977401 0.8571428571428572 0.6190468740355366 0.9239124121507812 0.29858525688756515 0.9444444444444444
20 0.25 8 85073 4 68657 0.6614490161001789 0.9594155844155845 0.8123526609102988 0.9671905697445973 0.5063361579319026 0.9837209302325581
21 0.25 9 27668 12 22604 0.3979347640285311 0.6412017167381974 0.5633288254699136 0.8157072998291404 0.3417318982387475 0.6688034188034189
22 0.50 0 94564 18 48503 0.512290254862411 0.9885632594710507 0.6157506652321422 0.8995754842133192 0.9306930693069307 0.9527027027027027
23 0.50 1 50631 69 34165 0.3997755462609072 0.6940823774765381 0.6661761632145973 0.9264788648952872 0.4413828325877919 0.7124999999999999
24 0.50 2 52476 5 32409 0.9038072776280324 0.976 0.7840044573244555 0.9194666666666667 0.8333333333333333 1.0
25 0.50 3 69609 140 49283 0.548076923076923 0.5757575757575758 0.8283908856029829 0.9845631139670581 0.7555555555555555 0.7555555555555555
26 0.50 4 18521 1 14033 0.14114416475972538 0.7972972972972974 0.633397359958961 0.7090312263277502 0.8660968660968661 0.9743589743589743
27 0.50 5 41886 2 27596 0.8330522765598651 0.9919678714859438 0.7897951478339219 0.9199843566679703 0.3727944926058133 0.9898989898989898
28 0.50 6 45085 44 34309 0.4421820010055304 1.0 0.7242896435001043 0.9334529440548035 0.536609144974164 0.9642857142857143
29 0.50 7 84396 10 57789 0.0476701869438899 0.8492063492063492 0.6201912087601653 0.9144740663297903 0.2654713707345286 0.9444444444444444
30 0.50 8 85073 4 68657 0.6342776536969554 0.9532172373081464 0.8037879798749075 0.9589390962671905 0.5000157678965627 0.9767441860465116
31 0.50 9 27668 12 22604 0.4051075371940363 0.6540772532188841 0.5706270497272496 0.8158251340364108 0.35566502463054184 0.6965811965811965
32 0.75 0 94564 18 48503 0.49852708011546776 0.9305694543721705 0.6157366471089164 0.8903334217741222 0.9166666666666667 0.8918918918918919
33 0.75 1 50631 69 34165 0.3950598098818963 0.6940823774765381 0.6616396943744374 0.9189253236174058 0.4390983440522611 0.711111111111111
34 0.75 2 52476 5 32409 0.8949207257273619 0.952 0.7766807853440173 0.8968888888888888 0.8333333333333333 1.0
35 0.75 3 69609 140 49283 0.35962145110410093 0.5757575757575758 0.7905690740085016 0.9793190043577812 0.7415730337078651 0.7333333333333333
36 0.75 4 18521 1 14033 0.15006641568143958 0.7972972972972974 0.6440684296718677 0.7001094183991247 0.8411764705882353 0.9166666666666666
37 0.75 5 41886 2 27596 0.8338983050847457 0.9879518072289156 0.7926623902258025 0.9104419241298397 0.37074068149096145 0.9898989898989898
38 0.75 6 45085 44 34309 0.4477565595404441 1.0 0.7195049733487044 0.9106181699559615 0.5318530266983875 0.9642857142857143
39 0.75 7 84396 10 57789 0.03969509578636252 0.8174603174603174 0.6169939163182777 0.904571063483766 0.25831969448990727 0.9444444444444444
40 0.75 8 85073 4 68657 0.6208429867121025 0.9487898465171193 0.7924831635124538 0.9469548133595285 0.5019948230864674 0.9304909560723513
41 0.75 9 27668 12 22604 0.400258937520882 0.6476394849785407 0.5718262874717445 0.8091675013256349 0.34527541424093144 0.6965811965811965
42 1.00 0 94564 18 48503 0.4818296933718207 0.8849535382416012 0.612389815191912 0.8770673034403467 0.9077490774907748 0.831081081081081
43 1.00 1 50631 69 34165 0.39042298483639265 0.683133472367049 0.6565215242583741 0.9103054000414704 0.4280463143311497 0.6916666666666667
44 1.00 2 52476 5 32409 0.8458762886597938 0.9079999999999999 0.7579100758793161 0.8709333333333333 0.7692307692307693 1.0
45 1.00 3 69609 140 49283 0.27403846153846156 0.5757575757575758 0.7713507627602365 0.9729669842676711 0.7272727272727273 0.7111111111111111
46 1.00 4 18521 1 14033 0.12323186430410421 0.7639639639639639 0.6411866463651053 0.7410992340712061 0.7859237536656892 0.8589743589743589
47 1.00 5 41886 2 27596 0.7748031496062993 0.9879518072289156 0.7790197411231496 0.8925303089558075 0.32319994363815696 0.9848484848484849
48 1.00 6 45085 44 34309 0.41129575567033466 1.0 0.7087816117284831 0.8851737073886805 0.5186591560629684 0.9285714285714286
49 1.00 7 84396 10 57789 0.033061148495890626 0.7857142857142857 0.6117787034769915 0.8940872393564501 0.2510204081632653 0.9444444444444444
50 1.00 8 85073 4 68657 0.6041990809422151 0.9487898465171193 0.7637750644835428 0.9316306483300589 0.5004931186519341 0.9304909560723513
51 1.00 9 27668 12 22604 0.3936995850971967 0.6390557939914163 0.5889039404362588 0.838802804454133 0.3028365305787834 0.6688034188034189
@@ -0,0 +1,46 @@
class_id,class_name,beta,n_contributors,support_min,support_max,support_mean,prototype_norm,reference_norm_beta0,displacement_from_beta0,relative_displacement
0,C&C,0.0,10,1,966,200.4,5.81850391528672,5.81850391528672,0.0,0.0
0,C&C,0.25,10,1,966,200.4,5.510286369188621,5.81850391528672,0.7965140380628059,0.13689327182029676
0,C&C,0.5,10,1,966,200.4,5.278134014922836,5.81850391528672,1.4197451476394127,0.24400518901592105
0,C&C,0.75,10,1,966,200.4,5.112640672849202,5.81850391528672,1.8599716115561264,0.3196649239453974
0,C&C,1.0,10,1,966,200.4,4.988900967983733,5.81850391528672,2.1557306865858097,0.37049570095194845
1,Exfiltration,0.0,9,45,6305,1721.5555555555557,7.242890510522882,7.242890510522882,0.0,0.0
1,Exfiltration,0.25,9,45,6305,1721.5555555555557,7.332133171734469,7.242890510522882,0.564975966349673,0.07800421192738505
1,Exfiltration,0.5,9,45,6305,1721.5555555555557,7.370154863192438,7.242890510522882,0.9364837301255268,0.12929696075965116
1,Exfiltration,0.75,9,45,6305,1721.5555555555557,7.378891442696988,7.242890510522882,1.2417976657519203,0.17145056437726985
1,Exfiltration,1.0,9,45,6305,1721.5555555555557,7.382636843813542,7.242890510522882,1.5471979064159855,0.2136160838229059
2,Exploitation,0.0,8,10,353,99.125,5.654243351061799,5.654243351061799,0.0,0.0
2,Exploitation,0.25,8,10,353,99.125,5.416735148887854,5.654243351061799,0.4992592412018676,0.08829815241470156
2,Exploitation,0.5,8,10,353,99.125,5.22366961142136,5.654243351061799,1.0125335941087894,0.17907499398989393
2,Exploitation,0.75,8,10,353,99.125,5.0940205859608465,5.654243351061799,1.4982123491722337,0.26497132439319
2,Exploitation,1.0,8,10,353,99.125,5.025379750610227,5.654243351061799,1.934383194968876,0.3421117689612036
3,Lateral_movement,0.0,10,49,8385,2211.7,5.571182640715375,5.571182640715375,0.0,0.0
3,Lateral_movement,0.25,10,49,8385,2211.7,5.7916154156522595,5.571182640715375,0.7543102387618712,0.13539499373960803
3,Lateral_movement,0.5,10,49,8385,2211.7,6.055975082042928,5.571182640715375,1.3479271988117953,0.2419463309209897
3,Lateral_movement,0.75,10,49,8385,2211.7,6.2899803645536005,5.571182640715375,1.776607909870438,0.31889241915829747
3,Lateral_movement,1.0,10,49,8385,2211.7,6.465847026093679,5.571182640715375,2.0688588443755878,0.37135003064805877
4,Normal,0.0,10,604,68657,29277.7,6.042285009407229,6.042285009407229,0.0,0.0
4,Normal,0.25,10,604,68657,29277.7,6.387573421391307,6.042285009407229,0.4522766775093571,0.07485192717741845
4,Normal,0.5,10,604,68657,29277.7,6.595264342297928,6.042285009407229,0.7146990338285016,0.11828290666788925
4,Normal,0.75,10,604,68657,29277.7,6.720334273286351,6.042285009407229,0.8756391811740736,0.14491854982192856
4,Normal,1.0,10,604,68657,29277.7,6.803080625783804,6.042285009407229,0.9899061725928462,0.16382977152710637
5,RDOS,0.0,10,168,49283,9888.3,8.705113176029744,8.705113176029744,0.0,0.0
5,RDOS,0.25,10,168,49283,9888.3,8.772588209172795,8.705113176029744,0.3633215970184691,0.04173657362880766
5,RDOS,0.5,10,168,49283,9888.3,8.811154949619254,8.705113176029744,0.6718616497957892,0.07718011658318427
5,RDOS,0.75,10,168,49283,9888.3,8.840855101677697,8.705113176029744,0.9758862376670907,0.11210494544221147
5,RDOS,1.0,10,168,49283,9888.3,8.874204913906459,8.705113176029744,1.2860320043774807,0.1477329448075043
6,Reconnaissance,0.0,10,1137,29234,8916.1,6.1132865312061595,6.1132865312061595,0.0,0.0
6,Reconnaissance,0.25,10,1137,29234,8916.1,6.3313502624680265,6.1132865312061595,0.3500984939064864,0.05726845815574941
6,Reconnaissance,0.5,10,1137,29234,8916.1,6.540280247643444,6.1132865312061595,0.6864476003243064,0.11228781717006636
6,Reconnaissance,0.75,10,1137,29234,8916.1,6.716129778242917,6.1132865312061595,0.970753367392759,0.1587940238752768
6,Reconnaissance,1.0,10,1137,29234,8916.1,6.8462376211276155,6.1132865312061595,1.183931540468372,0.19366531151857863
7,Tampering,0.0,9,2,1266,398.44444444444446,5.095948820849879,5.095948820849879,0.0,0.0
7,Tampering,0.25,9,2,1266,398.44444444444446,5.222475642896568,5.095948820849879,0.7528833961261016,0.1477415536525226
7,Tampering,0.5,9,2,1266,398.44444444444446,5.2417538146739915,5.095948820849879,1.1900181694152834,0.2335223942097632
7,Tampering,0.75,9,2,1266,398.44444444444446,5.214766049805263,5.095948820849879,1.489091829390507,0.29221090747574724
7,Tampering,1.0,9,2,1266,398.44444444444446,5.186261162459578,5.095948820849879,1.7365220144389066,0.3407651990800994
8,Weaponization,0.0,10,18,32409,4509.4,6.165797271067825,6.165797271067825,0.0,0.0
8,Weaponization,0.25,10,18,32409,4509.4,6.324316870213558,6.165797271067825,1.0213874306568795,0.16565374853461415
8,Weaponization,0.5,10,18,32409,4509.4,6.57305363177223,6.165797271067825,2.0215287048880053,0.3278616886049363
8,Weaponization,0.75,10,18,32409,4509.4,6.878957349558733,6.165797271067825,2.9039530195295855,0.47097770034639236
8,Weaponization,1.0,10,18,32409,4509.4,7.15445660681278,6.165797271067825,3.5588066747258478,0.577185158426319
1 class_id class_name beta n_contributors support_min support_max support_mean prototype_norm reference_norm_beta0 displacement_from_beta0 relative_displacement
2 0 C&C 0.0 10 1 966 200.4 5.81850391528672 5.81850391528672 0.0 0.0
3 0 C&C 0.25 10 1 966 200.4 5.510286369188621 5.81850391528672 0.7965140380628059 0.13689327182029676
4 0 C&C 0.5 10 1 966 200.4 5.278134014922836 5.81850391528672 1.4197451476394127 0.24400518901592105
5 0 C&C 0.75 10 1 966 200.4 5.112640672849202 5.81850391528672 1.8599716115561264 0.3196649239453974
6 0 C&C 1.0 10 1 966 200.4 4.988900967983733 5.81850391528672 2.1557306865858097 0.37049570095194845
7 1 Exfiltration 0.0 9 45 6305 1721.5555555555557 7.242890510522882 7.242890510522882 0.0 0.0
8 1 Exfiltration 0.25 9 45 6305 1721.5555555555557 7.332133171734469 7.242890510522882 0.564975966349673 0.07800421192738505
9 1 Exfiltration 0.5 9 45 6305 1721.5555555555557 7.370154863192438 7.242890510522882 0.9364837301255268 0.12929696075965116
10 1 Exfiltration 0.75 9 45 6305 1721.5555555555557 7.378891442696988 7.242890510522882 1.2417976657519203 0.17145056437726985
11 1 Exfiltration 1.0 9 45 6305 1721.5555555555557 7.382636843813542 7.242890510522882 1.5471979064159855 0.2136160838229059
12 2 Exploitation 0.0 8 10 353 99.125 5.654243351061799 5.654243351061799 0.0 0.0
13 2 Exploitation 0.25 8 10 353 99.125 5.416735148887854 5.654243351061799 0.4992592412018676 0.08829815241470156
14 2 Exploitation 0.5 8 10 353 99.125 5.22366961142136 5.654243351061799 1.0125335941087894 0.17907499398989393
15 2 Exploitation 0.75 8 10 353 99.125 5.0940205859608465 5.654243351061799 1.4982123491722337 0.26497132439319
16 2 Exploitation 1.0 8 10 353 99.125 5.025379750610227 5.654243351061799 1.934383194968876 0.3421117689612036
17 3 Lateral_movement 0.0 10 49 8385 2211.7 5.571182640715375 5.571182640715375 0.0 0.0
18 3 Lateral_movement 0.25 10 49 8385 2211.7 5.7916154156522595 5.571182640715375 0.7543102387618712 0.13539499373960803
19 3 Lateral_movement 0.5 10 49 8385 2211.7 6.055975082042928 5.571182640715375 1.3479271988117953 0.2419463309209897
20 3 Lateral_movement 0.75 10 49 8385 2211.7 6.2899803645536005 5.571182640715375 1.776607909870438 0.31889241915829747
21 3 Lateral_movement 1.0 10 49 8385 2211.7 6.465847026093679 5.571182640715375 2.0688588443755878 0.37135003064805877
22 4 Normal 0.0 10 604 68657 29277.7 6.042285009407229 6.042285009407229 0.0 0.0
23 4 Normal 0.25 10 604 68657 29277.7 6.387573421391307 6.042285009407229 0.4522766775093571 0.07485192717741845
24 4 Normal 0.5 10 604 68657 29277.7 6.595264342297928 6.042285009407229 0.7146990338285016 0.11828290666788925
25 4 Normal 0.75 10 604 68657 29277.7 6.720334273286351 6.042285009407229 0.8756391811740736 0.14491854982192856
26 4 Normal 1.0 10 604 68657 29277.7 6.803080625783804 6.042285009407229 0.9899061725928462 0.16382977152710637
27 5 RDOS 0.0 10 168 49283 9888.3 8.705113176029744 8.705113176029744 0.0 0.0
28 5 RDOS 0.25 10 168 49283 9888.3 8.772588209172795 8.705113176029744 0.3633215970184691 0.04173657362880766
29 5 RDOS 0.5 10 168 49283 9888.3 8.811154949619254 8.705113176029744 0.6718616497957892 0.07718011658318427
30 5 RDOS 0.75 10 168 49283 9888.3 8.840855101677697 8.705113176029744 0.9758862376670907 0.11210494544221147
31 5 RDOS 1.0 10 168 49283 9888.3 8.874204913906459 8.705113176029744 1.2860320043774807 0.1477329448075043
32 6 Reconnaissance 0.0 10 1137 29234 8916.1 6.1132865312061595 6.1132865312061595 0.0 0.0
33 6 Reconnaissance 0.25 10 1137 29234 8916.1 6.3313502624680265 6.1132865312061595 0.3500984939064864 0.05726845815574941
34 6 Reconnaissance 0.5 10 1137 29234 8916.1 6.540280247643444 6.1132865312061595 0.6864476003243064 0.11228781717006636
35 6 Reconnaissance 0.75 10 1137 29234 8916.1 6.716129778242917 6.1132865312061595 0.970753367392759 0.1587940238752768
36 6 Reconnaissance 1.0 10 1137 29234 8916.1 6.8462376211276155 6.1132865312061595 1.183931540468372 0.19366531151857863
37 7 Tampering 0.0 9 2 1266 398.44444444444446 5.095948820849879 5.095948820849879 0.0 0.0
38 7 Tampering 0.25 9 2 1266 398.44444444444446 5.222475642896568 5.095948820849879 0.7528833961261016 0.1477415536525226
39 7 Tampering 0.5 9 2 1266 398.44444444444446 5.2417538146739915 5.095948820849879 1.1900181694152834 0.2335223942097632
40 7 Tampering 0.75 9 2 1266 398.44444444444446 5.214766049805263 5.095948820849879 1.489091829390507 0.29221090747574724
41 7 Tampering 1.0 9 2 1266 398.44444444444446 5.186261162459578 5.095948820849879 1.7365220144389066 0.3407651990800994
42 8 Weaponization 0.0 10 18 32409 4509.4 6.165797271067825 6.165797271067825 0.0 0.0
43 8 Weaponization 0.25 10 18 32409 4509.4 6.324316870213558 6.165797271067825 1.0213874306568795 0.16565374853461415
44 8 Weaponization 0.5 10 18 32409 4509.4 6.57305363177223 6.165797271067825 2.0215287048880053 0.3278616886049363
45 8 Weaponization 0.75 10 18 32409 4509.4 6.878957349558733 6.165797271067825 2.9039530195295855 0.47097770034639236
46 8 Weaponization 1.0 10 18 32409 4509.4 7.15445660681278 6.165797271067825 3.5588066747258478 0.577185158426319
@@ -0,0 +1,431 @@
class_id,class_name,beta,client_id,N_ij,weight
0,C&C,0.0,0,126.0,0.1
0,C&C,0.0,1,559.0,0.1
0,C&C,0.0,2,92.0,0.1
0,C&C,0.0,3,966.0,0.1
0,C&C,0.0,4,1.0,0.1
0,C&C,0.0,5,4.0,0.1
0,C&C,0.0,6,44.0,0.1
0,C&C,0.0,7,20.0,0.1
0,C&C,0.0,8,4.0,0.1
0,C&C,0.0,9,188.0,0.1
0,C&C,0.25,0,126.0,0.1151076953459115
0,C&C,0.25,1,559.0,0.16705699856522024
0,C&C,0.25,2,92.0,0.10640417756135012
0,C&C,0.25,3,966.0,0.19153846560388027
0,C&C,0.25,4,1.0,0.03435672212828583
0,C&C,0.25,5,4.0,0.048587742392505656
0,C&C,0.25,6,44.0,0.08848606687234023
0,C&C,0.25,7,20.0,0.07265562136892396
0,C&C,0.25,8,4.0,0.048587742392505656
0,C&C,0.25,9,188.0,0.12721876776907656
0,C&C,0.5,0,126.0,0.1065422012127861
0,C&C,0.5,1,559.0,0.22441004697943928
0,C&C,0.5,2,92.0,0.09103959276541436
0,C&C,0.5,3,966.0,0.2950019970006494
0,C&C,0.5,4,1.0,0.00949153367073754
0,C&C,0.5,5,4.0,0.01898306734147508
0,C&C,0.5,6,44.0,0.06295971174172223
0,C&C,0.5,7,20.0,0.042447428996994496
0,C&C,0.5,8,4.0,0.01898306734147508
0,C&C,0.5,9,188.0,0.13014135294930645
0,C&C,0.75,0,126.0,0.0855655871345543
0,C&C,0.75,1,559.0,0.2615652717477686
0,C&C,0.75,2,92.0,0.06758683296367546
0,C&C,0.75,3,966.0,0.394233994745809
0,C&C,0.75,4,1.0,0.002275208627619524
0,C&C,0.75,5,4.0,0.0064352617968156155
0,C&C,0.75,6,44.0,0.03886965923679492
0,C&C,0.75,7,20.0,0.02151759468302796
0,C&C,0.75,8,4.0,0.0064352617968156155
0,C&C,0.75,9,188.0,0.11551532726711894
0,C&C,1.0,0,126.0,0.06287425149700598
0,C&C,1.0,1,559.0,0.27894211576846306
0,C&C,1.0,2,92.0,0.04590818363273453
0,C&C,1.0,3,966.0,0.4820359281437126
0,C&C,1.0,4,1.0,0.000499001996007984
0,C&C,1.0,5,4.0,0.001996007984031936
0,C&C,1.0,6,44.0,0.021956087824351298
0,C&C,1.0,7,20.0,0.00998003992015968
0,C&C,1.0,8,4.0,0.001996007984031936
0,C&C,1.0,9,188.0,0.09381237524950099
1,Exfiltration,0.0,0,901.0,0.1111111111111111
1,Exfiltration,0.0,1,2212.0,0.1111111111111111
1,Exfiltration,0.0,2,6305.0,0.1111111111111111
1,Exfiltration,0.0,3,1509.0,0.1111111111111111
1,Exfiltration,0.0,4,1151.0,0.1111111111111111
1,Exfiltration,0.0,5,554.0,0.1111111111111111
1,Exfiltration,0.0,7,2414.0,0.1111111111111111
1,Exfiltration,0.0,8,45.0,0.1111111111111111
1,Exfiltration,0.0,9,403.0,0.1111111111111111
1,Exfiltration,0.25,0,901.0,0.10488370771254768
1,Exfiltration,0.25,1,2212.0,0.13128742018910042
1,Exfiltration,0.25,2,6305.0,0.17058785429598938
1,Exfiltration,0.25,3,1509.0,0.11931612591243025
1,Exfiltration,0.25,4,1151.0,0.11150533960183845
1,Exfiltration,0.25,5,554.0,0.09287616512675537
1,Exfiltration,0.25,7,2414.0,0.1341872183614202
1,Exfiltration,0.25,8,45.0,0.049582676014601146
1,Exfiltration,0.25,9,403.0,0.08577349278531715
1,Exfiltration,0.5,0,901.0,0.09132555422282185
1,Exfiltration,0.5,1,2212.0,0.14309434870683396
1,Exfiltration,0.5,2,6305.0,0.24158639122064396
1,Exfiltration,0.5,3,1509.0,0.11818831496599357
1,Exfiltration,0.5,4,1151.0,0.10322088606347385
1,Exfiltration,0.5,5,554.0,0.0716118351658491
1,Exfiltration,0.5,7,2414.0,0.14948532289176902
1,Exfiltration,0.5,8,45.0,0.02040967916975066
1,Exfiltration,0.5,9,403.0,0.06107766759286411
1,Exfiltration,0.75,0,901.0,0.07474547195934379
1,Exfiltration,0.75,1,2212.0,0.14659870610885303
1,Exfiltration,0.75,2,6305.0,0.32159190878390587
1,Exfiltration,0.75,3,1509.0,0.11004193666101915
1,Exfiltration,0.75,4,1151.0,0.0898147753510184
1,Exfiltration,0.75,5,554.0,0.05190074821259029
1,Exfiltration,0.75,7,2414.0,0.15652879594112112
1,Exfiltration,0.75,8,45.0,0.007896791666047197
1,Exfiltration,0.75,9,403.0,0.04088086531610112
1,Exfiltration,1.0,0,901.0,0.05815154253259326
1,Exfiltration,1.0,1,2212.0,0.14276494126758746
1,Exfiltration,1.0,2,6305.0,0.4069317155027753
1,Exfiltration,1.0,3,1509.0,0.09739253904737318
1,Exfiltration,1.0,4,1151.0,0.07428682070478895
1,Exfiltration,1.0,5,554.0,0.03575577642958565
1,Exfiltration,1.0,7,2414.0,0.15580224603072157
1,Exfiltration,1.0,8,45.0,0.002904350070995224
1,Exfiltration,1.0,9,403.0,0.02601006841357945
2,Exploitation,0.0,1,69.0,0.125
2,Exploitation,0.0,2,353.0,0.125
2,Exploitation,0.0,3,140.0,0.125
2,Exploitation,0.0,4,18.0,0.125
2,Exploitation,0.0,5,53.0,0.125
2,Exploitation,0.0,7,10.0,0.125
2,Exploitation,0.0,8,138.0,0.125
2,Exploitation,0.0,9,12.0,0.125
2,Exploitation,0.25,1,69.0,0.12820070837603917
2,Exploitation,0.25,2,353.0,0.19280656995181955
2,Exploitation,0.25,3,140.0,0.15300659874710393
2,Exploitation,0.25,4,18.0,0.09162126389668253
2,Exploitation,0.25,5,53.0,0.12001820291832185
2,Exploitation,0.25,7,10.0,0.07910030393054958
2,Exploitation,0.25,8,138.0,0.15245719454917472
2,Exploitation,0.25,9,12.0,0.08278915763030867
2,Exploitation,0.5,1,69.0,0.12069450280550381
2,Exploitation,0.5,2,353.0,0.2729922370196399
2,Exploitation,0.5,3,140.0,0.17192022168391838
2,Exploitation,0.5,4,18.0,0.061645190243919123
2,Exploitation,0.5,5,53.0,0.10577934645369526
2,Exploitation,0.5,7,10.0,0.04594761195710334
2,Exploitation,0.5,8,138.0,0.17068780277142104
2,Exploitation,0.5,9,12.0,0.05033308706479918
2,Exploitation,0.75,1,69.0,0.10556071811114456
2,Exploitation,0.75,2,353.0,0.35908440732013547
2,Exploitation,0.75,3,140.0,0.1794574716279232
2,Exploitation,0.75,4,18.0,0.038531853176504316
2,Exploitation,0.75,5,53.0,0.08661087380030844
2,Exploitation,0.75,7,10.0,0.024795080232788844
2,Exploitation,0.75,8,138.0,0.17753125890253862
2,Exploitation,0.75,9,12.0,0.028428336828656486
2,Exploitation,1.0,1,69.0,0.08701134930643127
2,Exploitation,1.0,2,353.0,0.4451450189155107
2,Exploitation,1.0,3,140.0,0.17654476670870115
2,Exploitation,1.0,4,18.0,0.02269861286254729
2,Exploitation,1.0,5,53.0,0.06683480453972257
2,Exploitation,1.0,7,10.0,0.012610340479192938
2,Exploitation,1.0,8,138.0,0.17402269861286254
2,Exploitation,1.0,9,12.0,0.015132408575031526
3,Lateral_movement,0.0,0,5915.0,0.1
3,Lateral_movement,0.0,1,180.0,0.1
3,Lateral_movement,0.0,2,949.0,0.1
3,Lateral_movement,0.0,3,630.0,0.1
3,Lateral_movement,0.0,4,1747.0,0.1
3,Lateral_movement,0.0,5,315.0,0.1
3,Lateral_movement,0.0,6,588.0,0.1
3,Lateral_movement,0.0,7,8385.0,0.1
3,Lateral_movement,0.0,8,3359.0,0.1
3,Lateral_movement,0.0,9,49.0,0.1
3,Lateral_movement,0.25,0,5915.0,0.1501082860475012
3,Lateral_movement,0.25,1,180.0,0.06269517301380084
3,Lateral_movement,0.25,2,949.0,0.09500195270506487
3,Lateral_movement,0.25,3,630.0,0.08575335420491714
3,Lateral_movement,0.25,4,1747.0,0.11065962780573274
3,Lateral_movement,0.25,5,315.0,0.07210968814689687
3,Lateral_movement,0.25,6,588.0,0.08428694450008248
3,Lateral_movement,0.25,7,8385.0,0.16379164537659827
3,Lateral_movement,0.25,8,3359.0,0.13030722009687146
3,Lateral_movement,0.25,9,49.0,0.04528610810253415
3,Lateral_movement,0.5,0,5915.0,0.1989618416073142
3,Lateral_movement,0.5,1,180.0,0.034707926590178705
3,Lateral_movement,0.5,2,949.0,0.07969398135686781
3,Lateral_movement,0.5,3,630.0,0.06493258495287492
3,Lateral_movement,0.5,4,1747.0,0.10812817429705543
3,Lateral_movement,0.5,5,315.0,0.04591427114014944
3,Lateral_movement,0.5,6,588.0,0.0627308367770708
3,Lateral_movement,0.5,7,8385.0,0.23688848537124346
3,Lateral_movement,0.5,8,3359.0,0.14993306515737906
3,Lateral_movement,0.5,9,49.0,0.01810883274986615
3,Lateral_movement,0.75,0,5915.0,0.23911291675609309
3,Lateral_movement,0.75,1,180.0,0.017421733025013916
3,Lateral_movement,0.75,2,949.0,0.060615910738470946
3,Lateral_movement,0.75,3,630.0,0.04458023848929545
3,Lateral_movement,0.75,4,1747.0,0.09579804672694094
3,Lateral_movement,0.75,5,315.0,0.026507568399994158
3,Lateral_movement,0.75,6,588.0,0.04233211526127385
3,Lateral_movement,0.75,7,8385.0,0.3106449340481183
3,Lateral_movement,0.75,8,3359.0,0.15642079119509741
3,Lateral_movement,0.75,9,49.0,0.006565745359701934
3,Lateral_movement,1.0,0,5915.0,0.2674413347198987
3,Lateral_movement,1.0,1,180.0,0.008138535967807569
3,Lateral_movement,1.0,2,949.0,0.0429081701858299
3,Lateral_movement,1.0,3,630.0,0.02848487588732649
3,Lateral_movement,1.0,4,1747.0,0.07898901297644347
3,Lateral_movement,1.0,5,315.0,0.014242437943663245
3,Lateral_movement,1.0,6,588.0,0.026585884161504723
3,Lateral_movement,1.0,7,8385.0,0.3791201338337026
3,Lateral_movement,1.0,8,3359.0,0.15187412397703123
3,Lateral_movement,1.0,9,49.0,0.0022154903467920604
4,Normal,0.0,0,48503.0,0.1
4,Normal,0.0,1,34165.0,0.1
4,Normal,0.0,2,604.0,0.1
4,Normal,0.0,3,13892.0,0.1
4,Normal,0.0,4,733.0,0.1
4,Normal,0.0,5,11521.0,0.1
4,Normal,0.0,6,34309.0,0.1
4,Normal,0.0,7,57789.0,0.1
4,Normal,0.0,8,68657.0,0.1
4,Normal,0.0,9,22604.0,0.1
4,Normal,0.25,0,48503.0,0.12643311355099549
4,Normal,0.25,1,34165.0,0.11582812842102214
4,Normal,0.25,2,604.0,0.04223552698344285
4,Normal,0.25,3,13892.0,0.09249321518664805
4,Normal,0.25,4,733.0,0.044329688172499916
4,Normal,0.25,5,11521.0,0.08826554900973617
4,Normal,0.25,6,34309.0,0.11594998523709188
4,Normal,0.25,7,57789.0,0.1320930528829076
4,Normal,0.25,8,68657.0,0.1379081359749846
4,Normal,0.25,9,22604.0,0.10446360458067135
4,Normal,0.5,0,48503.0,0.1448989887460024
4,Normal,0.5,1,34165.0,0.12161069385961577
4,Normal,0.5,2,604.0,0.016169609181656136
4,Normal,0.5,3,13892.0,0.07754672143303329
4,Normal,0.5,4,733.0,0.017812834840683953
4,Normal,0.5,5,11521.0,0.07061974453269211
4,Normal,0.5,6,34309.0,0.12186670917054386
4,Normal,0.5,7,57789.0,0.1581625446069081
4,Normal,0.5,8,68657.0,0.17239452345619735
4,Normal,0.5,9,22604.0,0.09891763017266696
4,Normal,0.75,0,48503.0,0.15736844444383508
4,Normal,0.75,1,34165.0,0.12099774308796071
4,Normal,0.75,2,604.0,0.005866362622349557
4,Normal,0.75,3,13892.0,0.06161192554082022
4,Normal,0.75,4,733.0,0.006782958842895826
4,Normal,0.75,5,11521.0,0.053543756058172465
4,Normal,0.75,6,34309.0,0.12138003149725662
4,Normal,0.75,7,57789.0,0.17946306696598666
4,Normal,0.75,8,68657.0,0.2042230782495533
4,Normal,0.75,9,22604.0,0.08876263269116956
4,Normal,1.0,0,48503.0,0.16566533573333972
4,Normal,1.0,1,34165.0,0.11669290962063276
4,Normal,1.0,2,604.0,0.0020630035829317193
4,Normal,1.0,3,13892.0,0.047449082407429545
4,Normal,1.0,4,733.0,0.0025036119640545534
4,Normal,1.0,5,11521.0,0.03935076867376877
4,Normal,1.0,6,34309.0,0.1171847515344443
4,Normal,1.0,7,57789.0,0.19738230803649193
4,Normal,1.0,8,68657.0,0.23450271025387923
4,Normal,1.0,9,22604.0,0.07720551819302746
5,RDOS,0.0,0,9867.0,0.1
5,RDOS,0.0,1,6640.0,0.1
5,RDOS,0.0,2,10123.0,0.1
5,RDOS,0.0,3,49283.0,0.1
5,RDOS,0.0,4,168.0,0.1
5,RDOS,0.0,5,1150.0,0.1
5,RDOS,0.0,6,5683.0,0.1
5,RDOS,0.0,7,9870.0,0.1
5,RDOS,0.0,8,5008.0,0.1
5,RDOS,0.0,9,1091.0,0.1
5,RDOS,0.25,0,9867.0,0.11567973944230156
5,RDOS,0.25,1,6640.0,0.10477388301010801
5,RDOS,0.25,2,10123.0,0.11642287745471731
5,RDOS,0.25,3,49283.0,0.1729359579215234
5,RDOS,0.25,4,168.0,0.041786725492481906
5,RDOS,0.25,5,1150.0,0.06759047208536309
5,RDOS,0.25,6,5683.0,0.10077560955092968
5,RDOS,0.25,7,9870.0,0.11568853136632039
5,RDOS,0.25,8,5008.0,0.09763984914273084
5,RDOS,0.25,9,1091.0,0.06670635453352391
5,RDOS,0.5,0,9867.0,0.11984639914435963
5,RDOS,0.5,1,6640.0,0.0983142488701723
5,RDOS,0.5,2,10123.0,0.12139115517749137
5,RDOS,0.5,3,49283.0,0.2678434277048929
5,RDOS,0.5,4,168.0,0.0156382109316702
5,RDOS,0.5,5,1150.0,0.04091488605243881
5,RDOS,0.5,6,5683.0,0.09095388492115096
5,RDOS,0.5,7,9870.0,0.11986461703595143
5,RDOS,0.5,8,5008.0,0.08538165838381333
5,RDOS,0.5,9,1091.0,0.039851511778059096
5,RDOS,0.75,0,9867.0,0.11357825947097776
5,RDOS,0.75,1,6640.0,0.08438833581318253
5,RDOS,0.75,2,10123.0,0.11578126507487838
5,RDOS,0.75,3,49283.0,0.3794715449540076
5,RDOS,0.75,4,168.0,0.005353506375321114
5,RDOS,0.75,5,1150.0,0.022655817788480442
5,RDOS,0.75,6,5683.0,0.07509129687510661
5,RDOS,0.75,7,9870.0,0.11360415805947478
5,RDOS,0.75,8,5008.0,0.06829746795700407
5,RDOS,0.75,9,1091.0,0.021778347631566747
5,RDOS,1.0,0,9867.0,0.0997845939140196
5,RDOS,1.0,1,6640.0,0.06715006623989968
5,RDOS,1.0,2,10123.0,0.10237351213049765
5,RDOS,1.0,3,49283.0,0.4983970955573759
5,RDOS,1.0,4,168.0,0.0016989775795637268
5,RDOS,1.0,5,1150.0,0.011629906050585035
5,RDOS,1.0,6,5683.0,0.057471961813456304
5,RDOS,1.0,7,9870.0,0.09981493279936896
5,RDOS,1.0,8,5008.0,0.050645712609852046
5,RDOS,1.0,9,1091.0,0.011033241305381107
6,Reconnaissance,0.0,0,29234.0,0.1
6,Reconnaissance,0.0,1,5054.0,0.1
6,Reconnaissance,0.0,2,1636.0,0.1
6,Reconnaissance,0.0,3,1137.0,0.1
6,Reconnaissance,0.0,4,14033.0,0.1
6,Reconnaissance,0.0,5,27596.0,0.1
6,Reconnaissance,0.0,6,3655.0,0.1
6,Reconnaissance,0.0,7,2431.0,0.1
6,Reconnaissance,0.0,8,1662.0,0.1
6,Reconnaissance,0.0,9,2723.0,0.1
6,Reconnaissance,0.25,0,29234.0,0.15230628118055436
6,Reconnaissance,0.25,1,5054.0,0.09820974037366471
6,Reconnaissance,0.25,2,1636.0,0.0740783974112407
6,Reconnaissance,0.25,3,1137.0,0.06763723878883773
6,Reconnaissance,0.25,4,14033.0,0.12677493158618858
6,Reconnaissance,0.25,5,27596.0,0.15012647507724955
6,Reconnaissance,0.25,6,3655.0,0.09056650300174746
6,Reconnaissance,0.25,7,2431.0,0.08178845290998221
6,Reconnaissance,0.25,8,1662.0,0.07437098070389571
6,Reconnaissance,0.25,9,2723.0,0.08414099896663899
6,Reconnaissance,0.5,0,29234.0,0.21278519952291416
6,Reconnaissance,0.5,1,5054.0,0.08847384757219018
6,Reconnaissance,0.5,2,1636.0,0.05033718736048316
6,Reconnaissance,0.5,3,1137.0,0.04196406276627246
6,Reconnaissance,0.5,4,14033.0,0.14742548262585833
6,Reconnaissance,0.5,5,27596.0,0.20673802531218738
6,Reconnaissance,0.5,6,3655.0,0.07523864857902528
6,Reconnaissance,0.5,7,2431.0,0.061360625065784886
6,Reconnaissance,0.5,8,1662.0,0.050735600537849077
6,Reconnaissance,0.5,9,2723.0,0.06494132065743503
6,Reconnaissance,0.75,0,29234.0,0.27357822501416285
6,Reconnaissance,0.75,1,5054.0,0.07334859067983003
6,Reconnaissance,0.75,2,1636.0,0.03147768753676809
6,Reconnaissance,0.75,3,1137.0,0.02395993822816564
6,Reconnaissance,0.75,4,14033.0,0.15777138551882777
6,Reconnaissance,0.75,5,27596.0,0.2619991894508377
6,Reconnaissance,0.75,6,3655.0,0.05752158990542161
6,Reconnaissance,0.75,7,2431.0,0.04236469310457719
6,Reconnaissance,0.75,8,1662.0,0.031852139574943754
6,Reconnaissance,0.75,9,2723.0,0.04612656098646531
6,Reconnaissance,1.0,0,29234.0,0.3278787810814145
6,Reconnaissance,1.0,1,5054.0,0.056683976177925324
6,Reconnaissance,1.0,2,1636.0,0.018348829645248484
6,Reconnaissance,1.0,3,1137.0,0.012752212290126849
6,Reconnaissance,1.0,4,14033.0,0.15738944157198775
6,Reconnaissance,1.0,5,27596.0,0.3095075201040814
6,Reconnaissance,1.0,6,3655.0,0.04099325938470856
6,Reconnaissance,1.0,7,2431.0,0.027265284148899182
6,Reconnaissance,1.0,8,1662.0,0.01864043696234901
6,Reconnaissance,1.0,9,2723.0,0.030540258633258936
7,Tampering,0.0,1,1266.0,0.1111111111111111
7,Tampering,0.0,2,5.0,0.1111111111111111
7,Tampering,0.0,3,832.0,0.1111111111111111
7,Tampering,0.0,4,336.0,0.1111111111111111
7,Tampering,0.0,5,2.0,0.1111111111111111
7,Tampering,0.0,6,93.0,0.1111111111111111
7,Tampering,0.0,7,506.0,0.1111111111111111
7,Tampering,0.0,8,385.0,0.1111111111111111
7,Tampering,0.0,9,161.0,0.1111111111111111
7,Tampering,0.25,1,1266.0,0.17471282970949986
7,Tampering,0.25,2,5.0,0.04379846321697165
7,Tampering,0.25,3,832.0,0.15730669363947933
7,Tampering,0.25,4,336.0,0.12540105513004648
7,Tampering,0.25,5,2.0,0.034831635761437905
7,Tampering,0.25,6,93.0,0.09095720540006634
7,Tampering,0.25,7,506.0,0.1389165536784107
7,Tampering,0.25,8,385.0,0.12974228838401372
7,Tampering,0.25,9,161.0,0.1043332750800741
7,Tampering,0.5,1,1266.0,0.23586314666038674
7,Tampering,0.5,2,5.0,0.014822731352266548
7,Tampering,0.5,3,832.0,0.19120748911321409
7,Tampering,0.5,4,336.0,0.12151023870697683
7,Tampering,0.5,5,2.0,0.009374718443589987
7,Tampering,0.5,6,93.0,0.06392705674588234
7,Tampering,0.5,7,506.0,0.14911402520164335
7,Tampering,0.5,8,385.0,0.13006893974001962
7,Tampering,0.5,9,161.0,0.08411165403602044
7,Tampering,0.75,1,1266.0,0.29501963330004927
7,Tampering,0.75,2,5.0,0.0046478611218455125
7,Tampering,0.75,3,832.0,0.21533674018298182
7,Tampering,0.75,4,336.0,0.10908878321903859
7,Tampering,0.75,5,2.0,0.002337750380452871
7,Tampering,0.75,6,93.0,0.04162822095143507
7,Tampering,0.75,7,506.0,0.14829910404504437
7,Tampering,0.75,8,385.0,0.12081509138390237
7,Tampering,0.75,9,161.0,0.06282681541525013
7,Tampering,1.0,1,1266.0,0.35303959843837146
7,Tampering,1.0,2,5.0,0.0013943112102621305
7,Tampering,1.0,3,832.0,0.2320133853876185
7,Tampering,1.0,4,336.0,0.09369771332961517
7,Tampering,1.0,5,2.0,0.0005577244841048522
7,Tampering,1.0,6,93.0,0.025934188510875627
7,Tampering,1.0,7,506.0,0.1411042944785276
7,Tampering,1.0,8,385.0,0.10736196319018405
7,Tampering,1.0,9,161.0,0.0448968209704406
8,Weaponization,0.0,0,18.0,0.1
8,Weaponization,0.0,1,486.0,0.1
8,Weaponization,0.0,2,32409.0,0.1
8,Weaponization,0.0,3,1220.0,0.1
8,Weaponization,0.0,4,334.0,0.1
8,Weaponization,0.0,5,691.0,0.1
8,Weaponization,0.0,6,713.0,0.1
8,Weaponization,0.0,7,2971.0,0.1
8,Weaponization,0.0,8,5815.0,0.1
8,Weaponization,0.0,9,437.0,0.1
8,Weaponization,0.25,0,18.0,0.033579850190171893
8,Weaponization,0.25,1,486.0,0.07654550547998105
8,Weaponization,0.25,2,32409.0,0.21873940967036698
8,Weaponization,0.25,3,1220.0,0.09634974857071463
8,Weaponization,0.25,4,334.0,0.06969429747420275
8,Weaponization,0.25,5,691.0,0.08358534509570838
8,Weaponization,0.25,6,713.0,0.08424284215070223
8,Weaponization,0.25,7,2971.0,0.12036113957241214
8,Weaponization,0.25,8,5815.0,0.14236330371286063
8,Weaponization,0.25,9,437.0,0.07453855808287936
8,Weaponization,0.5,0,18.0,0.009140200048750224
8,Weaponization,0.5,1,486.0,0.04749387262733675
8,Weaponization,0.5,2,32409.0,0.38783970155797365
8,Weaponization,0.5,3,1220.0,0.07524876280121073
8,Weaponization,0.5,4,334.0,0.039372471922378
8,Weaponization,0.5,5,691.0,0.05663155311084731
8,Weaponization,0.5,6,713.0,0.05752600484028785
8,Weaponization,0.5,7,2971.0,0.11742775943402554
8,Weaponization,0.5,8,5815.0,0.16428363668004434
8,Weaponization,0.5,9,437.0,0.0450360369771456
8,Weaponization,0.75,0,18.0,0.002056724198802832
8,Weaponization,0.75,1,486.0,0.024361211428694487
8,Weaponization,0.75,2,32409.0,0.5684874769186409
8,Weaponization,0.75,3,1220.0,0.04858380802663028
8,Weaponization,0.75,4,334.0,0.01838787442345046
8,Weaponization,0.75,5,691.0,0.031719783511132846
8,Weaponization,0.75,6,713.0,0.032474227320990603
8,Weaponization,0.75,7,2971.0,0.09471061744309137
8,Weaponization,0.75,8,5815.0,0.1567234445867468
8,Weaponization,0.75,9,437.0,0.022494832141819396
8,Weaponization,1.0,0,18.0,0.00039916618618884993
8,Weaponization,1.0,1,486.0,0.010777487027098949
8,Weaponization,1.0,2,32409.0,0.7186987182330243
8,Weaponization,1.0,3,1220.0,0.027054597063910942
8,Weaponization,1.0,4,334.0,0.007406750343726438
8,Weaponization,1.0,5,691.0,0.015323546369805296
8,Weaponization,1.0,6,713.0,0.015811416152925
8,Weaponization,1.0,7,2971.0,0.06588459662039296
8,Weaponization,1.0,8,5815.0,0.12895285403823126
8,Weaponization,1.0,9,437.0,0.009690867964695968
1 class_id class_name beta client_id N_ij weight
2 0 C&C 0.0 0 126.0 0.1
3 0 C&C 0.0 1 559.0 0.1
4 0 C&C 0.0 2 92.0 0.1
5 0 C&C 0.0 3 966.0 0.1
6 0 C&C 0.0 4 1.0 0.1
7 0 C&C 0.0 5 4.0 0.1
8 0 C&C 0.0 6 44.0 0.1
9 0 C&C 0.0 7 20.0 0.1
10 0 C&C 0.0 8 4.0 0.1
11 0 C&C 0.0 9 188.0 0.1
12 0 C&C 0.25 0 126.0 0.1151076953459115
13 0 C&C 0.25 1 559.0 0.16705699856522024
14 0 C&C 0.25 2 92.0 0.10640417756135012
15 0 C&C 0.25 3 966.0 0.19153846560388027
16 0 C&C 0.25 4 1.0 0.03435672212828583
17 0 C&C 0.25 5 4.0 0.048587742392505656
18 0 C&C 0.25 6 44.0 0.08848606687234023
19 0 C&C 0.25 7 20.0 0.07265562136892396
20 0 C&C 0.25 8 4.0 0.048587742392505656
21 0 C&C 0.25 9 188.0 0.12721876776907656
22 0 C&C 0.5 0 126.0 0.1065422012127861
23 0 C&C 0.5 1 559.0 0.22441004697943928
24 0 C&C 0.5 2 92.0 0.09103959276541436
25 0 C&C 0.5 3 966.0 0.2950019970006494
26 0 C&C 0.5 4 1.0 0.00949153367073754
27 0 C&C 0.5 5 4.0 0.01898306734147508
28 0 C&C 0.5 6 44.0 0.06295971174172223
29 0 C&C 0.5 7 20.0 0.042447428996994496
30 0 C&C 0.5 8 4.0 0.01898306734147508
31 0 C&C 0.5 9 188.0 0.13014135294930645
32 0 C&C 0.75 0 126.0 0.0855655871345543
33 0 C&C 0.75 1 559.0 0.2615652717477686
34 0 C&C 0.75 2 92.0 0.06758683296367546
35 0 C&C 0.75 3 966.0 0.394233994745809
36 0 C&C 0.75 4 1.0 0.002275208627619524
37 0 C&C 0.75 5 4.0 0.0064352617968156155
38 0 C&C 0.75 6 44.0 0.03886965923679492
39 0 C&C 0.75 7 20.0 0.02151759468302796
40 0 C&C 0.75 8 4.0 0.0064352617968156155
41 0 C&C 0.75 9 188.0 0.11551532726711894
42 0 C&C 1.0 0 126.0 0.06287425149700598
43 0 C&C 1.0 1 559.0 0.27894211576846306
44 0 C&C 1.0 2 92.0 0.04590818363273453
45 0 C&C 1.0 3 966.0 0.4820359281437126
46 0 C&C 1.0 4 1.0 0.000499001996007984
47 0 C&C 1.0 5 4.0 0.001996007984031936
48 0 C&C 1.0 6 44.0 0.021956087824351298
49 0 C&C 1.0 7 20.0 0.00998003992015968
50 0 C&C 1.0 8 4.0 0.001996007984031936
51 0 C&C 1.0 9 188.0 0.09381237524950099
52 1 Exfiltration 0.0 0 901.0 0.1111111111111111
53 1 Exfiltration 0.0 1 2212.0 0.1111111111111111
54 1 Exfiltration 0.0 2 6305.0 0.1111111111111111
55 1 Exfiltration 0.0 3 1509.0 0.1111111111111111
56 1 Exfiltration 0.0 4 1151.0 0.1111111111111111
57 1 Exfiltration 0.0 5 554.0 0.1111111111111111
58 1 Exfiltration 0.0 7 2414.0 0.1111111111111111
59 1 Exfiltration 0.0 8 45.0 0.1111111111111111
60 1 Exfiltration 0.0 9 403.0 0.1111111111111111
61 1 Exfiltration 0.25 0 901.0 0.10488370771254768
62 1 Exfiltration 0.25 1 2212.0 0.13128742018910042
63 1 Exfiltration 0.25 2 6305.0 0.17058785429598938
64 1 Exfiltration 0.25 3 1509.0 0.11931612591243025
65 1 Exfiltration 0.25 4 1151.0 0.11150533960183845
66 1 Exfiltration 0.25 5 554.0 0.09287616512675537
67 1 Exfiltration 0.25 7 2414.0 0.1341872183614202
68 1 Exfiltration 0.25 8 45.0 0.049582676014601146
69 1 Exfiltration 0.25 9 403.0 0.08577349278531715
70 1 Exfiltration 0.5 0 901.0 0.09132555422282185
71 1 Exfiltration 0.5 1 2212.0 0.14309434870683396
72 1 Exfiltration 0.5 2 6305.0 0.24158639122064396
73 1 Exfiltration 0.5 3 1509.0 0.11818831496599357
74 1 Exfiltration 0.5 4 1151.0 0.10322088606347385
75 1 Exfiltration 0.5 5 554.0 0.0716118351658491
76 1 Exfiltration 0.5 7 2414.0 0.14948532289176902
77 1 Exfiltration 0.5 8 45.0 0.02040967916975066
78 1 Exfiltration 0.5 9 403.0 0.06107766759286411
79 1 Exfiltration 0.75 0 901.0 0.07474547195934379
80 1 Exfiltration 0.75 1 2212.0 0.14659870610885303
81 1 Exfiltration 0.75 2 6305.0 0.32159190878390587
82 1 Exfiltration 0.75 3 1509.0 0.11004193666101915
83 1 Exfiltration 0.75 4 1151.0 0.0898147753510184
84 1 Exfiltration 0.75 5 554.0 0.05190074821259029
85 1 Exfiltration 0.75 7 2414.0 0.15652879594112112
86 1 Exfiltration 0.75 8 45.0 0.007896791666047197
87 1 Exfiltration 0.75 9 403.0 0.04088086531610112
88 1 Exfiltration 1.0 0 901.0 0.05815154253259326
89 1 Exfiltration 1.0 1 2212.0 0.14276494126758746
90 1 Exfiltration 1.0 2 6305.0 0.4069317155027753
91 1 Exfiltration 1.0 3 1509.0 0.09739253904737318
92 1 Exfiltration 1.0 4 1151.0 0.07428682070478895
93 1 Exfiltration 1.0 5 554.0 0.03575577642958565
94 1 Exfiltration 1.0 7 2414.0 0.15580224603072157
95 1 Exfiltration 1.0 8 45.0 0.002904350070995224
96 1 Exfiltration 1.0 9 403.0 0.02601006841357945
97 2 Exploitation 0.0 1 69.0 0.125
98 2 Exploitation 0.0 2 353.0 0.125
99 2 Exploitation 0.0 3 140.0 0.125
100 2 Exploitation 0.0 4 18.0 0.125
101 2 Exploitation 0.0 5 53.0 0.125
102 2 Exploitation 0.0 7 10.0 0.125
103 2 Exploitation 0.0 8 138.0 0.125
104 2 Exploitation 0.0 9 12.0 0.125
105 2 Exploitation 0.25 1 69.0 0.12820070837603917
106 2 Exploitation 0.25 2 353.0 0.19280656995181955
107 2 Exploitation 0.25 3 140.0 0.15300659874710393
108 2 Exploitation 0.25 4 18.0 0.09162126389668253
109 2 Exploitation 0.25 5 53.0 0.12001820291832185
110 2 Exploitation 0.25 7 10.0 0.07910030393054958
111 2 Exploitation 0.25 8 138.0 0.15245719454917472
112 2 Exploitation 0.25 9 12.0 0.08278915763030867
113 2 Exploitation 0.5 1 69.0 0.12069450280550381
114 2 Exploitation 0.5 2 353.0 0.2729922370196399
115 2 Exploitation 0.5 3 140.0 0.17192022168391838
116 2 Exploitation 0.5 4 18.0 0.061645190243919123
117 2 Exploitation 0.5 5 53.0 0.10577934645369526
118 2 Exploitation 0.5 7 10.0 0.04594761195710334
119 2 Exploitation 0.5 8 138.0 0.17068780277142104
120 2 Exploitation 0.5 9 12.0 0.05033308706479918
121 2 Exploitation 0.75 1 69.0 0.10556071811114456
122 2 Exploitation 0.75 2 353.0 0.35908440732013547
123 2 Exploitation 0.75 3 140.0 0.1794574716279232
124 2 Exploitation 0.75 4 18.0 0.038531853176504316
125 2 Exploitation 0.75 5 53.0 0.08661087380030844
126 2 Exploitation 0.75 7 10.0 0.024795080232788844
127 2 Exploitation 0.75 8 138.0 0.17753125890253862
128 2 Exploitation 0.75 9 12.0 0.028428336828656486
129 2 Exploitation 1.0 1 69.0 0.08701134930643127
130 2 Exploitation 1.0 2 353.0 0.4451450189155107
131 2 Exploitation 1.0 3 140.0 0.17654476670870115
132 2 Exploitation 1.0 4 18.0 0.02269861286254729
133 2 Exploitation 1.0 5 53.0 0.06683480453972257
134 2 Exploitation 1.0 7 10.0 0.012610340479192938
135 2 Exploitation 1.0 8 138.0 0.17402269861286254
136 2 Exploitation 1.0 9 12.0 0.015132408575031526
137 3 Lateral_movement 0.0 0 5915.0 0.1
138 3 Lateral_movement 0.0 1 180.0 0.1
139 3 Lateral_movement 0.0 2 949.0 0.1
140 3 Lateral_movement 0.0 3 630.0 0.1
141 3 Lateral_movement 0.0 4 1747.0 0.1
142 3 Lateral_movement 0.0 5 315.0 0.1
143 3 Lateral_movement 0.0 6 588.0 0.1
144 3 Lateral_movement 0.0 7 8385.0 0.1
145 3 Lateral_movement 0.0 8 3359.0 0.1
146 3 Lateral_movement 0.0 9 49.0 0.1
147 3 Lateral_movement 0.25 0 5915.0 0.1501082860475012
148 3 Lateral_movement 0.25 1 180.0 0.06269517301380084
149 3 Lateral_movement 0.25 2 949.0 0.09500195270506487
150 3 Lateral_movement 0.25 3 630.0 0.08575335420491714
151 3 Lateral_movement 0.25 4 1747.0 0.11065962780573274
152 3 Lateral_movement 0.25 5 315.0 0.07210968814689687
153 3 Lateral_movement 0.25 6 588.0 0.08428694450008248
154 3 Lateral_movement 0.25 7 8385.0 0.16379164537659827
155 3 Lateral_movement 0.25 8 3359.0 0.13030722009687146
156 3 Lateral_movement 0.25 9 49.0 0.04528610810253415
157 3 Lateral_movement 0.5 0 5915.0 0.1989618416073142
158 3 Lateral_movement 0.5 1 180.0 0.034707926590178705
159 3 Lateral_movement 0.5 2 949.0 0.07969398135686781
160 3 Lateral_movement 0.5 3 630.0 0.06493258495287492
161 3 Lateral_movement 0.5 4 1747.0 0.10812817429705543
162 3 Lateral_movement 0.5 5 315.0 0.04591427114014944
163 3 Lateral_movement 0.5 6 588.0 0.0627308367770708
164 3 Lateral_movement 0.5 7 8385.0 0.23688848537124346
165 3 Lateral_movement 0.5 8 3359.0 0.14993306515737906
166 3 Lateral_movement 0.5 9 49.0 0.01810883274986615
167 3 Lateral_movement 0.75 0 5915.0 0.23911291675609309
168 3 Lateral_movement 0.75 1 180.0 0.017421733025013916
169 3 Lateral_movement 0.75 2 949.0 0.060615910738470946
170 3 Lateral_movement 0.75 3 630.0 0.04458023848929545
171 3 Lateral_movement 0.75 4 1747.0 0.09579804672694094
172 3 Lateral_movement 0.75 5 315.0 0.026507568399994158
173 3 Lateral_movement 0.75 6 588.0 0.04233211526127385
174 3 Lateral_movement 0.75 7 8385.0 0.3106449340481183
175 3 Lateral_movement 0.75 8 3359.0 0.15642079119509741
176 3 Lateral_movement 0.75 9 49.0 0.006565745359701934
177 3 Lateral_movement 1.0 0 5915.0 0.2674413347198987
178 3 Lateral_movement 1.0 1 180.0 0.008138535967807569
179 3 Lateral_movement 1.0 2 949.0 0.0429081701858299
180 3 Lateral_movement 1.0 3 630.0 0.02848487588732649
181 3 Lateral_movement 1.0 4 1747.0 0.07898901297644347
182 3 Lateral_movement 1.0 5 315.0 0.014242437943663245
183 3 Lateral_movement 1.0 6 588.0 0.026585884161504723
184 3 Lateral_movement 1.0 7 8385.0 0.3791201338337026
185 3 Lateral_movement 1.0 8 3359.0 0.15187412397703123
186 3 Lateral_movement 1.0 9 49.0 0.0022154903467920604
187 4 Normal 0.0 0 48503.0 0.1
188 4 Normal 0.0 1 34165.0 0.1
189 4 Normal 0.0 2 604.0 0.1
190 4 Normal 0.0 3 13892.0 0.1
191 4 Normal 0.0 4 733.0 0.1
192 4 Normal 0.0 5 11521.0 0.1
193 4 Normal 0.0 6 34309.0 0.1
194 4 Normal 0.0 7 57789.0 0.1
195 4 Normal 0.0 8 68657.0 0.1
196 4 Normal 0.0 9 22604.0 0.1
197 4 Normal 0.25 0 48503.0 0.12643311355099549
198 4 Normal 0.25 1 34165.0 0.11582812842102214
199 4 Normal 0.25 2 604.0 0.04223552698344285
200 4 Normal 0.25 3 13892.0 0.09249321518664805
201 4 Normal 0.25 4 733.0 0.044329688172499916
202 4 Normal 0.25 5 11521.0 0.08826554900973617
203 4 Normal 0.25 6 34309.0 0.11594998523709188
204 4 Normal 0.25 7 57789.0 0.1320930528829076
205 4 Normal 0.25 8 68657.0 0.1379081359749846
206 4 Normal 0.25 9 22604.0 0.10446360458067135
207 4 Normal 0.5 0 48503.0 0.1448989887460024
208 4 Normal 0.5 1 34165.0 0.12161069385961577
209 4 Normal 0.5 2 604.0 0.016169609181656136
210 4 Normal 0.5 3 13892.0 0.07754672143303329
211 4 Normal 0.5 4 733.0 0.017812834840683953
212 4 Normal 0.5 5 11521.0 0.07061974453269211
213 4 Normal 0.5 6 34309.0 0.12186670917054386
214 4 Normal 0.5 7 57789.0 0.1581625446069081
215 4 Normal 0.5 8 68657.0 0.17239452345619735
216 4 Normal 0.5 9 22604.0 0.09891763017266696
217 4 Normal 0.75 0 48503.0 0.15736844444383508
218 4 Normal 0.75 1 34165.0 0.12099774308796071
219 4 Normal 0.75 2 604.0 0.005866362622349557
220 4 Normal 0.75 3 13892.0 0.06161192554082022
221 4 Normal 0.75 4 733.0 0.006782958842895826
222 4 Normal 0.75 5 11521.0 0.053543756058172465
223 4 Normal 0.75 6 34309.0 0.12138003149725662
224 4 Normal 0.75 7 57789.0 0.17946306696598666
225 4 Normal 0.75 8 68657.0 0.2042230782495533
226 4 Normal 0.75 9 22604.0 0.08876263269116956
227 4 Normal 1.0 0 48503.0 0.16566533573333972
228 4 Normal 1.0 1 34165.0 0.11669290962063276
229 4 Normal 1.0 2 604.0 0.0020630035829317193
230 4 Normal 1.0 3 13892.0 0.047449082407429545
231 4 Normal 1.0 4 733.0 0.0025036119640545534
232 4 Normal 1.0 5 11521.0 0.03935076867376877
233 4 Normal 1.0 6 34309.0 0.1171847515344443
234 4 Normal 1.0 7 57789.0 0.19738230803649193
235 4 Normal 1.0 8 68657.0 0.23450271025387923
236 4 Normal 1.0 9 22604.0 0.07720551819302746
237 5 RDOS 0.0 0 9867.0 0.1
238 5 RDOS 0.0 1 6640.0 0.1
239 5 RDOS 0.0 2 10123.0 0.1
240 5 RDOS 0.0 3 49283.0 0.1
241 5 RDOS 0.0 4 168.0 0.1
242 5 RDOS 0.0 5 1150.0 0.1
243 5 RDOS 0.0 6 5683.0 0.1
244 5 RDOS 0.0 7 9870.0 0.1
245 5 RDOS 0.0 8 5008.0 0.1
246 5 RDOS 0.0 9 1091.0 0.1
247 5 RDOS 0.25 0 9867.0 0.11567973944230156
248 5 RDOS 0.25 1 6640.0 0.10477388301010801
249 5 RDOS 0.25 2 10123.0 0.11642287745471731
250 5 RDOS 0.25 3 49283.0 0.1729359579215234
251 5 RDOS 0.25 4 168.0 0.041786725492481906
252 5 RDOS 0.25 5 1150.0 0.06759047208536309
253 5 RDOS 0.25 6 5683.0 0.10077560955092968
254 5 RDOS 0.25 7 9870.0 0.11568853136632039
255 5 RDOS 0.25 8 5008.0 0.09763984914273084
256 5 RDOS 0.25 9 1091.0 0.06670635453352391
257 5 RDOS 0.5 0 9867.0 0.11984639914435963
258 5 RDOS 0.5 1 6640.0 0.0983142488701723
259 5 RDOS 0.5 2 10123.0 0.12139115517749137
260 5 RDOS 0.5 3 49283.0 0.2678434277048929
261 5 RDOS 0.5 4 168.0 0.0156382109316702
262 5 RDOS 0.5 5 1150.0 0.04091488605243881
263 5 RDOS 0.5 6 5683.0 0.09095388492115096
264 5 RDOS 0.5 7 9870.0 0.11986461703595143
265 5 RDOS 0.5 8 5008.0 0.08538165838381333
266 5 RDOS 0.5 9 1091.0 0.039851511778059096
267 5 RDOS 0.75 0 9867.0 0.11357825947097776
268 5 RDOS 0.75 1 6640.0 0.08438833581318253
269 5 RDOS 0.75 2 10123.0 0.11578126507487838
270 5 RDOS 0.75 3 49283.0 0.3794715449540076
271 5 RDOS 0.75 4 168.0 0.005353506375321114
272 5 RDOS 0.75 5 1150.0 0.022655817788480442
273 5 RDOS 0.75 6 5683.0 0.07509129687510661
274 5 RDOS 0.75 7 9870.0 0.11360415805947478
275 5 RDOS 0.75 8 5008.0 0.06829746795700407
276 5 RDOS 0.75 9 1091.0 0.021778347631566747
277 5 RDOS 1.0 0 9867.0 0.0997845939140196
278 5 RDOS 1.0 1 6640.0 0.06715006623989968
279 5 RDOS 1.0 2 10123.0 0.10237351213049765
280 5 RDOS 1.0 3 49283.0 0.4983970955573759
281 5 RDOS 1.0 4 168.0 0.0016989775795637268
282 5 RDOS 1.0 5 1150.0 0.011629906050585035
283 5 RDOS 1.0 6 5683.0 0.057471961813456304
284 5 RDOS 1.0 7 9870.0 0.09981493279936896
285 5 RDOS 1.0 8 5008.0 0.050645712609852046
286 5 RDOS 1.0 9 1091.0 0.011033241305381107
287 6 Reconnaissance 0.0 0 29234.0 0.1
288 6 Reconnaissance 0.0 1 5054.0 0.1
289 6 Reconnaissance 0.0 2 1636.0 0.1
290 6 Reconnaissance 0.0 3 1137.0 0.1
291 6 Reconnaissance 0.0 4 14033.0 0.1
292 6 Reconnaissance 0.0 5 27596.0 0.1
293 6 Reconnaissance 0.0 6 3655.0 0.1
294 6 Reconnaissance 0.0 7 2431.0 0.1
295 6 Reconnaissance 0.0 8 1662.0 0.1
296 6 Reconnaissance 0.0 9 2723.0 0.1
297 6 Reconnaissance 0.25 0 29234.0 0.15230628118055436
298 6 Reconnaissance 0.25 1 5054.0 0.09820974037366471
299 6 Reconnaissance 0.25 2 1636.0 0.0740783974112407
300 6 Reconnaissance 0.25 3 1137.0 0.06763723878883773
301 6 Reconnaissance 0.25 4 14033.0 0.12677493158618858
302 6 Reconnaissance 0.25 5 27596.0 0.15012647507724955
303 6 Reconnaissance 0.25 6 3655.0 0.09056650300174746
304 6 Reconnaissance 0.25 7 2431.0 0.08178845290998221
305 6 Reconnaissance 0.25 8 1662.0 0.07437098070389571
306 6 Reconnaissance 0.25 9 2723.0 0.08414099896663899
307 6 Reconnaissance 0.5 0 29234.0 0.21278519952291416
308 6 Reconnaissance 0.5 1 5054.0 0.08847384757219018
309 6 Reconnaissance 0.5 2 1636.0 0.05033718736048316
310 6 Reconnaissance 0.5 3 1137.0 0.04196406276627246
311 6 Reconnaissance 0.5 4 14033.0 0.14742548262585833
312 6 Reconnaissance 0.5 5 27596.0 0.20673802531218738
313 6 Reconnaissance 0.5 6 3655.0 0.07523864857902528
314 6 Reconnaissance 0.5 7 2431.0 0.061360625065784886
315 6 Reconnaissance 0.5 8 1662.0 0.050735600537849077
316 6 Reconnaissance 0.5 9 2723.0 0.06494132065743503
317 6 Reconnaissance 0.75 0 29234.0 0.27357822501416285
318 6 Reconnaissance 0.75 1 5054.0 0.07334859067983003
319 6 Reconnaissance 0.75 2 1636.0 0.03147768753676809
320 6 Reconnaissance 0.75 3 1137.0 0.02395993822816564
321 6 Reconnaissance 0.75 4 14033.0 0.15777138551882777
322 6 Reconnaissance 0.75 5 27596.0 0.2619991894508377
323 6 Reconnaissance 0.75 6 3655.0 0.05752158990542161
324 6 Reconnaissance 0.75 7 2431.0 0.04236469310457719
325 6 Reconnaissance 0.75 8 1662.0 0.031852139574943754
326 6 Reconnaissance 0.75 9 2723.0 0.04612656098646531
327 6 Reconnaissance 1.0 0 29234.0 0.3278787810814145
328 6 Reconnaissance 1.0 1 5054.0 0.056683976177925324
329 6 Reconnaissance 1.0 2 1636.0 0.018348829645248484
330 6 Reconnaissance 1.0 3 1137.0 0.012752212290126849
331 6 Reconnaissance 1.0 4 14033.0 0.15738944157198775
332 6 Reconnaissance 1.0 5 27596.0 0.3095075201040814
333 6 Reconnaissance 1.0 6 3655.0 0.04099325938470856
334 6 Reconnaissance 1.0 7 2431.0 0.027265284148899182
335 6 Reconnaissance 1.0 8 1662.0 0.01864043696234901
336 6 Reconnaissance 1.0 9 2723.0 0.030540258633258936
337 7 Tampering 0.0 1 1266.0 0.1111111111111111
338 7 Tampering 0.0 2 5.0 0.1111111111111111
339 7 Tampering 0.0 3 832.0 0.1111111111111111
340 7 Tampering 0.0 4 336.0 0.1111111111111111
341 7 Tampering 0.0 5 2.0 0.1111111111111111
342 7 Tampering 0.0 6 93.0 0.1111111111111111
343 7 Tampering 0.0 7 506.0 0.1111111111111111
344 7 Tampering 0.0 8 385.0 0.1111111111111111
345 7 Tampering 0.0 9 161.0 0.1111111111111111
346 7 Tampering 0.25 1 1266.0 0.17471282970949986
347 7 Tampering 0.25 2 5.0 0.04379846321697165
348 7 Tampering 0.25 3 832.0 0.15730669363947933
349 7 Tampering 0.25 4 336.0 0.12540105513004648
350 7 Tampering 0.25 5 2.0 0.034831635761437905
351 7 Tampering 0.25 6 93.0 0.09095720540006634
352 7 Tampering 0.25 7 506.0 0.1389165536784107
353 7 Tampering 0.25 8 385.0 0.12974228838401372
354 7 Tampering 0.25 9 161.0 0.1043332750800741
355 7 Tampering 0.5 1 1266.0 0.23586314666038674
356 7 Tampering 0.5 2 5.0 0.014822731352266548
357 7 Tampering 0.5 3 832.0 0.19120748911321409
358 7 Tampering 0.5 4 336.0 0.12151023870697683
359 7 Tampering 0.5 5 2.0 0.009374718443589987
360 7 Tampering 0.5 6 93.0 0.06392705674588234
361 7 Tampering 0.5 7 506.0 0.14911402520164335
362 7 Tampering 0.5 8 385.0 0.13006893974001962
363 7 Tampering 0.5 9 161.0 0.08411165403602044
364 7 Tampering 0.75 1 1266.0 0.29501963330004927
365 7 Tampering 0.75 2 5.0 0.0046478611218455125
366 7 Tampering 0.75 3 832.0 0.21533674018298182
367 7 Tampering 0.75 4 336.0 0.10908878321903859
368 7 Tampering 0.75 5 2.0 0.002337750380452871
369 7 Tampering 0.75 6 93.0 0.04162822095143507
370 7 Tampering 0.75 7 506.0 0.14829910404504437
371 7 Tampering 0.75 8 385.0 0.12081509138390237
372 7 Tampering 0.75 9 161.0 0.06282681541525013
373 7 Tampering 1.0 1 1266.0 0.35303959843837146
374 7 Tampering 1.0 2 5.0 0.0013943112102621305
375 7 Tampering 1.0 3 832.0 0.2320133853876185
376 7 Tampering 1.0 4 336.0 0.09369771332961517
377 7 Tampering 1.0 5 2.0 0.0005577244841048522
378 7 Tampering 1.0 6 93.0 0.025934188510875627
379 7 Tampering 1.0 7 506.0 0.1411042944785276
380 7 Tampering 1.0 8 385.0 0.10736196319018405
381 7 Tampering 1.0 9 161.0 0.0448968209704406
382 8 Weaponization 0.0 0 18.0 0.1
383 8 Weaponization 0.0 1 486.0 0.1
384 8 Weaponization 0.0 2 32409.0 0.1
385 8 Weaponization 0.0 3 1220.0 0.1
386 8 Weaponization 0.0 4 334.0 0.1
387 8 Weaponization 0.0 5 691.0 0.1
388 8 Weaponization 0.0 6 713.0 0.1
389 8 Weaponization 0.0 7 2971.0 0.1
390 8 Weaponization 0.0 8 5815.0 0.1
391 8 Weaponization 0.0 9 437.0 0.1
392 8 Weaponization 0.25 0 18.0 0.033579850190171893
393 8 Weaponization 0.25 1 486.0 0.07654550547998105
394 8 Weaponization 0.25 2 32409.0 0.21873940967036698
395 8 Weaponization 0.25 3 1220.0 0.09634974857071463
396 8 Weaponization 0.25 4 334.0 0.06969429747420275
397 8 Weaponization 0.25 5 691.0 0.08358534509570838
398 8 Weaponization 0.25 6 713.0 0.08424284215070223
399 8 Weaponization 0.25 7 2971.0 0.12036113957241214
400 8 Weaponization 0.25 8 5815.0 0.14236330371286063
401 8 Weaponization 0.25 9 437.0 0.07453855808287936
402 8 Weaponization 0.5 0 18.0 0.009140200048750224
403 8 Weaponization 0.5 1 486.0 0.04749387262733675
404 8 Weaponization 0.5 2 32409.0 0.38783970155797365
405 8 Weaponization 0.5 3 1220.0 0.07524876280121073
406 8 Weaponization 0.5 4 334.0 0.039372471922378
407 8 Weaponization 0.5 5 691.0 0.05663155311084731
408 8 Weaponization 0.5 6 713.0 0.05752600484028785
409 8 Weaponization 0.5 7 2971.0 0.11742775943402554
410 8 Weaponization 0.5 8 5815.0 0.16428363668004434
411 8 Weaponization 0.5 9 437.0 0.0450360369771456
412 8 Weaponization 0.75 0 18.0 0.002056724198802832
413 8 Weaponization 0.75 1 486.0 0.024361211428694487
414 8 Weaponization 0.75 2 32409.0 0.5684874769186409
415 8 Weaponization 0.75 3 1220.0 0.04858380802663028
416 8 Weaponization 0.75 4 334.0 0.01838787442345046
417 8 Weaponization 0.75 5 691.0 0.031719783511132846
418 8 Weaponization 0.75 6 713.0 0.032474227320990603
419 8 Weaponization 0.75 7 2971.0 0.09471061744309137
420 8 Weaponization 0.75 8 5815.0 0.1567234445867468
421 8 Weaponization 0.75 9 437.0 0.022494832141819396
422 8 Weaponization 1.0 0 18.0 0.00039916618618884993
423 8 Weaponization 1.0 1 486.0 0.010777487027098949
424 8 Weaponization 1.0 2 32409.0 0.7186987182330243
425 8 Weaponization 1.0 3 1220.0 0.027054597063910942
426 8 Weaponization 1.0 4 334.0 0.007406750343726438
427 8 Weaponization 1.0 5 691.0 0.015323546369805296
428 8 Weaponization 1.0 6 713.0 0.015811416152925
429 8 Weaponization 1.0 7 2971.0 0.06588459662039296
430 8 Weaponization 1.0 8 5815.0 0.12895285403823126
431 8 Weaponization 1.0 9 437.0 0.009690867964695968
+176 -150
View File
@@ -3,11 +3,11 @@
This is the canonical continuation point for the next agent session. It is written to be
readable without prior chat history, terminal scrollback, or git history.
Last updated: 2026-09-24 (Session 4, support-weighted beta aggregation implementation).
Session 4 type: implementation + validation. The proposed `support_weighted`
(`w_ij = N_ij ** beta`) mode was added **without changing the frozen `original_protean`
baseline**. Only small smoke tests were run; **no beta sweep and no beta selection were
performed**.
Last updated: 2026-09-25 (Session 5, one paired full beta condition + validation-only
selection). Session 5 type: **protocol-validation experiment**. Exactly one
`(dataset, alpha, seed)` condition was run across all five beta candidates; beta was
selected on validation only and the selected beta evaluated once on test. **No full grid
was launched.**
---
@@ -24,204 +24,225 @@ S_j = { i | N_ij > 0 and a valid local prototype C_ij exists }
beta in {0.0, 0.25, 0.5, 0.75, 1.0}
```
Both the baseline and the proposed mode are now implemented. The baseline remains the
reference; `beta = 0` is arithmetic-identical to it only because both use the same
documented `S_j` participant rule.
Both the frozen `original_protean` baseline and the proposed `support_weighted` mode are
implemented. `beta = 0` is mathematically the equal mean over the shared `S_j` but is not
bitwise identical to the baseline (see §7).
## 2. Authoritative source and immutability
- `planningawal/PROTEAN_Revisi_Lurus.md` — authoritative research specification.
- `planningawal/` is immutable. Re-verified unchanged this session: `git status --
planningawal` and `git diff -- planningawal` are both empty.
- Raw datasets re-verified unchanged (SHA-256):
`~/datasets/X-IIoTID/X-IIoTID-dataset.csv`
`7b9290057ee42e784da3c0d84b781815502c9205c74175c96374e71a5ffd98a0`;
`~/datasets/5G-NIDD/5G-NIDD.csv`
`fa36f80859585f474504ca69eb951a079b35145537976c86b00aae3aab46ee59`.
## 3. Dataset locations (read-only external source data)
## 3. Session 5 objective and outcome
- `~/datasets/X-IIoTID/X-IIoTID-dataset.csv` — SHA-256
`7b9290057ee42e784da3c0d84b781815502c9205c74175c96374e71a5ffd98a0` (re-verified unchanged).
- `~/datasets/5G-NIDD/5G-NIDD.csv` — SHA-256
`fa36f80859585f474504ca69eb951a079b35145537976c86b00aae3aab46ee59` (re-verified unchanged).
Objective: run ONE paired full condition (X-IIoTID, alpha=0.5, seed=0) across
`beta ∈ {0, 0.25, 0.5, 0.75, 1}`, reusing the frozen manifest and training settings;
select beta on validation only; evaluate the selected beta on test; add the direct
prototype-effect and client-level analyses; update docs. **All acceptance items were met.**
No commit or push was made.
## 4. Session 4 objective and outcome
## 4. Condition and pairing
Objective: implement the proposed support-weighted prototype aggregation while preserving
the frozen `original_protean` baseline, add the deferred beta-invariant tests, add direct
prototype-effect instrumentation, run small smoke tests for beta 0 / 0.5 / 1, and update
docs. **All acceptance items were met.** No commit was made.
| Field | Value |
|---|---|
| dataset / alpha / seed | `xiiotid` / 0.50 / 0 |
| manifest | `artifacts/partitions/xiiotid__alpha0.5__seed0.json` (reused) |
| manifest content hash | `e81a6538ecefcda202aa7602310ff8d8c9529031ab9dcbec4ebbabc0e63b636c` |
| partition hash | `2465485539a3e923548dcc0c73d8acc5076d456536b78682d512897ea586e779` |
| split hash / sizes | `d0acc0c14e3ecbeba02dfa9e6227c983da12dec2d6111df0b714002e6e03c29d` / 569,909 train, 81,414 val, 162,831 test |
| preprocessing hash | `8580cee41c698ce43cf3269e4a2b3a01c92d6df22820f4004c0267478bd2579a` |
| training | 10 clients, 10 rounds, 3 local epochs, batch 256, lr 1e-3, mu 0.1, lambda 1.0, Adam |
| code revision | HEAD `ad9aa53ba76f60671ace991fcee85f003781f196`; only `scripts/run_baseline.py` modified (hash-object `2b469e35ecbbc6ea3dbd4b0632419993e4d5130b`) |
## 5. Implementation summary
Pairing proof: the round-0 prototype snapshot is **byte-identical** (SHA-256 prefix
`e27f41b3a62eb83c`) across all five beta runs and the frozen `original_protean` run;
`train_support_Nij.csv`, `characterization.csv`, `rare_unseen.csv` are identical across
runs. All runs are in `results/xiiotid__alpha0.5__seed0__support_weighted__beta{0,0.25,0.5,0.75,1}/`.
Added a new aggregation mode and threaded it through the stack; the baseline code path is
untouched.
## 5. Validation results and beta selection
- `src/protean_research/aggregation/prototype_aggregation.py`: `AggregationMode.SUPPORT_
WEIGHTED`, `BETA_CANDIDATES = (0.0, 0.25, 0.50, 0.75, 1.00)`, strict `validate_beta`
(`[0, 1]`; rejects `None`/non-numeric/non-finite/out-of-range), `normalized_support_
weights`; `aggregate_prototypes(..., supports=None, beta=None)` and `aggregate_class_
prototypes(..., beta=None)`. `S_j` is built once and is identical to the baseline:
`None`/`N_ij <= 0` entries dropped, no zero-vector padding. Passing `beta` to
`original_protean` raises.
- `src/protean_research/aggregation/__init__.py`: exports updated.
- `src/protean_research/models/prototypes.py`, `federated/server.py`: forward `beta`.
- `src/protean_research/federated/round.py`: `TrainingConfig.aggregation_mode` (default
`original_protean`) and `.beta` (default `None`); the round loop dispatches to the mode.
- `scripts/run_baseline.py`: new `--aggregation-mode {original_protean,support_weighted}`
and `--beta`. Default behavior is the unchanged baseline. Run name/metadata record mode
and beta (`...__original_protean` unchanged; `...__support_weighted__beta0.5` for beta).
- `src/protean_research/analysis/direct_prototype.py` (new) +
`scripts/analyze_prototype_effect.py` (new): recompute `Cbar_j(beta)` from a fixed round
snapshot of `{C_ij, N_ij}` **without retraining**; emit `||Cbar_j(beta) - Cbar_j(0)||`,
support stats, norms, and normalised client weights.
Primary selection metric: **validation per-client-mean rare-class macro-F1** (per-client
rare F1 on each client's validation eval partition, averaged over clients with rare
classes). Global union-rare validation metrics also shown.
`equal_available` was **not** added (the baseline already is equal-over-`S_j`, so it equals
`beta = 0`).
| beta | val rareMacroF1 (pc mean) | val rareMacroF1 (global) | val rareRecall | val macroF1 | val acc | val wF1 |
|---|---|---|---|---|---|---|
| 0.00 | 0.557340 | 0.611641 | 0.884184 | 0.708929 | 0.891038 | 0.917741 |
| 0.25 | 0.571787 | 0.629475 | 0.888488 | 0.723431 | 0.902953 | 0.925933 |
| **0.50** | **0.585762** | **0.641709** | 0.887173 | **0.731166** | 0.897831 | **0.926005** |
| 0.75 | 0.578003 | 0.637107 | 0.873910 | 0.726603 | 0.887894 | 0.921696 |
| 1.00 | 0.551443 | 0.615307 | 0.847043 | 0.715951 | 0.883263 | 0.921182 |
## 6. Tests and baseline regression status
**Selected beta = 0.50** (best among tested candidates under this validation condition;
no tie; both validation readings agree). Test was **not** used for selection.
```
.venv/bin/python -m pytest -> 75 passed
```
## 6. Final test evaluation of the selected beta
Session-3 suite was 46 tests. Added `tests/test_support_weighted_aggregation.py` (21) and
`tests/test_prototype_effect.py` (7); one baseline-aggregation test was replaced by two
explicit tests (support_weighted now available; `beta` rejected for `original_protean`).
| metric | original_protean | support_weighted beta=0.50 |
|---|---|---|
| rare-class macro-F1 | 0.609620 | 0.640829 |
| rare-class recall | 0.871487 | 0.871583 |
| overall macro-F1 | 0.707701 | 0.730743 |
| accuracy | 0.890432 | 0.898158 |
| weighted-F1 | 0.917585 | 0.926333 |
Covered beta invariants: `beta=0` arithmetic mean; `beta=1` support-weighted mean;
hand-computed intermediate-beta fixture; single-contributor invariance; equal-support
invariance; missing-class exclusion; normalised weights sum to 1; invalid/non-numeric
beta rejection; supports strictly positive and aligned. **Baseline regression is green**:
`test_end_to_end_baseline_is_deterministic_and_learns_separable_fixture` and all baseline
arithmetic/validation tests pass unchanged.
All five candidates' test metrics (transparency only) are in
`docs/research/PAIRED_BETA_VALIDATION.md` §B.2. No superiority is claimed: single
dataset / alpha / seed.
## 7. Smoke results (NOT scientific results)
## 7. `beta = 0` equivalence result (important)
Condition: `xiiotid`, `alpha=0.5`, `seed=0`, `--max-rows 3000 --sample-from 60000`,
4 clients, 2 rounds, 1 local epoch (ignored dirs only).
`support_weighted beta=0` vs frozen `original_protean`:
| mode / beta | test accuracy | test macro-F1 | test rare macro-F1 | test rare recall |
|---|---|---|---|---|
| `original_protean` | 0.5167 | 0.2998 | 0.3140 | 0.4572 |
| `support_weighted` 0.0 | 0.5167 | 0.2998 | 0.3140 | 0.4572 |
| `support_weighted` 0.5 | 0.2333 | 0.1397 | 0.1797 | 0.3193 |
| `support_weighted` 1.0 | 0.0383 | 0.0252 | 0.0324 | 0.1995 |
- Same frozen manifest and split: **yes**.
- Same initialisation/round-0 setup: **yes** (round-0 snapshot byte-identical).
- Training behaviour: **mathematically identical, not bitwise**. `original_protean`
computes `Σ(C_ij/count)`; `support_weighted beta=0` computes `Σ((1/count)·C_ij)`.
Per-element difference ≤ `2.2e-16`–`4.4e-16` (~1 ULP, relative ~1e-16).
- Validation/test metrics: **not identical** (baseline slightly lower; e.g. test
accuracy 0.890432 vs 0.891974). The ~1 ULP aggregation difference feeds back into
round-1 prototype-alignment training and the trajectories diverge slowly from round 1.
- Deterministic artifacts identical: round-0 snapshot, `train_support_Nij.csv`,
`characterization.csv`, `rare_unseen.csv`; `history.json`/per-client/per-class differ.
Baseline-preservation evidence: the `original_protean` and `support_weighted beta=0` smoke
runs produced **byte-identical** result artifacts (only `metadata.json` differed in
mode/beta/run_name). The round-0 snapshots for `beta = 0, 0.5, 1` were **byte-identical**,
confirming the paired comparison (same partition/split/init/round-0 training). The
beta=0.5/1 metrics are toy-scale and must not be interpreted as method quality.
This is floating-point arithmetic ordering, not a semantic change; no code was altered to
force bitwise equality. **Conditional on the shared `S_j` reproduction assumption** and
does not prove `beta = 0` reproduces original PROTEAN.
Direct-effect analysis was exercised on the `beta=0` smoke snapshot (9 classes,
max displacement 7.65 at beta=1; relative displacement up to 1.51 for the most
support-imbalanced class), written under the ignored smoke directory
`artifacts/processed/smoke/analysis/`.
## 8. Direct prototype-effect findings (fixed round-0 snapshot, no retraining)
## 8. Methodological decisions / assumptions carried forward
At `beta = 1.0`, largest `||Cbar_j(1)-Cbar_j(0)||`:
`Weaponization` 3.559 (rel 0.577; most support-imbalanced, cv 2.10, max/min 1,800),
`C&C` 2.156, `Lateral_movement` 2.069, `Exploitation` 1.934, `Tampering` 1.737,
`Exfiltration` 1.547; smallest: `Normal` 0.990 (cv 0.76), `RDOS` 1.286,
`Reconnaissance` 1.184. Every class has `|S_j| ≥ 8` and unequal support, so no class has
zero direct effect. Outputs:
`artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot__prototype_effect.csv`
and `...__prototype_weights.csv`. Displacement is a direct-aggregation measure only, not
a detection result.
## 9. Client-level findings (test, vs beta=0)
Full paired table: `artifacts/analysis/xiiotid__alpha0.5__seed0__paired_client_beta_metrics.csv`.
At `beta=0.50` six of ten clients improve; only client 3 is materially negative (−0.068).
At `beta=0.75/1.00` several clients lose, with client 3 worst (−0.257/−0.342). The
`min positive N_ij` vs ΔF1 relationship is **not monotonic** in this single condition:
client 3 (`min N_ij=140`) is the worst loser while client 5 (`min N_ij=2`) is the biggest
gainer. Descriptive only; no causal claim.
## 10. Runtime / resources
CPU only (no GPU). Per run: 41–44 min wall-clock, ~733–740 % CPU, peak RSS ~6.21 GiB,
no swap, exit 0. Total ~3.5 h for the five paired candidates. Preprocessing/load
negligible.
## 11. Methodological decisions / assumptions
1. **`S_j` participant/denominator rule** (`S_j = {i | N_ij > 0 and valid C_ij}`, equal
weights in the baseline) is a **REPRODUCTION ASSUMPTION**, not verified original
behaviour. It is material in 53/162 class-condition cells (32.7%), 15/18 conditions
(`docs/baseline/BASELINE_VALIDATION.md` §D). `beta = 0` equality with the baseline is
conditional on this shared rule. Carry this caveat in all reporting.
2. `N_ij` is **class-specific sample support**, not prototype quality.
3. `beta` is one value for all classes/clients; candidates are frozen at
`{0, 0.25, 0.5, 0.75, 1}`.
4. `lambda = 1.0`, optimiser (Adam), lr (1e-3), batch (256) remain PROJECT DECISIONS.
behaviour; material in 53/162 class-condition cells (32.7 %), 15/18 conditions
(`docs/baseline/BASELINE_VALIDATION.md` §D). Carry this caveat in all reporting.
2. `N_ij` is class-specific sample support, not prototype quality.
3. Beta is one value for all classes/clients; candidates frozen at `{0,.25,.5,.75,1}`.
4. `lambda=1.0`, Adam, lr 1e-3, batch 256 remain PROJECT DECISIONS.
5. **New this session (protocol clarification, documented in
`EXPERIMENT_PROTOCOL.md` §8):** candidate validation metric = final-model validation
metrics; primary selection = per-client-mean rare-class macro-F1 using a deterministic
Dirichlet validation eval partition (mirrors the existing test per-client procedure);
tie-break = higher val rare macro-F1 → higher val rare recall → smaller beta.
6. No `equal_available` mode was added.
## 9. Unresolved questions / blockers
## 12. Unresolved questions / blockers
1. `S_j` reproduction ambiguity (above) — unresolved, no official PROTEAN code exists.
2. Beta selection has **not** been run; no validation/test separation result exists yet.
3. Smoke-scale metrics are unstable and not meaningful; a full paired condition is needed.
4. Session-2 manifests store `preprocessing_hash = null` / `config_hash = null`; live
preprocessing hash is recorded in run metadata only.
1. `S_j` reproduction ambiguity — unresolved; no official PROTEAN code exists.
2. `beta = 0` is not bitwise identical to `original_protean` (float ordering). Whether the
thesis should report this explicitly, or whether an equivalence check should use a
tolerance, is a documentation decision for later.
3. Single condition only; no multi-seed/multi-alpha evidence yet.
4. Session-2 manifests still store `preprocessing_hash = null` / `config_hash = null`.
## 10. Git status
## 13. Git status
No commit or push was made. Working tree has 9 modified tracked files and 5 untracked
paths from this session (listed by `git status`). `planningawal/` and both raw datasets
are unchanged. `results/`, `artifacts/processed/` remain ignored. `artifacts/analysis/` is
tracked (no new files were written there this session; smoke analysis went to
`artifacts/processed/smoke/analysis/`).
No commit or push was made. `git status --short`:
## 11. Files created / modified this session
```
M scripts/run_baseline.py
?? artifacts/analysis/xiiotid__alpha0.5__seed0__paired_client_beta_metrics.csv
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot.json
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot__prototype_effect.csv
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot__prototype_weights.csv
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0.25__prototype_snapshot.json
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0.5__prototype_snapshot.json
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0.75__prototype_snapshot.json
?? artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta1__prototype_snapshot.json
```
`planningawal/` and both raw datasets are unchanged; `results/` and
`artifacts/processed/` are ignored; `artifacts/analysis/` is tracked.
## 14. Files created / modified this session
Created:
- `src/protean_research/analysis/__init__.py`
- `src/protean_research/analysis/direct_prototype.py`
- `scripts/analyze_prototype_effect.py`
- `tests/test_support_weighted_aggregation.py`
- `tests/test_prototype_effect.py`
- `docs/research/BETA_AGGREGATION_IMPLEMENTATION.md`
- `docs/research/PAIRED_BETA_VALIDATION.md`
- `artifacts/analysis/xiiotid__alpha0.5__seed0__paired_client_beta_metrics.csv`
- five `artifacts/analysis/...__support_weighted__beta*__prototype_snapshot.json`
- two `artifacts/analysis/...__prototype_snapshot__prototype_effect.csv` / `__prototype_weights.csv`
Modified:
- `src/protean_research/aggregation/prototype_aggregation.py`
- `src/protean_research/aggregation/__init__.py`
- `src/protean_research/models/prototypes.py`
- `src/protean_research/federated/server.py`
- `src/protean_research/federated/round.py`
- `scripts/run_baseline.py`
- `tests/test_baseline_aggregation.py`
- `configs/experiments/experiment_protocol.yaml`
- `docs/research/EXPERIMENT_PROTOCOL.md`
- `scripts/run_baseline.py` (added validation-only evaluation artifacts; test/training paths untouched)
- `docs/research/EXPERIMENT_PROTOCOL.md` (§8 Session-5 clarification)
- `docs/handoff/SESSION_HANDOFF.md` (this file)
## 12. Exact next task
## 15. Exact recommended next phase
**Recommended: run ONE paired full `(dataset, alpha, seed)` condition across
`beta in {0, 0.25, 0.5, 0.75, 1}` under the validation-based selection protocol, then
inspect.** Do not launch the full grid.
**Recommendation: B — checkpoint Session 5, then proceed to a controlled
multi-seed/multi-alpha experiment.** The protocol ran cleanly (validation/test separation
held, artifacts reproducible, pairing proven by byte-identical round-0 snapshots, no test
leakage into selection), so the next step is to scale to seeds `{0,1,2}` at a small alpha
set, still paired. Do **not** run the entire `dataset × alpha × seed × beta` grid at once;
grow it in controlled, inspectable increments.
Concretely:
Before scaling: decide how to report the float-level `beta = 0` vs `original_protean`
non-identity (§7), and whether to re-run `original_protean` per condition with the new
validation artifacts (the existing baseline run predates the validation-artifact change).
1. Reuse the frozen manifest for one condition (e.g. X-IIoTID `alpha=0.5`, seed 0) and the
frozen training settings (10 clients, 10 rounds, 3 local epochs, batch 256, lr 1e-3,
mu 0.1, lambda 1.0). Measure the single-run cost first (Session 3 measured ~42 min /
6.2 GiB on CPU for one baseline run; beta adds one run per candidate).
2. Train each beta with `run_baseline.py --aggregation-mode support_weighted --beta ...`
and record validation rare-class macro-F1; select beta on validation only.
3. Evaluate the selected beta on test, and report all candidates transparently.
4. Run `scripts/analyze_prototype_effect.py` on the round-0 snapshot for the direct
aggregation effect, clearly separated from end-to-end results.
5. Report the `S_j` reproduction caveat alongside every between-beta claim.
Do **not** add `equal_available`. Do **not** run the alpha x seed x dataset x beta grid.
## 13. Important commands
## 16. Important commands
```bash
# Tests (75 expected)
.venv/bin/python -m pytest
# Smoke: baseline and beta candidates (ignored output dirs)
# One full paired beta run (CPU, ~42 min, ~6.2 GiB)
.venv/bin/python scripts/run_baseline.py --dataset xiiotid --alpha 0.5 --seed 0 \
--max-rows 3000 --sample-from 60000 --clients 4 --rounds 2 --local-epochs 1
.venv/bin/python scripts/run_baseline.py --dataset xiiotid --alpha 0.5 --seed 0 \
--max-rows 3000 --sample-from 60000 --clients 4 --rounds 2 --local-epochs 1 \
--clients 10 --rounds 10 --local-epochs 3 \
--aggregation-mode support_weighted --beta 0.5
# Direct prototype-effect analysis (no retraining)
.venv/bin/python scripts/analyze_prototype_effect.py \
--snapshot artifacts/processed/smoke/analysis/\
xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot.json \
--output-dir artifacts/processed/smoke/analysis
# Full-data baseline for one condition (measure first; ~40-65 min, CPU)
.venv/bin/python scripts/run_baseline.py --dataset xiiotid --alpha 0.5 --seed 0 \
--clients 10 --rounds 10 --local-epochs 3
--snapshot artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot.json \
--class-names "C&C,Exfiltration,Exploitation,Lateral_movement,Normal,RDOS,Reconnaissance,Tampering,Weaponization" \
--output-dir artifacts/analysis
```
## 14. Recommended next-session prompt
## 17. Recommended next-session prompt
```
You are continuing the perdalam-protean research repository (Session 5).
You are continuing the perdalam-protean research repository (Session 6).
FIRST, read completely:
1. docs/handoff/SESSION_HANDOFF.md
2. docs/research/BETA_AGGREGATION_IMPLEMENTATION.md
3. docs/baseline/BASELINE_VALIDATION.md
4. docs/research/EXPERIMENT_PROTOCOL.md
2. docs/research/PAIRED_BETA_VALIDATION.md
3. docs/research/EXPERIMENT_PROTOCOL.md
4. docs/research/BETA_AGGREGATION_IMPLEMENTATION.md
5. docs/baseline/BASELINE_VALIDATION.md
Critical rules:
- planningawal/ is immutable. Do not edit/create/move/rename/delete anything inside it.
@@ -231,14 +252,19 @@ Critical rules:
class-condition cells). Carry this caveat in all reporting.
- Do NOT add an executable equal_available mode.
- Do NOT launch the full alpha x seed x dataset x beta grid.
- Beta selection uses validation metrics only; test never influences selection.
Task: the support_weighted mode (w_ij = N_ij^beta) is implemented and unit/smoke
validated; original_protean is unchanged. Run ONE paired full (dataset, alpha, seed)
condition across beta in {0, 0.25, 0.5, 0.75, 1}, reusing the frozen manifest and frozen
training settings. Select beta on validation rare-class macro-F1 only, then evaluate the
selected beta on test and report all candidates. Add the direct prototype-effect analysis
from the round-0 snapshot. Measure runtime before scaling. Update docs and
docs/handoff/SESSION_HANDOFF.md.
Context: Session 5 ran one paired full condition (xiiotid, alpha=0.5, seed=0) across
beta in {0,0.25,0.5,0.75,1}. Selected beta = 0.50 on validation per-client-mean
rare-class macro-F1; test rare-class macro-F1 0.640829 vs original_protean 0.609620.
beta=0 is mathematically but not bitwise equal to original_protean (~1 ULP aggregation
ordering). scripts/run_baseline.py now writes validation-only artifacts.
Task: scale the paired protocol to a controlled multi-seed/multi-alpha set (e.g. seeds
{0,1,2} at alpha 0.50, reusing frozen manifests; grow only as compute allows), keeping
validation-only beta selection and reporting all candidates. Decide/document how to
report the beta=0 vs original_protean float non-identity. Update docs and
docs/handoff/SESSION_HANDOFF.md. Measure runtime before scaling further.
Use .venv/bin/python for all Python commands. Do not commit or push unless asked.
```
+23
View File
@@ -135,6 +135,29 @@ Procedure, strictly ordered:
Test data is never used in steps 1–2.
**Session-5 clarification (implementation detail, not a design change).** Running
the protocol surfaced two concrete points that the original text left implicit.
They do not alter the frozen design; they pin how step 1 is computed.
1. **Candidate validation metric.** For each beta, validation metrics are taken
from the final trained model after the fixed round count (no best-round
cherry-picking). Two validation readings are recorded: (a) the global
union-rare validation rare-class macro-F1 (also stored in `history.json`), and
(b) the primary selection metric, the **per-client mean** rare-class macro-F1,
where each client is scored on its validation eval partition using that
client's rare class ids and the result is averaged over clients that have rare
classes. The per-client validation eval partition reuses the same deterministic
Dirichlet eval-partition procedure already used for the per-client test
evaluation, applied to the validation split (`split_name="validation"`); this
is a PROJECT DECISION, paired across all beta candidates and seeds.
2. **Tie-break order.** Higher validation rare-class macro-F1, then higher
validation rare-class recall, then smaller beta.
`scripts/run_baseline.py` writes `val_global_metrics.json`, `val_per_class.csv`,
`val_per_client.csv` and `val_selection.json` to make this explicit; the test
path and the frozen training path are unchanged. See
`docs/research/PAIRED_BETA_VALIDATION.md`.
## 9. Required metrics
Per dataset/alpha/seed/beta and per client, record:
+321
View File
@@ -0,0 +1,321 @@
# Paired Beta Validation (Session 5)
Status: **ONE paired full condition run end to end** with validation-only beta
selection, followed by a single final test evaluation of the selected beta. This
is a **protocol-validation experiment**, not a sweep and not evidence of global
behaviour.
Companion documents:
- `docs/research/EXPERIMENT_PROTOCOL.md` — frozen protocol.
- `docs/research/BETA_AGGREGATION_IMPLEMENTATION.md` — beta mode implementation.
- `docs/baseline/BASELINE_VALIDATION.md` — frozen baseline evidence.
- `docs/handoff/SESSION_HANDOFF.md` — continuation point.
---
## A. Condition
| Field | Value |
|---|---|
| dataset | `xiiotid` (X-IIoTID) |
| alpha | 0.50 |
| seed | 0 |
| aggregation modes | `original_protean` (reference), `support_weighted` for `beta ∈ {0, .25, .5, .75, 1}` |
| clients / rounds / local epochs | 10 / 10 / 3 |
| batch size / lr / optimizer | 256 / 1e-3 / Adam |
| mu / lambda | 0.1 / 1.0 |
| device | CPU only (`torch 2.14.0+cpu`, CUDA unavailable) |
| code revision | HEAD `ad9aa53ba76f60671ace991fcee85f003781f196`; only `scripts/run_baseline.py` was modified this session (`git hash-object` `2b469e35ecbbc6ea3dbd4b0632419993e4d5130b`) to add validation-only evaluation artifacts. Training, partition, aggregation, loss and inference source are unchanged at `ad9aa53`. |
Frozen manifest reused (never regenerated):
| Field | Value |
|---|---|
| path | `artifacts/partitions/xiiotid__alpha0.5__seed0.json` |
| manifest content hash | `e81a6538ecefcda202aa7602310ff8d8c9529031ab9dcbec4ebbabc0e63b636c` |
| partition hash | `2465485539a3e923548dcc0c73d8acc5076d456536b78682d512897ea586e779` |
| Dirichlet rng seed | `2009062324` |
| split hash | `d0acc0c14e3ecbeba02dfa9e6227c983da12dec2d6111df0b714002e6e03c29d` |
| split sizes (train/val/test) | 569,909 / 81,414 / 162,831 |
| preprocessing hash | `8580cee41c698ce43cf3269e4a2b3a01c92d6df22820f4004c0267478bd2579a` |
| `manifest_reload_ok` | true for every beta run |
Pairing evidence: the **round-0 prototype snapshot is byte-identical**
(SHA-256 prefix `e27f41b3a62eb83c`) for all five beta runs **and** the frozen
`original_protean` run, so every candidate shares the same partition, split,
model initialisation and round-0 local training. `train_support_Nij.csv`,
`characterization.csv` and `rare_unseen.csv` are byte-identical across all runs.
### A.1 Validation-evaluation clarification (new this session)
The frozen runner previously wrote only test artifacts; `history.json` held a
global (union-rare) validation trajectory. To evaluate the protocol's
validation-only selection, `scripts/run_baseline.py` now additionally writes, at
the end of the fixed 10 rounds:
- `val_global_metrics.json`, `val_confusion_matrix.json`, `val_per_class.csv`
(global validation metrics over the union of per-client rare classes);
- `val_per_client.csv` (per-client validation metrics, using the same
deterministic Dirichlet eval-partition procedure already used for test,
applied to the validation split with `split_name="validation"`);
- `val_selection.json` (the selection summary).
The test path is untouched: re-running a smoke condition before/after the change
produced byte-identical test artifacts (`history.json`, `test_global_metrics.json`,
`test_confusion_matrix.json`, `test_per_class.csv`, `per_client.csv`,
`train_support_Nij.csv`, `characterization.csv`, `rare_unseen.csv`,
`metadata.json`). The candidate's validation metric is taken from the **final
trained model after the fixed 10 rounds** (no best-round cherry-picking).
---
## B. Candidate results
`val rareMacroF1 (pc mean)` is the primary selection metric:
per-client rare-class macro-F1 (each client scored on its validation eval
partition using that client's rare class ids), averaged over clients with rare
classes. The global column is the union-rare validation metric also recorded in
`history.json`.
### B.1 USED FOR SELECTION — validation only
| beta | val rareMacroF1 (pc mean) | val rareMacroF1 (global) | val rareRecall (global) | val macroF1 (global) | val accuracy | val weighted-F1 |
|---|---|---|---|---|---|---|
| 0.00 | 0.557340 | 0.611641 | 0.884184 | 0.708929 | 0.891038 | 0.917741 |
| 0.25 | 0.571787 | 0.629475 | 0.888488 | 0.723431 | 0.902953 | 0.925933 |
| **0.50** | **0.585762** | **0.641709** | 0.887173 | **0.731166** | 0.897831 | **0.926005** |
| 0.75 | 0.578003 | 0.637107 | 0.873910 | 0.726603 | 0.887894 | 0.921696 |
| 1.00 | 0.551443 | 0.615307 | 0.847043 | 0.715951 | 0.883263 | 0.921182 |
Validation rare support: 12,726. Validation evaluated rare classes: `[0,1,2,3,7,8]`.
Ten of ten clients had validation eval data and rare classes.
### B.2 NOT USED FOR SELECTION — test (produced automatically by the frozen pipeline)
| beta | test accuracy | test macro-F1 | test weighted-F1 | test rareMacroF1 | test rare recall | wall-clock |
|---|---|---|---|---|---|---|
| 0.00 | 0.891974 | 0.710481 | 0.918369 | 0.613575 | 0.873508 | 41:17 |
| 0.25 | 0.903520 | 0.725299 | 0.926452 | 0.632154 | 0.877350 | 42:11 |
| 0.50 | 0.898158 | 0.730743 | 0.926333 | 0.640829 | 0.871583 | 42:57 |
| 0.75 | 0.888670 | 0.726298 | 0.922278 | 0.636189 | 0.857543 | 43:45 |
| 1.00 | 0.884635 | 0.716383 | 0.921910 | 0.615509 | 0.832407 | 42:08 |
Test rare support: 25,454. The test columns are reported for transparency only and
played no part in selecting beta.
---
## C. Beta selection
- **Selected beta: `0.50`** — best among the tested candidates under this
validation condition.
- **Criterion:** maximum validation per-client-mean rare-class macro-F1
(`0.585762`). The secondary global union-rare validation metric independently
also peaks at `beta = 0.50` (`0.641709`), so the two readings agree here.
- **Tie-break (not used):** higher validation rare-class macro-F1, then higher
validation rare-class recall, then smaller beta.
- **Test was not used for selection.** `val_selection.json` records
`"test_used_for_selection": false` for every run. Test metrics were not
inspected until after `beta = 0.50` was fixed from validation.
---
## D. Final test evaluation (selected beta vs baseline)
Selected `beta = 0.50` (test) versus the frozen `original_protean` reference for
the identical condition:
| metric | original_protean | support_weighted beta=0.50 | difference |
|---|---|---|---|
| rare-class macro-F1 | 0.609620 | 0.640829 | +0.031209 |
| rare-class recall | 0.871487 | 0.871583 | +0.000096 |
| overall macro-F1 | 0.707701 | 0.730743 | +0.023042 |
| accuracy | 0.890432 | 0.898158 | +0.007726 |
| weighted-F1 | 0.917585 | 0.926333 | +0.008748 |
Per-class test results, selected beta (support in parentheses):
| class | precision | recall | F1 | support |
|---|---|---|---|---|
| C&C | 0.098 | 0.960 | 0.178 | 573 |
| Exfiltration | 1.000 | 0.944 | 0.971 | 4,427 |
| Exploitation | 0.017 | 0.581 | 0.033 | 227 |
| Lateral_movement | 0.965 | 0.781 | 0.864 | 6,319 |
| Normal | 0.971 | 0.935 | 0.953 | 83,651 |
| RDOS | 0.992 | 0.997 | 0.995 | 28,252 |
| Reconnaissance | 0.993 | 0.648 | 0.784 | 25,474 |
| Tampering | 0.732 | 0.989 | 0.841 | 1,024 |
| Weaponization | 0.941 | 0.973 | 0.957 | 12,884 |
Per-client test results, selected beta:
| client | n | accuracy | macro-F1 | rare macro-F1 | rare recall |
|---|---|---|---|---|---|
| 0 | 22,614 | 0.8996 | 0.6158 | 0.5123 | 0.9886 |
| 1 | 33,759 | 0.9265 | 0.6662 | 0.3998 | 0.6941 |
| 2 | 5,625 | 0.9195 | 0.7840 | 0.9038 | 0.9760 |
| 3 | 13,539 | 0.9846 | 0.8284 | 0.5481 | 0.5758 |
| 4 | 11,881 | 0.7090 | 0.6334 | 0.1411 | 0.7973 |
| 5 | 12,785 | 0.9200 | 0.7898 | 0.8331 | 0.9920 |
| 6 | 6,131 | 0.9335 | 0.7243 | 0.4422 | 1.0000 |
| 7 | 34,434 | 0.9145 | 0.6202 | 0.0477 | 0.8492 |
| 8 | 5,090 | 0.9589 | 0.8038 | 0.6343 | 0.9532 |
| 9 | 16,973 | 0.8158 | 0.5706 | 0.4051 | 0.6541 |
**No superiority is claimed.** These are single-dataset, single-alpha,
single-seed results from one protocol-validation run.
---
## E. Direct prototype analysis (no retraining)
Computed from the fixed round-0 snapshot
(`artifacts/analysis/xiiotid__alpha0.5__seed0__support_weighted__beta0__prototype_snapshot.json`,
byte-identical across all beta runs) using the production aggregation; see
`...__prototype_effect.csv` and `...__prototype_weights.csv` under
`artifacts/analysis/`.
Per-class `||Cbar_j(beta) - Cbar_j(0)||` at `beta = 1.0` (relative displacement
in parentheses), sorted by displacement:
| class | contributors | support min–max (cv) | disp@beta=1 | rel disp |
|---|---|---|---|---|
| Weaponization | 10 | 18–32,409 (2.10) | 3.559 | 0.577 |
| C&C | 10 | 1–966 (1.50) | 2.156 | 0.370 |
| Lateral_movement | 10 | 49–8,385 (1.22) | 2.069 | 0.371 |
| Exploitation | 8 | 10–353 (1.09) | 1.934 | 0.342 |
| Tampering | 9 | 2–1,266 (1.00) | 1.737 | 0.341 |
| Exfiltration | 9 | 45–6,305 (1.04) | 1.547 | 0.214 |
| RDOS | 10 | 168–49,283 (1.38) | 1.286 | 0.148 |
| Reconnaissance | 10 | 1,137–29,234 (1.16) | 1.184 | 0.194 |
| Normal | 10 | 604–68,657 (0.76) | 0.990 | 0.164 |
- **Largest direct displacement:** `Weaponization` (also the most support-imbalanced
class, cv 2.10, max/min 1,800). For that class at `beta = 1.0` the single
largest-support client (N=32,409) holds weight `0.719` versus `0.100` at
`beta = 0`, while a client with N=18 drops to `0.0004`.
- Classes with more balanced support (`Normal`, cv 0.76; `RDOS`, cv 1.38 with one
dominant client) move less.
- **No class has zero direct effect:** every class has `|S_j| ≥ 8` and unequal
supports, so all nine prototypes shift for `beta > 0`. At `beta = 1.0`, no
direct-effect displacement exceeded `0.58` of the class prototype norm.
- **Displacement is a direct aggregation measure only** and is not interpreted as
improved or degraded detection. The end-to-end effect (§D) is reported
separately.
---
## F. Client-level analysis
Per-client test rarity metrics relative to `beta = 0`
(`artifacts/analysis/xiiotid__alpha0.5__seed0__paired_client_beta_metrics.csv`
contains the full paired table including validation columns and `N_ij`).
Delta test rare-class F1 vs `beta = 0` (negative = worse):
| client | min positive N_ij | beta=0 rare F1 | Δβ=0.25 | Δβ=0.50 | Δβ=0.75 | Δβ=1.00 |
|---|---|---|---|---|---|---|
| 0 | 18 | 0.4996 | +0.0115 | +0.0127 | −0.0010 | −0.0177 |
| 1 | 69 | 0.3844 | +0.0124 | +0.0154 | +0.0107 | +0.0061 |
| 2 | 5 | 0.8823 | +0.0109 | +0.0215 | +0.0126 | −0.0364 |
| 3 | 140 | 0.6162 | −0.0066 | −0.0681 | −0.2566 | −0.3422 |
| 4 | 1 | 0.1375 | −0.0005 | +0.0036 | +0.0126 | −0.0143 |
| 5 | 2 | 0.7126 | +0.0500 | +0.1204 | +0.1213 | +0.0622 |
| 6 | 44 | 0.3788 | +0.0304 | +0.0634 | +0.0690 | +0.0325 |
| 7 | 10 | 0.0470 | +0.0109 | +0.0006 | −0.0073 | −0.0140 |
| 8 | 4 | 0.6316 | +0.0298 | +0.0027 | −0.0108 | −0.0274 |
| 9 | 12 | 0.3910 | +0.0069 | +0.0141 | +0.0093 | +0.0027 |
Observations (descriptive, **not causal**):
- At `beta = 0.50`, six of ten clients improve and the only materially negative
client is client 3 (−0.068); the per-client mean therefore peaks at
`beta = 0.50` (§B.1).
- At `beta = 0.75`/`1.00`, several clients lose ground, and the largest single
loss is client 3 (−0.257 / −0.342). Client 3 has `min positive N_ij = 140`,
so it is **not** the lowest-support client; conversely client 5
(`min positive N_ij = 2`) is the largest gainer at `beta ≥ 0.5`.
- The relationship between `min positive N_ij` and ΔF1 is **not monotonic** in
this single condition. The data are recorded to enable the later, multi-seed
analysis of whether high beta disproportionately harms low-support clients;
no such claim is made here.
---
## G. Runtime and resources
Measured with `/usr/bin/time -v`, CPU only, no GPU, no swap.
| beta | wall-clock | CPU % | peak RSS |
|---|---|---|---|
| 0.00 | 41:17 | 740 % | 6.21 GiB |
| 0.25 | 42:11 | 738 % | 6.21 GiB |
| 0.50 | 42:57 | 737 % | 6.21 GiB |
| 0.75 | 43:45 | 733 % | 6.21 GiB |
| 1.00 | 42:08 | 737 % | 6.21 GiB |
Total: ~3 h 30 min for the five paired candidates, plus ~41 min for the initial
beta=0 measurement run (same configuration; not counted twice in the table
above beyond beta=0.00). Preprocessing/load is negligible next to training
(Session 3 measured ~0.9 s read and ~1.3 s prepare). No warnings, no client
failures, 9/9 global prototypes in every round, exit status 0.
---
## H. Limitations
- **Single dataset** (X-IIoTID), **single alpha** (0.50), **single seed** (0).
- The `S_j` participant/denominator rule
(`S_j = {i | N_ij > 0 and valid C_ij}`, equal weights in the baseline) is a
**REPRODUCTION ASSUMPTION**, not verified original PROTEAN behaviour. It is
material in 53/162 class-condition cells (32.7 %), 15/18 conditions
(`docs/baseline/BASELINE_VALIDATION.md` §D). `beta = 0` equality with the
baseline is **conditional** on both modes using this shared rule; the
`beta = 0` vs `original_protean` comparison below does **not** prove the rule
matches original PROTEAN.
- **No claim of a global beta optimum.** `beta = 0.50` is only the best among the
five tested candidates under this one validation procedure.
- **No full experiment grid has been run** (no other alpha, seed, dataset).
- The selected-beta test numbers are single-condition and may not generalise.
- The validation per-client evaluation partition used for selection is a
Session-5 clarification (mirrors the existing test per-client Dirichlet
procedure); it is a project decision, not source-confirmed.
- `beta = 0` under `support_weighted` is mathematically the equal mean but is
**not bitwise identical** to `original_protean` (see §I); the difference is
floating-point ordering, not a methodological change.
---
## I. `beta = 0` equivalence check (vs frozen `original_protean`)
| Property | Result |
|---|---|
| Same frozen manifest | **Yes** — identical manifest content/partition/split hashes |
| Same initialisation / round-0 setup | **Yes** — round-0 prototype snapshot byte-identical (`e27f41b3a62eb83c`) |
| Same training behaviour | **Mathematically yes, not bitwise.** `original_protean` computes `Σ(C_ij/count)`; `support_weighted beta=0` computes `Σ((1/count)·C_ij)`. Per-element difference is at most `2.2e-16`–`4.4e-16` (~1 ULP, relative ~1e-16) on the round-0 snapshot. |
| Same validation metrics | **No** — tiny divergence (e.g. global rare macro-F1 0.611641 vs 0.608087) |
| Same test metrics | **No** — accuracy 0.891974 vs 0.890432; rare macro-F1 0.613575 vs 0.609620 |
| Same deterministic artifacts | Round-0 snapshot, `train_support_Nij.csv`, `characterization.csv`, `rare_unseen.csv` identical; `history.json` and per-client/per-class metrics differ |
Mechanism: round 0 is byte-identical, then the ~1 ULP aggregation difference
feeds back into round-1 prototype-alignment training and the trajectories
diverge slowly (differences grow from ~1e-4 at round 1 to ~1e-2 at round 9). This
is floating-point arithmetic ordering (`vec/count` vs `vec*(1/count)`), amplified
by iterative training, **not** a semantic difference in the aggregation formula.
No code was changed to force bitwise equality; the frozen baseline arithmetic was
left untouched.
**Caveat:** this equivalence is conditional on the shared `S_j` reproduction
assumption and does not establish that `beta = 0` reproduces original PROTEAN.
---
## J. Verdict
The validation/test separation protocol ran cleanly end to end for this
condition: candidates trained on the paired manifest, beta was selected using
validation metrics only, and the selected beta was evaluated once on test. The
protocol appears ready, with the documented clarifications (validation per-client
evaluation partition; float-level `beta = 0` non-identity), to be scaled to
multi-seed/multi-alpha experiments. No full grid was launched.
+73
View File
@@ -252,6 +252,66 @@ def main(argv=None) -> int:
"rare_class_recall": rare["rare_class_recall"],
})
# ---- global validation evaluation (SELECTION ONLY) -------------------
# This block never influences training and is never used to tune any
# hyperparameter except the prototype-aggregation beta, which is selected
# on validation metrics only. The test split is untouched here.
val_embeddings = extract_embeddings(model, val_features)
val_pred = nearest_prototype_predict(val_embeddings, global_prototypes)
val_metrics = classification_metrics(val_labels, val_pred, bundle.num_classes)
val_rare = rare_class_metrics(val_labels, val_pred, bundle.num_classes, union_rare)
val_eval_assignments, _ = partition_mod.partition_eval_split(
val_labels, args.clients, args.alpha, args.dataset, args.seed, "validation"
)
val_per_client_rows = []
for client_id in range(args.clients):
idx = val_eval_assignments[client_id]
if len(idx) == 0:
val_per_client_rows.append({
"client_id": client_id, "n_samples": 0, "accuracy": None,
"macro_f1": None, "rare_class_macro_f1": None, "rare_class_recall": None,
})
continue
emb = extract_embeddings(model, val_features[idx])
pred = nearest_prototype_predict(emb, global_prototypes)
metrics = classification_metrics(val_labels[idx], pred, bundle.num_classes)
rare_ids = per_client_rare[client_id]
if rare_ids:
rare = rare_class_metrics(val_labels[idx], pred, bundle.num_classes, rare_ids)
else:
rare = {"rare_class_macro_f1": None, "rare_class_recall": None}
val_per_client_rows.append({
"client_id": client_id,
"n_samples": int(len(idx)),
"accuracy": metrics["accuracy"],
"macro_f1": metrics["macro_f1"],
"rare_class_macro_f1": rare["rare_class_macro_f1"],
"rare_class_recall": rare["rare_class_recall"],
})
def _mean_over_present(rows, key):
values = [float(row[key]) for row in rows if row.get(key) is not None]
return float(sum(values) / len(values)) if values else None
val_selection = {
"val_rare_class_macro_f1_global": val_rare["rare_class_macro_f1"],
"val_rare_class_recall_global": val_rare["rare_class_recall"],
"val_macro_f1_global": val_metrics["macro_f1"],
"val_weighted_f1_global": val_metrics["weighted_f1"],
"val_accuracy_global": val_metrics["accuracy"],
"val_rare_class_macro_f1_per_client_mean": _mean_over_present(
val_per_client_rows, "rare_class_macro_f1"
),
"val_rare_class_recall_per_client_mean": _mean_over_present(
val_per_client_rows, "rare_class_recall"
),
"val_n_eval_clients": sum(1 for row in val_per_client_rows if row["n_samples"] > 0),
"selection_metric": "rare_class_macro_f1_per_client_mean",
"selection_split": "validation",
"test_used_for_selection": False,
}
# ---- structured artifacts --------------------------------------------
mode_tag = args.aggregation_mode
if args.aggregation_mode == "support_weighted":
@@ -301,6 +361,19 @@ def main(argv=None) -> int:
for row in test_metrics["per_class"]
])
write_csv(run_dir / "per_client.csv", per_client_rows)
write_json(run_dir / "val_global_metrics.json", {
"accuracy": val_metrics["accuracy"],
"macro_f1": val_metrics["macro_f1"],
"weighted_f1": val_metrics["weighted_f1"],
**val_rare,
})
write_json(run_dir / "val_confusion_matrix.json", val_metrics["confusion_matrix"])
write_csv(run_dir / "val_per_class.csv", [
{**row, "class_name": bundle.class_names[row["class_id"]]}
for row in val_metrics["per_class"]
])
write_csv(run_dir / "val_per_client.csv", val_per_client_rows)
write_json(run_dir / "val_selection.json", val_selection)
write_csv(run_dir / "train_support_Nij.csv", [
{"client_id": i, **{bundle.class_names[c]: int(support[i, c]) for c in range(bundle.num_classes)}}
for i in range(args.clients)