SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
teaching:projectgroups:ast:2021:motivation [2021/03/17 19:14]
Günter Kniesel
teaching:projectgroups:ast:2021:motivation [2021/03/17 19:18]
Günter Kniesel
Line 11: Line 11:
 Im Folgenden wird für jede Kategorie ein konkretes Beispiel des Problems und eine mögliche Lösung vorgestellt. Ziel der PG wird es sein, die Lösungen in einem verbesserten API umzusetzen und dies neue API mit so geringem Aufwand wie nur möglich (d.h. so weit wie möglich automatisiert) zu erstellen. Im Folgenden wird für jede Kategorie ein konkretes Beispiel des Problems und eine mögliche Lösung vorgestellt. Ziel der PG wird es sein, die Lösungen in einem verbesserten API umzusetzen und dies neue API mit so geringem Aufwand wie nur möglich (d.h. so weit wie möglich automatisiert) zu erstellen.
  
-Ein solches verbessertes API ist keine akademische Übung sondern hat eine sehr große Auswirkung in der Praxis. ​Insbesondere die Möglichkeit,​ statisch ​(also schon bei der Compilierung) ​Fehler zu erkennen, ist im Rahmen von maschinellem Lernen ein unschätzbarer Vorteil, denn manche Algorithmen laufen Stunden oder Tage. Dann wegen eines Tippfehlers (s.u.) neu anfangen zu müssen ist extrem ineffektiv und äusserst frustrierend.  ​+Ein solches verbessertes API ist keine akademische Übung sondern hat eine sehr große Auswirkung in der Praxis. ​Alles was Fehlern vorbeugt oder sie frühzeitig ​(schon bei der Compilierung) ​erkennt, ist im Rahmen von maschinellem Lernen ein unschätzbarer Vorteil, denn manche Algorithmen laufen Stunden oder Tage. Dann wegen eines Tippfehlers (s.u.) neu anfangen zu müssen ist extrem ineffektiv und äusserst frustrierend.  ​
    
 ===== Zu viele Parameter / Überflüssige Parameter ===== ===== Zu viele Parameter / Überflüssige Parameter =====
Line 62: Line 62:
 {{:​teaching:​projectgroups:​ast:​2021:​svc_parameter_dependencies_solution.png?​nolink&​430|}} {{:​teaching:​projectgroups:​ast:​2021:​svc_parameter_dependencies_solution.png?​nolink&​430|}}
  
-Dies ist im Wesentlichen eine Erweiterung der Enum-Idee ​das bereits unser vorheriges Problem gelöst hat. Dort für lineare Kernel ein einziger Wert, ''​Kernel.linear'',​ ausreichend. ​Das ist für polynomielle Kernel nicht mehr möglich, da ein Polynom beliebige Grade haben kann. Um beides zu modellieren müssen die möglichen Werte eine Klassenhierarchie bilden, die einerseits Singletons umfasst, wie etwa ''​Kernel.linear'',​ und andererseits Klassen mit öffentlichem Konstruktor,​ z.B. ''​Kernel.poly(degree)''​. Durch den Konstruktor-Parameter lassen sich die unendlichen Möglichkeiten für den Grad des Polynoms modellieren. Gleichzeitig wird klar, dass der Grad nur für Kernel der Art poly benötigt wird (der Paremeter ''​degree''​ nur bei einem polynomiellen Kernel gesetzt werden kann). Indem wir diesem Parameter keinen Standardwert geben, erzwingen wir außerdem, dass er bei einem polynomiellen Kernel auch immer gesetzt werden //​muss//​. ​+Dies ist im Wesentlichen eine Erweiterung der Enum-Idee ​die bereits unser vorheriges Problem gelöst hat. Dort ist für lineare Kernel ein einziger Wert, ''​Kernel.linear'',​ ausreichend. ​Für polynomielle Kernel ​ist dies nicht möglich, da ein Polynom beliebige Grade haben kann. Um beides zu modellieren müssen die möglichen Werte eine Klassenhierarchie bilden, die einerseits Singletons umfasst, wie etwa ''​Kernel.linear'',​ und andererseits Klassen mit öffentlichem Konstruktor,​ z.B. ''​Kernel.poly(degree)''​. Durch den Konstruktor-Parameter ​''​degree'' ​lassen sich die unendlichen Möglichkeiten für den Grad des Polynoms modellieren. Gleichzeitig wird klar, dass der Grad nur für Kernel der Art ''​poly'' ​benötigt wird (da der Paremeter ''​degree''​ nur bei einem polynomiellen Kernel gesetzt werden kann). Indem wir diesem Parameter keinen Standardwert geben, erzwingen wir außerdem, dass er bei einem polynomiellen Kernel auch immer gesetzt werden //​muss//​. ​
  
 Als positiven Nebeneffekt reduzieren wir die Zahl der Parameter des SVC-Modells und tragen so zur Lösung des ersten beschriebenen Problems bei. Als positiven Nebeneffekt reduzieren wir die Zahl der Parameter des SVC-Modells und tragen so zur Lösung des ersten beschriebenen Problems bei.
  
teaching/projectgroups/ast/2021/motivation.txt · Last modified: 2021/03/17 19:18 by Günter Kniesel

SEWiki, © 2021