You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dominik Drexler edited this page Oct 25, 2021
·
7 revisions
When trying to interpret the features that the feature generator produces then we can observe that some features are easier to interpret than others. The reason is that some features are more complex to compute. For example it is very easy to understand what the concept c_and produces but it is much harder to understand what the concept c_all produces. Therefore it is important to always generate the elements first that are the easiest to interpret for us. For each element Numerical, Boolean, Concept, and Role we define the following orderings:
Currently defined orderings:
In following, the element that comes first also comes first in the ordering.
Boolean & Numerical
b_empty
n_count
n_concept_distance
n_role_distance
n_sum_concept_distance
n_sum_role_distance
Concept
c_and
c_or
c_not
c_diff
c_projection
c_equal
c_subset
c_some
c_all
Role
r_and
r_or
r_not
r_diff
r_identity
r_inverse
r_restrict
r_compose
r_transitive closure
r_transitive reflexive closure
Modifying the current orderings:
// src/generator/feature_generator.cpp// FeatureGeneratorConstructor
...
// c_and before c_orif (generate_and_concept) m_inductive_rules.emplace_back(std::make_unique<rules::AndConcept>());
if (generate_or_concept) m_inductive_rules.emplace_back(std::make_unique<rules::OrConcept>());