Skip to content

Commit ec5f392

Browse files
[ML] make p_value scoring tests more robust (#75629) (#75643)
closes: #75601 Co-authored-by: Benjamin Trent <[email protected]>
1 parent 588e190 commit ec5f392

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/heuristic/PValueScoreTests.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,32 +66,39 @@ public void testPValueScore_WhenAllDocsContainTerm() {
6666
assertThat(pValueScore.getScore(subsetCount, subsetCount, supersetCount, supersetCount), equalTo(0.0));
6767
}
6868

69-
@AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/75601")
7069
public void testHighPValueScore() {
7170
boolean backgroundIsSuperset = randomBoolean();
71+
// supersetFreqCount needs to at less than 20% ratio
7272
long supersetCount = randomLongBetween(0L, Long.MAX_VALUE/2);
73-
long subsetCount = randomLongBetween(0L, supersetCount);
73+
long supersetFreqCount = randomLongBetween(0L, (long)(supersetCount/5.0));
74+
// subsetFreqCount needs to be at least 25% ratio
75+
long subsetCount = randomLongBetween((long)(supersetCount/4.0), supersetCount);
76+
long subsetFreqCount = randomLongBetween((long)(subsetCount/4.0), subsetCount);
7477
if (backgroundIsSuperset) {
7578
supersetCount += subsetCount;
79+
supersetFreqCount += subsetFreqCount;
7680
}
7781

7882
PValueScore pValueScore = new PValueScore(backgroundIsSuperset);
79-
assertThat(pValueScore.getScore(subsetCount, subsetCount, subsetCount, supersetCount), greaterThanOrEqualTo(700.0));
83+
assertThat(pValueScore.getScore(subsetFreqCount, subsetCount, supersetFreqCount, supersetCount), greaterThanOrEqualTo(700.0));
8084
}
8185

82-
@AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/75601")
8386
public void testLowPValueScore() {
8487
boolean backgroundIsSuperset = randomBoolean();
88+
// supersetFreqCount needs to at least be 20% ratio
8589
long supersetCount = randomLongBetween(0L, Long.MAX_VALUE/2);
86-
long subsetCount = randomLongBetween(0L, supersetCount);
87-
long subsetFreqCount = randomLongBetween(0L, subsetCount/5);
90+
long supersetFreqCount = randomLongBetween((long)(supersetCount/5.0), supersetCount);
91+
// subsetFreqCount needs to be less than 16% ratio
92+
long subsetCount = randomLongBetween((long)(supersetCount/5.0), supersetCount);
93+
long subsetFreqCount = randomLongBetween(0L, (long)(subsetCount/6.0));
8894
if (backgroundIsSuperset) {
8995
supersetCount += subsetCount;
96+
supersetFreqCount += subsetFreqCount;
9097
}
9198

9299
PValueScore pValueScore = new PValueScore(backgroundIsSuperset);
93100
assertThat(
94-
pValueScore.getScore(subsetFreqCount, subsetCount, subsetCount, supersetCount),
101+
pValueScore.getScore(subsetFreqCount, subsetCount, supersetFreqCount, supersetCount),
95102
allOf(lessThanOrEqualTo(5.0), greaterThanOrEqualTo(0.0))
96103
);
97104
}

0 commit comments

Comments
 (0)