mi-erasmusmc / Explore

Finding a short and accurate decision rule in disjunctive normal form by exhaustive search
https://mi-erasmusmc.github.io/Explore/
1 stars 1 forks source link

Issue generating next feature set for mix data #20

Closed AniekMarkus closed 1 month ago

AniekMarkus commented 1 month ago

For test data with 3 binary + 1 continuous variable NextFeatureSet() does not work correctly:

Term tuple: 1 1 1 2 = OR 3 = OR 4 = 2 = OR 3 = OR 5 > 2 = OR 3 = OR 5 <= 2 = OR 4 = OR 5 > 2 = OR 4 = OR 5 <= 2 = OR 5 > OR 5 <= 3 = OR 4 = OR 5 > 3 = OR 4 = OR 5 <= 3 = OR 5 > OR 5 <= 4 = OR 5 > OR 5 <= 5 > OR 5 <= OR 1

AniekMarkus commented 1 month ago

For test data with (only) EQUAL operators this is covered by the following if-statement to check if there are enough cutoff values:if (Left<(Conjunctions.size()-1-ConjunctionNr)){Incremented=false;} -> This fails here as conjunction 0 and 1 != EQUAL.

For test data without EQUAL operators MaxFOperator is updated, but in above case this fails as operator is EQUAL (4 =): if (FeatureOperators[Conjunctions[ConjunctionNr].Conditions[0].FeatureOperator].Operator!=EQUAL){ MaxFOperator = NoFeatureOperators-((Conjunctions.size()-1)-ConjunctionNr); }

AniekMarkus commented 1 month ago

If variables ordered differently (first continuous, then binary) -> last feature set missing for term tuple 1 1 1

Term tuple: 3 2 > AND 2 <= AND 3 = 2 > AND 2 <= AND 4 = 2 > AND 2 <= AND 5 = 2 > AND 3 = AND 4 = 2 > AND 3 = AND 5 = 2 > AND 4 = AND 5 = 2 <= AND 3 = AND 4 = 2 <= AND 3 = AND 5 = 2 <= AND 4 = AND 5 = 3 = AND 4 = AND 5 =

Term tuple: 1 1 1 2 > OR 2 <= OR 3 = 2 > OR 2 <= OR 4 = 2 > OR 2 <= OR 5 = 2 > OR 3 = OR 4 = 2 > OR 3 = OR 5 = 2 > OR 4 = OR 5 = 2 <= OR 3 = OR 4 = 2 <= OR 3 = OR 5 = 2 <= OR 4 = OR 5 = ??? (stopped to quickly because of if (Left<(Conjunctions.size()-1-ConjunctionNr)){Incremented=false;})

AniekMarkus commented 1 month ago

Fixed order for now: FIRST all binary THEN all continuous variables. Check this is correct in PLP.

AniekMarkus commented 1 month ago

Issues in FO pairs using binary reduction with mixed data:

image

Green = correctly skipped Red = wrongly skipped (if left) or wrongly included (if right)

image

AniekMarkus commented 1 month ago

Also for term tuple 2 1 1 some FO pairs were missing (some examples): image image image

And for term tuple 4 1 FO pair missing: image

For term tuple 3 1 1 FO pair generated that shouldn't be included: image