Shogun (Toolbox)
# Shogun (Toolbox)

Shogun ist eine Open-Source-Toolbox aus dem Bereich des Maschinellen Lernens. Mit ihr lassen sich Regressions- und Klassifikationsprobleme lösen sowie unter anderem Hidden Markov Models lernen.

## Anwendungsschwerpunkt

Der Fokus dieser Toolbox liegt auf den sogenannten Kern-Methoden (siehe Kernel (Maschinelles Lernen)), mit dem Anwendungsschwerpunkt Bioinformatik. Dazu wurde eine Reihe von Kernen auf Sequenzen (sogenannte String-Kerne) implementiert und besonders auf Geschwindigkeit zur Anwendung auf großen Datenmengen getrimmt. So lassen sich mit der Toolbox Probleme mit String-Kernen auf sehr großen Datenmengen lösen (bis zu 10 Millionen).

Insbesondere bietet Shogun generische Schnittstellen zu vielen verschiedenen Implementierungen von Support Vector Machines (SVMs), wie z. B. SVMlight und libSVM. Dies ermöglicht es allen SVMs, dieselben Kern-Implementierungen zu verwenden, und erleichtert das Hinzufügen neuer kernbasierter Lernmethoden. Neben den folgenden Standard-Kernen (linearer, polynomieller, Gauss- und Sigmoid-Kern (siehe Kernel (Maschinelles Lernen))) sind in Shogun effiziente Implementierungen für kürzlich publizierte String-Kerne vorhanden, wie z. B. der Locality Improved, Fischer, TOP, Spektrum, Weighted Degree Kernel (with shifts). Für die letzteren wurden die effizienten LINADD-Optimierungen implementiert.

## Besonderheiten

Shogun ermöglicht es außerdem, mit eigenen vorberechneten Kernen zu arbeiten. Eines der Hauptmerkmale dieser Toolbox ist der sogenannte kombinierbare Kern (engl. combined Kernel), welcher sich aus einer gewichteten Linearkombination von Unter-Kernen zusammensetzt: $k(x,x')=\sum _{i=1}^{m}\beta _{i}k_{i}(x,x')$. Dabei müssen die Unter-Kerne nicht notwendigerweise auf demselben Eingaberaum arbeiten, sondern auf verschiedenen Domänen. Shogun kann eine optimale Unter-Kern-Gewichtung, d. h. $\beta _{i},\;i=1\dots m$, durch den Multiple Kernel Learning Algorithmus lernen. Neben den SVM 2-Klassen Klassifikations und Regressionsproblemen ist in Shogun auch eine Reihe von linearen Methoden implementiert. Beispiele hierfür sind die Diskriminanzanalyse (engl. Linear Discriminant Analysis (LDA)), Linear Programming Machine (LPM), (Kernel) Perceptronen und Hidden Markov Modelle. Shogun kann ein reiches Spektrum an Daten verarbeiten. Nicht nur sind voll besetzte Eingabe-Matrizen, sondern auch dünn besetzte, sowie Strings, die jeweils vom Typ Integer/Gleitkomma (einfache oder doppelte Genauigkeit) sein können, möglich. Weiterhin können Ketten von Präprozessoren an die Eingaben angehängt werden, so dass die Eingaben on-the-fly von den Lernalgorithmen weiterverarbeit werden können.

## Schnittstellen

Shogun ist in C++ implementiert und bietet Schnittstellen zu Matlab, R, Octave und Python. Diese Schnittstellen erlauben interaktives Experimentieren mit den Lernalgorithmen (siehe Abbildung 1 für die Python-Schnittstelle), aber auch Batch-Skript-Verarbeitung auf Rechenclustern.

