Random Forest

Was ist Random Forest?

Random Forest beschreibt einen Algorithmus im Bereich des maschinellen Lernens bzw. der künstlichen Intelligenz, welcher für Klassifikations- oder Regressionsaufgaben angewendet werden kann. Bei der Klassifikation oder Klassifizierung geht es um die Einteilung bzw. Zuordnung zu einer bestimmten Klasse. Hingegen hat die Regression das Ziel, Werte einer Variable auf Basis ihrer Abhängigkeit zu anderen Variablen zu schätzen.

Der Begriff Random Forest wurde vom Statistiker Leo Breiman eingeführt und basiert auf der Anwendung von Entscheidungsbäumen. Durch die Erstellung vieler zufälliger Entscheidungsbäume entsteht ein „zufälliger Wald“ (engl. Random Forest) an Bäumen.

Wie funktioniert ein Random Forest?

Um einen Wald an Bäumen zu erstellen, müssen zuvor viele einzelne Entscheidungsbäume (engl. decision trees) generiert werden. Diese Erstellung erfolgt unkorreliert und nach dem Zufallsprinzip. Jeder Baum besteht aus mehreren Verzweigungen/Knoten, welche schlussendlich nach mehreren Ebenen in einem Endpunkt/Blatt/Klasse resultiert. Dabei ordnet ein Klassifikator das Datenobjekt einer Klasse zu, welche dann in der nächsten Verzweigung wieder klassifiziert wird, bis das Objekt an einem Endpunkt angelangt.

Um zu verhindern, dass Entscheidungsbäume zueinander korrelieren, wird das sogenannte Prinzip des Bagging (Kurzform von Bootstrap Aggregation) angewendet. Hierzu werden für die Erstellung der Entscheidungsbäume die Trainingsdaten mehrmals mit unterschiedlichen Aufteilungen herangezogen. Durch diese Varianz der jeweiligen Entscheidungsknoten soll eine Korrelation der Entscheidungsbäume zueinander ausgeschlossen werden.

Nach der Erstellung der definierten Anzahl an Entscheidungsbäumen funktioniert der Algorithmus auf Basis der Ensemble-Methode durch die Berücksichtigung mehrere Entscheidungsbäume für die Vorhersage. Diese Methode hat gegenüber der Anwendung eines einzelnen Entscheidungsbaumes den Vorteil, dass die Entscheidungen einer Vielzahl an Prädiktoren Ausreißer gegensteuern können und so die Verlässlichkeit des Ergebnisses erhöhen. Somit entspricht die Vorhersage eines Random Forest Regressor dem Durchschnitt der Vorhersagen der einzelnen Entscheidungsbäume.

Random Forest zählt grundsätzlich zur Kategorie des sogenannten Supervised Learning (überwachtes Lernen). Bei dieser Art des maschinellen Lernens sind die Trainingsdaten des Algorithmus gelabelt, das heißt, dass die Eingangsdaten bereits den korrekten Zieldaten zugeordnet sind. Darauf aufbauend soll das System lernen, neue Daten richtig vorherzusagen.

In welcher Software lässt sich ein Random Forest umsetzen?

Die Methode lässt sich unter anderem in Scikit-learn, R Programmiersprache, H2O oder Weka umsetzen.

  • Bei Scikit-learn handelt es sich um eine Python-Bibliothek, welche vor allem für Klassifikations- & Regressionsalgorithmen sowie Visualisierungen im Bereich des maschinellen Lernens Anwendung findet.
  • Die Programmiersprache R wird als interpretierte Sprache eingestuft, wurde für statische Berechnungen entwickelt und ist für statistische Berechnungen sowohl in der Wissenschaft als auch in der Wirtschaft sehr weit verbreitet. Der Name R lässt sich auf den Anfangsbuchstaben des Vornamens seiner Begründer Ross Ihaka und Robert Gentleman zurückführen sowie auf die Schlichtheit der Programmiersprache S, an welcher sich der Syntax von R stark anlehnt.
  • H2O ist eine Open-Source-Software des Unternehmens H2O.ai und findet vor allem bei Algorithmen im Bereich der Statistik und des maschinellen Lernens Anwendung. Die Software kann über eine API beispielsweise auch in Microsoft Excel betrieben werden. Während der Berechnung des Algorithmus werden approximative Ergebnisses dargestellt, sodass Parameter während des Berechnungsvorgangs noch abgeändert werden können. Die Visualisierung der Methode zählt allgemein zu einem Vorteil dieser.
  • Weka (Waikato Environment for Knowledge Analysis) wurde von der University of Waikato in Neuseeland entwickelt und bietet neben Lösungsansätze für Klassifikationen und in der Clusteranalyse auch Anwendungsgebiete in neuronalen Netzen, welche mit der Anwendung von Random Forest kombinierte werden können.

Reasoning System

Was ist ein Reasoning System?

Ein Reasoning System ist ein Software-System, mit dem Schlussfolgerungen von einer verfügbaren Wissensbasis generiert und logische Techniken wie Deduktion und Induktion verwendet werden. Reasoning Systeme spielen eine außerordentlich große Rolle bei der Implementierung von Künstlicher Intelligenz und bei wissensbasierten Systemen. Im Prinzip sind alle bestehenden Computersysteme solche Systeme, denn sie alle automatisieren gewisse Arten von Logik oder Entscheidungen.

Normalerweise wird dieser Begriff aber für Systeme gebraucht, bei denen eine komplexere Art von Argumentationssystemen verwendet wird. So werden etwa Systeme, die eine direkte Argumentation implementieren wie die Mehrwertsteuer oder der Kundenrabatt nicht als solche Systeme im engeren Sinne betrachtet, sondern vielmehr Systeme, die logische Inferenzen über medizinische Diagnosen oder mathematische Theoreme machen. Es gibt zwei Modi, in denen Argumentationssysteme operieren: im interaktiven Modus und im Stapelverarbeitungsmodus. Beide Arten können den Begründungsprozess mit Benutzerführung durchführen und damit die beste Antwort ermitteln.

Typen von Reasoning Systemen

Es gibt unterschiedliche Reasoning Systeme, die sich in verschiedenen Bereichen etabliert haben:

Klinisches beziehungsweise professionelles Reasoning

Bei klinischem Reasoning können die folgenden Bereiche unterschieden werden:

  • Scientific Reasoning (SR): fachliches, professionsspezifisches Hintergrundwissen
  • Interaktives Reasoning (IR): befindet sich in Interaktion mit den anderen Individuen und das Denken findet auf der Beziehungsebene statt
  • Konditionales Reasoning (KR): dieses betrifft Zukunftsvorstellungen und auch Konditionen, unter denen mögliche Zukünfte eintreten könnten
  • Narratives Reasoning (NR): hier findet das Denken in Geschichten und bezogen auf Personen und Einrichtungen statt
  • Pragmatisches Reasoning (PR): die Fähigkeit, nach pragmatischen Gesichtspunkten zu handeln
  • Ethisches Reasoning (ER): durch Einstellungen, Haltungen oder Werte bestimmtes Denken

Case-based Reasoning System

Ein Case-based Reasoning ist ein fallbasiertes Schließen mit einer Fallbasis (case memory) und einer Nachahmung menschlichen Verhaltens, wobei die Lösung eines gegebenen Problemes sich an der Lösung eines ähnlichen und früher bereits gelösten Problemes orientiert. Das fallbasierte Schließen ist ein Ansatz, um menschliches Denken zu modellieren. Mit diesem Ansatz können intelligente Systeme gebaut werden. Es werden dazu gemachte Erfahrungen (alle Fälle) gespeichert. Diese Fälle werden zum Lösen neuer Aufgaben eingesetzt. Zu den Aufgabenklassen von CBR-Systemen gehören die analytischen Aufgaben der Klassifikation, Diagnose, Bewertung, Entscheidungsunterstützung und Vorhersage, sowie die synthetischen Aufgaben der Konfiguration, des Designs und der Planung.

Systeme maschinellen Lernens

Maschinelles Lernen beschäftigt sich mit den rechnerbasierten Methoden zum Erwerb von neuem Wissen und neuen Fähigkeiten sowie neuartigen Wegen der Organisation von bestehendem Wissen. Sowohl symbolorientierte wie auch konnektionistische Verfahren werden unter dem Begriff des maschinellen Lernens verstanden. Die Aufgabe von lernenden Systemen besteht darin, dass das System die gestellten Aufgaben (globale oder konkrete Zielvorgaben) schrittweise nach der Wiederholung besser ausführen kann als vorher. Die Verbesserung der Performanz des Systems kann dadurch erreicht werden, indem neue oder modifizierte Methoden und Wissen angewandt werden. Die Aufgaben können schließlich mit verbesserter Qualität ausgeführt werden (schneller, genauer, sicherer und robuster).

Regelbasiertes System

Was ist ein Regelbasiertes System?

Ein Regelbasiertes System ist ein nützliches wissensbasiertes System, das regelbasiertes Schließen erlaubt. Solche Regelbasierten Systeme bestehen aus einer Datenbank mit Fakten (Faktenbasis), einer Menge von Regeln (Regelbasis) und aus einem Kontrollsystem, das mit einem Regelinterpreter ausgestattet ist (Inferenzmaschine oder auch Business-Rule-Engine).

Die Regeln sind nach dem If-then-else-Prinzip aufgebaut. Der WENN-Teil wird als Prämisse bezeichnet und der DANN-Teil ist die Konklusion. Das Kontrollsystem soll eine Identifikation von geeigneten Regeln vornehmen und ausgewählte Regeln anwenden und die Datenbank aktualisieren. Die Auswahlmechanismen sind daten- oder zielgetrieben.

Regelbasierte Systeme bilden die Grundlage von Expertensystemen. Die Verwaltung von Regeln erfolgt in einem Business-Rule-Repository, das Teil eines Business-Rule-Management-Systems ist.

Welche Anwendungen gibt es für Regelbasierte Systeme?

Es kommt zum zunehmenden Einsatz von Regelbasierten Systemen in der Produktionsplanung und in der Produktionssteuerung. Gerade in Industriezweigen mit variantenreichen Gebrauchs- und Investitionsgütern werden diese Systeme genutzt. So gibt es sie in der Möbelindustrie, im Maschinenbau, in der Automobilindustrie und in der Elektroindustrie.

Produktkonfiguratoren wissen, welche Abhängigkeiten es gibt und informieren darüber. So gibt es gewisse Merkmalskombinationen. Ein Kunde kann ein Cabrio bestellen, aber dieses kann kein „Schiebedach“ besitzen. Bei der Bestellung einer vollautomatischen „Klimaanlage“ benötigt das Fahrzeug auch gleichzeitig eine stärkere „Batterie“.

Es werden Regelbasierte Systeme auch für die Verteilung von weltweiten Fahrzeugbestellungen genutzt. So gibt es Regeln für Fahrzeug- und Aggregatwerke von Automobilherstellern. Das Regelwerk eines Automobilherstellers verfügt über tausende Produkt- und Produktionsregeln.

Wie sind Regelbasierte Systeme aufgebaut?

Regelbasierte Systeme sind die am weitesten verbreitetste Art von wissensbasierten Systemen (Expertensystemen). Die Bestandteile sind eine Regelbasis (Menge von Regeln) und ein Inferenzmechanismus (Inferenzmaschine). Der Inferenzmechanismus legt fest, welche der Regeln anzuwenden sind und es gibt verschiedene mögliche Strategien, die angewendet werden können. So gibt es entweder die Vorwärtsverkettung oder aber die Rückwärtsverkettung von entsprechenden Regeln.

Wie lauten die Regeln in einem Regelbasierten System?

Die Regeln sind ganz einfach formalisierte Konditionalsätze. Sie besitzen die Form:

Wenn (if) A, dann (then) B

Daraus ergibt sich die Bedeutung:

Wenn A wahr (erfüllt, bewiesen) ist,
dann schließe, dass auch B wahr ist.

A und B sind dabei Aussagen. Die „Wenn“-Teil-Formel einer Regel wird als Prämisse oder auch als Antezedenz der Regel bezeichnet. Die „Dann“-Teil-Formel wird Konklusion oder auch Konsequenz genannt. Sobald die Prämisse einer Regel erfüllt ist, wird diese Regel angewendet.

Sollte diese Regel immer gelten, dann spricht man von einer deterministischen Regel. Sollte die Konsequenz einer Regel mit einer entsprechenden Aktion verbunden sein, dann erhält man eine Produktionsregel. Diese Regeln werden gerne in entsprechenden Produktionssystemen zu einer Steuerung eingesetzt.

Die Regeln sind ein guter Kompromiss zwischen einer verständlichen Wissensdarstellung und formalen Ansprüchen. In der Kognitionswissenschaft werden Regeln als Bestandteile von informationsverarbeitenden Prozessen angesehen.

Recurrent Neural Network (RNN)

Was ist ein Recurrent Neural Network?

Neuronale Netze können rückgekoppelt oder rekurrent sein. Diese zeichnen sich durch Verbindungen zwischen Neuronen und Schichten aus. Ob diese Schichten auf einer vorherigen oder derselben Schicht wie das jeweilige Neuron stehen, ist hierbei irrelevant, beides ist möglich. Der menschliche Neocortex beinhaltet beispielsweise solche Verschaltungen von neuronalen Netzen. Bei neuronalen Netzen künstliche Natur wird die bereits erwähnte rekurrente Verschaltung dazu genutzt, um Informationen, welche temporär codiert sind, bei verschiedenen Daten sowie Datensätzen auszulesen.

Anwendungsgebiete

Wenn es um Problemstellungen bei der Verarbeitung von unterschiedlichen Sequenzen, Abläufen und Vorgängen geht, werden rekurrente Neuralnetze benutzt, um diese zu lösen. In der täglichen Praxis finden diese bei der Sprach- oder Handschrifterkennung sowie der Maschinenübersetzung statt. Es gibt viele Programmbibliotheken, wo neuronale Netze integriert wurden.

Unterteilung Neuronaler Netze

  • Direkte Rückkopplung – Direct feedback: = Aus dem eigenen Ausgang wird ein zusätzlicher Eingang.
  • Indirekte Rückkopplung – Indirect feedback: Stellt eine Verbindung zwischen einen Neuronenausgang mit einem aus der vorherigen Schicht befindlichen Neuron her.
  • Seitliche Rückkopplung – Lateral feedback: Stellt eine neue Verbindung zwischen dem Ausgang von einem Neuron mit einem weiteren Neuron der gleichen Schicht her.
  • Vollständige Verbindung: Hier hat jeder Ausgang von Neuronen eine eigenständige Verbindung zu jedem weiteren Neuron.

Neuronalnetze trainieren

Das Training durch unterschiedliche Wege und Methoden des sogenannten maschinellen Lernens ist hier eingeschränkt möglich. Neuronale Netze sind also so nur bedingt schulungs- und lernfähig. Aus diesem Grund wird ein anderer Ansatz verwendet. Hierbei wird nicht das neuronale Netz an sich, sondern das Auslesen, sprich die Informationsausgabe trainiert.

Das neuronale Netz stellt hier somit ein Speicher oder Behälter dar, welches als großes Reservoir angesehen wird und den Ausgangspunkt für das Training darstellt. Durch die Methode „Backpropagation Through Time“ wird dieses Netz in ein sogenanntes Feedforward Netz innerhalb der Trainingseinheiten umgewandelt. Dabei spielt auch die Sequenzlänge wiederum eine größere Rolle.

Die Zukunft von Recurrent Neural Network

Die Rückkopplungen zwischen Neuronen gezielt auszunutzen, um bei zukünftigen Entscheidungen auf bereits Erlerntes zurückzugreifen, findet schon seit Jahrtausenden statt, seit es die Menschheit gibt. Aus Erfahrungen zu profitieren, ist das Normalste, was es gibt. Auch die Tierwelt profitiert von dieser Art der Konditionierung, schon bevor es die Menschheit gab.

Diesen Umstand haben sich Forscher, Wissenschaftler und IT-Experten zunutze gemacht, um maschinelles Lernen zu erschaffen und dieses stets weiter auszubauen. Recurrent Neural Network bildet einen der wichtigsten Bestandteile für viele Technologien und Erfindungen, welche die Menschen im heutigen Alltag nutzen und diese als für selbstverständlich sehen. Doch die Vorgänge dahinter sind weitaus komplexer.

Ständige Verbesserungen und Updates, beispielsweise auch die Kapazitäten-Erhöhung der Speicherorte sind wichtig, damit immer weitere Erfahrungen, Zusammenhänge und Daten aufgenommen sowie bei Bedarf abgerufen werden können. Um die Zukunft von Recurrent Neural Network muss man sich wahrlich keine Sorgen machen. Die Globalisierung sowie der technische Fortschritt erlauben einen stetigen Ausbau von Recurrent Neural Network weltweit.

Ruby

Ruby (engl. Rubin) ist eine objektorientierte Programmiersprache, die 1995 von Yukihiro “Matz” Matsumoto entwickelt wurde. Seit 2012 ist die Ruby-Norm unter der Norm ISO/IEC 30170 spezifiziert.
Mit dem Namen sollte die Sprache ein Juwel unter den Programmiersprachen sein.

Was ist Ruby?

Die Programmiersprache wurde 1995 veröffentlicht und von Yukihiro Matsumoto entwickelt. Der Entwickler wollte eine neue Sprache schaffen, die eine Ansammlung der besten Elemente enthält, die andere von ihm geschätzte Programmiersprachen besitzen. Dazu gehörten Perl, Ada, Smalltalk, Lisp und Eiffel.
Im nächsten Schritt sollte die Sprache stärker objektorientiert sein als Python und gleichzeitig flexibler als Perl.

Der Erfolg der neuen Programmiersprache ließ, zumindest in Japan, nicht lange auf sich warten. Kurze Zeit nach der Veröffentlichung kam sie schnell in vielen Bereichen zum Einsatz.
Die Aufmerksamkeit des nicht-asiatischen Raums erlangte sie erst 2006 im Zuge einiger Veröffentlichungen, die sich mit der neuen Programmiersprache auseinandersetzten.
Die Sprache wurde hauptsächlich wegen ihrer relativ einfachen Syntax und ihrer Verwendbarkeit auf vielen Systeme wie Linux-Distributionen, UNIX-Systemen, MacOS-Geräten, Windows und OS/2 beliebt.

Damit wurde auch das Ziel erreicht, Programmierern das Lesen des Quellcodes sehr einfach zu machen.
Aufgrund der hohen Flexibilität und der einfachen Syntax kam die Programmiersprache mit seinem Framework „Ruby on rails“ größtenteils als Skriptsprache bei Server-Anwendungen zum Einsatz und ersetzte gleichzeitig viele Bash-Scripte in Projekten.

Ein Beispiel, in dem deutlich wird, warum die Programmiersprache objektorientierter ist als Python, ist der Umgang mit Zahlen und mathematischen Operatoren.
In Ruby ist alles ein Objekt mit eigenen Instanzvariablen und Methoden. Im Gegensatz zu anderen Programmiersprachen gilt das auch für Zahlen.
So ist es möglich „x = 2.plus 8„ zu schreiben und damit die Methode einer Zahl zu nutzen.

Das macht das Programmieren besonders bequem. Gleichzeitig sind die erstellen Programme durch die Objektorientierung einfacher zu pflegen und zu strukturieren. Bestandteile des Codes lassen sich komfortabel austauschen oder verändern.