Skip to content

Modifying the order of feature generation

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_or
if (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>());

link

Clone this wiki locally