-
Notifications
You must be signed in to change notification settings - Fork 0
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
Suche nach Refinements für verschiedene Attributtypen optimieren #742
Comments
BenchmarksComparison of runtimes between the implementation in this branch (after) and the main branch (before). In both cases, BOOMER's default configuration and a 10 fold-cross validation was used.
The training times of the new implementation are competitive to those of the original one. In many cases, the new implementation is slightly faster. In other cases, it is just as fast as the original implementation. In three cases, the new implementation is (insignificantly) slower. |
Bisher wird stets der selbe Code für die Suche nach Refinements genutzt, unabhängig davon, um welche Art Attribut es sich handelt. Zukünftig sollte es möglich sein, für einzelne Attributtypen spezielle Implementierungen zu verwenden, die für den jeweiligen Fall werden können. D.h., dass folgende Aspekte überarbeitet werden müssen:
FeatureVector
nur eine Datenstruktur für die Speicherung von Featurewerten bereitzustellen, müssen auf die unterschiedlichen Attributtypen zugeschnittene Datenstrukturen angeboten werden, die von einer gemeinsamen BasisklasseIFeatureVector
erben:NumericalFeatureVector
für die Speicherung numerischer Featurewerte in sortierter ReihenfolgeNominalFeatureVector
für die Speicherung nominaler Featurewerte in BinsBinaryFeatureVector
für die Speicherung nominaler Featurewerte mit zwei möglichen WertenOrdinalFeatureVector
für die Speicherung ordinaler Featurewerte in sortierten BinsEqualFeatureVector
falls alle Werte für ein Feature identisch sind (kann durch Filtern anderer Klassen passieren)IFeatureType
müssen Methoden implementieren, um die Werte für ein bestimmtes Feature aus einer Featurematrix auszulesen und, je nach Typ, eine der oben genannten Datenstrukturen zu erzeugen:NumericalFeatureType
erzeugt einenNumericalFeatureVector
oderEqualFeatureVector
NominalFeatureType
erzeugt einenNominalFeatureVector
,BinaryFeatureVector
oderEqualFeatureVector
OrdinalFeatureType
erzeugt einenOrdinalFeatureVector
,BinaryFeatureVector
oderEqualFeatureVector
ExactThresholds
muss einIFeatureVector
über die neuen Funktionen der KlasseIFeatureType
erzeugt werden. Da nun unterschiedliche Datenstrukturen vorliegen können, müssen Funktionen zur Filterung der Feature-Werte auf Basis einesRefinement
und gleichzeitige Anpassung derCoverageMask
, bzw. zur Filterung auf Basis derCoverageMask
zu jeder Unterklasse vonIFeatureVector
hinzugefügt werden:NumericalFeatureVector
:EqualFeatureVector
bei Filterung nachRefinement
EqualFeatureVector
bei Filterung nachCoverageMask
NominalFeatureVector
:BinaryFeatureVector
) mit angepasster Auswahl der Bins oder einenEqualFeatureVector
bei Filterung nachRefinement
BinaryFeatureVector
oder einenEqualFeatureVector
bei Filterung nachCoverageMask
BinaryFeatureVector
:EqualFeatureVector
bei Filterung nachRefinement
EqualFeatureVector
bei Filterung nachCoverageMask
OrdinalFeatureVector
:EqualFeatureVector
bei Filterung nachRefinement
EqualFeatureVector
bei Filterung nachCoverageMask
EqualFeatureVector
erfordert nicht dass neue Vektoren erzeugt werdenIRuleRefinement
für alle Arten von Attributen zu verwenden, müssen auf die unterschiedlichen Attributtypen zugeschnittene Implementierungen verwendet werden, die von einemIFeatureVector
per Visitor-Pattern aufgerufen werden.NumericalFeatureVector
NominalFeatureVector
BinaryFeatureVector
OrdinalFeatureVector
EqualFeatureVector
sollte nie ein Ergebnis liefernAnschließend sollte der Code für die approximative Suche nach Refinements auf die selben Datenstrukturen und Mechanismen umgestellt werden, um den Code zu vereinheitlichen. Dies soll jedoch nicht Teil dieses Issues sein und wird stattdessen in #770 beschrieben.
The text was updated successfully, but these errors were encountered: