Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid using unnecessay key variables in multi-table feature construction #485

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions src/Learning/KDDomainKnowledge/KDMultiTableFeatureConstruction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1589,13 +1589,18 @@ void KDMultiTableFeatureConstruction::ComputeAllClassesCompliantRules(
outputClassDomainCompliantRules->GetAllClassesCompliantRules()->GetAt(nClass));
kwcClass = classCompliantRules->GetClass();

// On interdit les cles de la classe
// De facon generale, il s'agit d'un principe: la cle ne sert qu'a encoder une structure et la
// memoriser: il ne s'agit pas d'attributs porteurs d'information. Pour la classe principale, les cle
// apparaissent une seule fois instance, et ne peuvent etre informatives. Pour les classes secondaires
// inclues, les cles sont soient unique par instance principale (la cle de l'incluant) sans interet,
// soit avec un role d'identifiant dans la table secondaire, sans interet autre que compter le nombre
// d'enregistrements (par CountDistinct, ici redondant avec Count).
// On interdit l'utilisation des cles du schema-multi-table pour la construction de variables.
// Les cles ne sont pas des attributs porteurs d'information.
// Pour la classe principale, les cles apparaissent une seule fois par instance, et ne peuvent pas etre informatives.
// Pour les classes secondaires du schema, les cles sont soit uniques par instance principale (la cle de l'incluant)
// et donc sans interet, soit avec un role d'identifiant dans la table secondaire, sans interet autre que de compter
// le nombre d'enregistrements (par CountDistinct, ici redondant avec Count).
//
// De facon generale, les cles ne sont qu'un moyen technique permettant d'encoder une structure, via des
// cles de jointure pour lire des donnees stockees dans plusieurs fichiers.
// Dans le cas de tables construites par des regles de derivation, les cles ne sont pas utiles
// et peuvent meme etre absentes des dictionnaires.
// L'information exploitable est ainsi independante du mode de stockage (avec ou sans cle).
for (nKey = 0; nKey < kwcClass->GetKeyAttributeNumber(); nKey++)
{
classCompliantRules->GetForbiddenAttributes()->SetAt(kwcClass->GetKeyAttributeNameAt(nKey),
Expand Down
Loading