Für die Anwendung von Regeln bei komplexen Datenanalysen stellt KNIME eine leicht verständliche, benutzerfreundliche und effiziente Alternative zu Excel dar, dessen Anwendung vor allem bei wiederkehrenden Analysen zeitintensiv sein kann. Im folgenden Beitrag, der sich besonders für Einsteiger eignet, erklärt Sarah Zeus Schritt für Schritt anhand einfacher Anwendungsfälle zum Filtern oder Clustern von Daten, wie verschiedene Rule-Nodes in KNIME Ihre Arbeit erleichtern können.
Filtern, Clustern, Segmentieren
Rule-Nodes in KNIME für Einsteiger
Die Rule-Nodes: Gemeinsamkeiten und Unterschiede
Beleuchtet werden in diesem Beitrag zwei Rule-Nodes in KNIME: der Rule-based Row Filter und die Rule Engine. Obwohl sich die Nodes für unterschiedliche Zwecke eignen, bietet sich die gemeinsame Betrachtung an, da ihre Konfigurationsmöglichkeiten sehr ähnlich sind.
So ermöglichen beide Nodes die Anwendung von Regeln auf eine Tabelle, wobei der Rule-based Row Filter – wie der Name sagt – ein Filter-Knoten ist, der Zeilen aus einer Tabelle filtert, die den gewählten Kriterien entsprechen oder nicht entsprechen. Wenn man es also mit großen Datenmengen zu tun hat und nur bestimmte Teile für die weitere Analyse extrahieren möchte, nutzt man am besten diesen Knoten: zum Beispiel, wenn in einer Keyword-Liste nur nach Keywords gefiltert werden soll, die einen bestimmten Begriff beinhalten, oder wenn aus einer URL-Liste nur URLs mit einem bestimmten Status-Code benötigt werden. Mehrere Kriterien sind dabei kombinierbar.
Auch mithilfe der Rule-Engine wird jede Zeile auf Regeln mit ein oder mehreren Bedingungen überprüft. Treffen die Kriterien zu, wird hier nicht gefiltert, sondern es wird entweder ein Ergebniswert in einer neuen Spalte hinzugefügt oder ein Wert in einer bestehenden Spalte gemäß der definierten Regel ersetzt. Der Rule-Engine-Knoten kann also eingesetzt werden, wenn Werte in einer Tabelle geändert, ersetzt oder kategorisiert werden sollen. Er ist besonders sinnvoll, wenn eine Reihe von Bedingungen auf die Daten angewendet werden sollen. Angenommen, man möchte Keywords nach bestimmten Begriffen oder nach Brand- und generischen Keywords clustern, URLs nach bestimmten Kriterien segmentieren oder nach Traffic-Daten klassifizieren, dann eignet sich hierfür die Rule-Engine. Auch hier sind mehrere Bedingungen kombinierbar.
Die Funktionen dieser Knoten können natürlich auch in Excel umgesetzt werden, zum Beispiel über Filter oder Funktionen wie „IF“ und „AND“. Für komplexere Anwendungsfälle, große Datenmengen oder wenn die Analyse wiederholt durchgeführt und deswegen zumindest teilweise automatisiert werden soll, ist KNIME oft die einfacher anwendbare, flexiblere und effizientere Wahl.
Konfiguration des Rule-based Row Filters
Ein Beispiel: Es liegt eine Liste mit URLs vor bzw. ein Export aus der Google Search Console, aus der für die weitere Analyse nur URLs mit bestimmten Merkmalen relevant sind. Wie beschrieben kann man hierfür die Filter-Node nutzen. Bevor wir einen Blick auf die Konfiguration werfen, müssen Daten importiert werden. Dafür zieht man die entsprechende Datei in die Arbeitsfläche von KNIME, woraufhin sich eine geeignete Reader-Node mit Vorschau auf die Tabelle öffnet:
Im Anschluss an den Excel-Reader-Knoten fügen wir einen Rule-based Row Filter hinzu. Dafür sucht man im Node Repository (links unten) nach der entsprechenden Node, zieht sie in die Arbeitsfläche und zieht eine Verbindung zwischen den beiden Nodes (Abbildung 3 und 4). Nach Ausführung des ersten Knotens ist der Filter bereit zur Konfiguration.
Mit Doppelklick auf den Filter-Knoten öffnet sich ein Dialog. Oben rechts in der Column List werden alle Spalten aus der Tabelle aufgelistet (Abbildung 5, Ziffer 1), mit denen Regeln gebildet werden können. Daneben findet man eine Auswahl an möglichen Funktionen (Abbildung 5, Ziffer 2), im Feld „Expression“ (Abbildung 5, Ziffer 3) werden die Regeln definiert.
Jede Regel wird in eine neue Zeile geschrieben. Eine Regel besteht aus einer Bedingung, auf die die Zeilen der Tabelle geprüft werden, und einem Ergebnis, das entweder „TRUE“ oder „FALSE“ lauten kann. Unter dem Eingabefeld wählt man nach Definition der Regeln aus, ob man Zeilen, auf die eine Regel mit dem Ergebnis „TRUE“ zutrifft, in die Ergebnistabelle aufnehmen oder sie ausschließen möchte.
Beginnt eine Zeile mit „//“, handelt es sich um einen Kommentar, der nicht als Regel interpretiert wird. Die Regeln werden von oben nach unten verarbeitet. Hat man also mehrere Regeln definiert und die erste Regel trifft zu, wird das Ergebnis nicht überschrieben, auch wenn eine darauffolgende Regel ebenfalls zutreffen sollte.
Für das Beispiel benötigen wir die Spalte „Page“. Per Doppelklick auf die Spalte in der Colum List wird sie ins Expression-Feld eingefügt, durch das Zeichen $ vor und nach dem Spaltennamen wird angegeben, dass es sich um eine Spalte handelt. Wir wollen in die Ergebnistabelle nur URLs aufnehmen, die „hundefutter“ oder „katzenfutter“ beinhalten. Dafür bildet man zum Beispiel eine Regel mit MATCHES in Kombination mit einer einfachen RegEx wie in Abbildung 6. Der Punkt steht in dem regulären Ausdruck für ein beliebiges Zeichen, das Sternchen steht für null oder mehrere Wiederholungen des vorangegangenen Zeichens.
Über „Include TRUE matches“ beschränkt man das Ergebnis auf die Zeilen, auf die die Regel zutrifft. Im Anschluss kann die Node ausgeführt werden. Das Ergebnis lässt sich dann per Rechtsklick auf die Node und Klick auf „Filtered“ prüfen.
Natürlich können die Regeln auch mehrere Bedingungen beinhalten, wie im Beispiel in Abbildung 8, wo mithilfe von „AND“ weitere Bedingungen zur Regel hinzugefügt wurden.
Übrigens gibt es noch eine ähnliche nützliche Rule-Node: den Rule-based Row Splitter. Anstatt die Zeilen zu filtern, werden sie in zwei separate Tabellen aufgespalten: eine Tabelle mit den Daten, auf die die definierten Kriterien zutreffen, und eine Tabelle mit dem Rest. Die Konfiguration funktioniert genau wie oben beschrieben. Der Unterschied ist nur, dass die Node zwei Ausgänge hat – und nicht nur einen.
Konfiguration der Rule Engine
Für dieses Beispiel sollen die URLs nicht gefiltert, sondern klassifiziert werden. Die Konfiguration des Rule-Engine-Knotens (Abbildung 10) funktioniert wie oben beschrieben, der Unterschied ist hierbei, dass ein Ergebniswert definiert wird, der dann in einer neuen Spalte ergänzt wird, wenn die Regel zutrifft. Das heißt, alle URLs mit dem Verzeichnis „/hunderassen/“ sollen als „Ratgeber Hunderassen“ klassifiziert werden etc. Mit „TRUE => Andere“ werden alle übrigen URLs, auf die die Regel nicht zutrifft, als „Andere“ klassifiziert (Abbildung 11).
Man hat dann die Möglichkeit, entweder eine neue Spalte hinzuzufügen und diese zu benennen oder eine der bestehenden Spalten durch die definierten Ergebniswerte zu ersetzen.
Auch hier könnte man die Bedingungen in einer Regel wieder beliebig kombinieren.
Ein weiterer Anwendungsfall ist das Clustern von Suchbegriffen. Diese könnte man beispielsweise nach Brand- und generischen Begriffen clustern, die Regeln hierfür könnten aussehen wie in Abbildung 13.
Fazit
Die Möglichkeiten zum Filtern, Clustern und Segmentieren sind genauso zahlreich wie die Bereiche und Anwendungsfälle, für die sich die Rule-Nodes eignen. Wie hilfreich KNIME bei der Analyse ist, wird allerdings erst deutlich, wenn die Rule-Nodes mit anderen Knoten kombiniert werden. Nach dem Clustern von Keywords oder dem Klassifizieren von URLs könnte man beispielsweise eine GroupBy-Node zur Gruppierung der Daten (vgl. Ausgabe 80) oder eine Joiner-Node (vgl. Ausgabe 81) anschließen, um das Ergebnis mit Daten aus einer anderen Tabelle zusammenzuführen.