Geschriebene Artikel über Big Data Analytics

Wie lernen Maschinen?

Im dritten Teil meiner Reihe Wie lernen Maschinen? wollen wir die bisher kennengelernten Methoden anhand eines der bekanntesten Verfahren des Maschinellen Lernens – der Linearen Regression – einmal gegenüberstellen. Die Lineare Regression dient uns hier als Prototyp eines Verfahrens aus dem Gebiet der Regression, in weiteren Artikeln werden die Logistische Regression als Prototyp eines Verfahrens aus dem Gebiet der Klassifikation und eine Collaborative-Filtering- bzw. Matrix-Faktorisierungs-Methode als Prototyp eines Recommender-Systems behandelt.

Read more

Man redet gerne über Daten, genutzt werden sie nicht

Der Big Data Hype ist vorbei und auf dem Anstieg zum „ Plateau of Productivity“. Doch bereits in dieser Phase klafft die Einschätzung von Analysten mit der Verbreitung von Big Data Predictive Analytics/Data Mining noch weit von der Realität in Deutschland auseinander. Dies belegt u.a. eine Studie der T-Systems Multimedia Solutions, zu welcher in der FAZ* der Artikel Man redet gerne über Daten, genutzt werden sie nicht, erschienen ist. Mich überrascht diese Studie nicht,  sondern bestätigt meine langjährige Markterfahrung.

Die Gründe sind vielfältig: keine Zeit, keine Priorität, keine Kompetenz, kein Data Scientist, keine Zuständigkeit, Software zu komplex – Daten und Use-Cases sind aber vorhanden.

Im folgenden Artikel wird die Datenanalyse- und Data-Mining Software der Synop Systems vorgestellt, welche „out-of-the-box“ alle Funktionen bereitstellt, um Daten zu verknüpfen, zu strukturieren, zu verstehen, Zusammenhänge zu entdecken, Muster in Daten zu lernen und Prognose-Modelle zu entwickeln.

Anforderung an „Advanced-Data-Analytics“-Software

Um Advanced-Data-Analytics-Software zu einer hohen Verbreitung zu bringen, sind folgende Aspekte zu beachten:

  1. Einfachheit in der Nutzung der Software
  2. Schnelligkeit in der Bearbeitung von Daten
  3. Analyse von großen Datenmengen
  4. Große Auswahl an vorgefertigten Analyse-Methoden für unterschiedliche Fragestellungen
  5. Nutzung (fast) ohne IT-Projekt
  6. Offene Architektur für Data-Automation und Integration in operative Prozesse

Synop Analyzer – Pionier der In-Memory Analyse

Um diese Anforderungen zu erfüllen, entstand der Synop Analyzer, welcher seit 2013 von der Synop Systems in den Markt eingeführt wird. Im Einsatz ist die Software bei einem DAX-Konzern bereits seit 2010 und zählt somit zum Pionier einer In-Memory-basierenden Data-Mining Software in Deutschland. Synop Analyzer hat besondere Funktionen für technische Daten. Anwender der Software sind aber in vielen Branchen zu finden: Automotive, Elektronik, Maschinenbau, Payment Service Provider, Handel, Versandhandel, Marktforschung.

Die wesentlichen Kernfunktionen des  Synop Analyzer sind:

a. Eigene In-Memory-Datenhaltung:

Optimiert für große Datenmengen und analytische Fragestellungen. Ablauffähig auf jedem Standard-Rechner können Dank der spaltenbasierenden Datenhaltung und der Komprimierung große Datenmengen sehr schnell analysiert werden. Das Einlesen der Daten erfolgt direkt aus Datenbanktabellen der Quellsysteme oder per Excel, CSV, Json oder XML. Unterschiedliche Daten können verknüpf und synchronisiert werden. Hohe Investitionen für Big-Data-Datenbanken entfallen somit. Eine Suche von Mustern von diagnostic error codes (dtc), welche mind. 300 Mal (Muster) innerhalb 100 Mio. Datenzeilen vorkommen, dauert auf einem I5-Proz. ca. 1200 Sek., inkl. Ausgabe der Liste der Muster. Ein Prognosemodel mittels Naive-Bayes für das Produkt „Kreditkarte“ auf 800 Tsd. Datensätzen wird in ca. 3 Sek. berechnet.

b. Vielzahl an Analyse-Methoden

Um eine hohe Anzahl an Fragestellungen zu beantworten, hat der Synop Analyzer eine Vielzahl an vorkonfigurierten Analyse- und Data-Mining-Verfahren (siehe Grafik) implementiert. Daten zu verstehen wird durch Datenvisualisierung stark vereinfacht. Die multivariate Analyse ist quasi interaktives Data-Mining, welches auch von Fachanwendern schnell genutzt wird. Ad hoc Fragen werden unmittelbar beantwortet – es entstehen aber auch neue Fragen dank der interaktiven Visualisierungen. Data-Mining-Modelle errechnen und deren Modellgüte durch eine Testgruppe zu validieren ist in wenigen Minuten möglich. Dank der Performance der In-Memory-Analyse können lange Zeitreihen und alle sinnvollen Datenmerkmale in die Berechnungen einfließen. Dadurch werden mehr Einflussgrößen erkannt und bessere Modelle errechnet. Mustererkennung ist kein Hokuspokus, sondern Dank der exzellenten Trennschärfe werden nachvollziehbare, signifikante Muster gefunden. Dateninkonsistenzen werden quasi per Knopfdruck identifiziert.

synop-systems-module

c. Interaktives User Interface

Sämtliche Analyse-Module sind interaktiv und ohne Programmierung zu nutzen. Direkt nach dem Einlesen werden Grafiken automatisiert, ohne Datenmodellierung, erstellt.  Schulung ist kaum oder minimal notwendig und Anwender können erstmals fundierte statistische Analysen und Data-Mining in wenigen Schritten umsetzen. Data-Miner und Data Scientisten ersparen sich viel Zeit und können sich mehr auf die Interpretation und Ableitung von Handlungsmaßnahmen fokussieren.

d. Einfacher Einstieg – modular und mitwachsend

Der Synop Analyzer ist in unterschiedlichen Versionen verfügbar:

– Desktop-Version: in dieser Version sind alle Kernfunktionen in einer Installation kombiniert. In wenigen Minuten mit den Standard-Betriebssystemen MS-Windows, Apple Mac, Linux installiert. Außer Java-Runtime ist keine weitere Software notwendig. Somit fast, je nach Rechte am PC, ohne IT-Abt. installierbar. Ideal zum Einstieg und Testen, für Data Labs, Abteilungen und für kleine Unternehmen.

– Client/Server-Version: In dieser Version befinden die Analyse-Engines und die Datenhaltung auf dem Server. Das User-Interface ist auf dem Rechner des Anwenders installiert. Eine Cloud-Version ist demnächst verfügbar. Für größere Teams von Analysten mit definierten Zielen.

– Sandbox-Version: entspricht der C/S-Server Version, doch das User-Interface wird spezifisch auf einen Anwenderkreis oder einen Anwendungsfall bereitgestellt. Ein typischer Anwendungsfall ist, dass gewisse Fachbereiche oder Data Science-Teams eine Daten-Sandbox erhalten. In dieser Sandbox werden frei von klassischen BI-Systemen, Ad-hoc Fragen beantwortet und proaktive Analysen erstellt. Die Daten werden per In-Memory-Instanzen bereitgestellt.

Fazit:  Mit dem Synop Analyzer erhalten Unternehmen die Möglichkeit Daten sofort zu analysieren. Aus vorhandenen Daten wird neues Wissen mit bestehenden Ressourcen gewonnen! Der Aufwand für die Einführung ist minimal. Der Preis für die Software liegt ja nach Ausstattung zw. 2.500 Euro und 9.500 Euro. Welche Ausrede soll es jetzt noch geben?

Nur wer früh beginnt, lernt die Hürden und den Nutzen von Datenanalyse und Data-Mining kennen. Zu Beginn wird der Reifegrad klein sein: Datenqualität ist mäßig, Datenzugriffe sind schwierig. Wie in anderen Disziplinen gilt auch hier: Übung macht den Meister und ein Meister ist noch nie von Himmel gefallen.

Daten für eine schlanke, globale F&E bereitstellen

Globale F&E-Prozesse sind oft komplex und verschwendend. Gerade deshalb kann sich ein Unternehmen einen Wettbewerbsvorteil verschaffen, wenn es die Daten über den verschwendungsfreien Leistungsanteil seiner globalen F&E-Prozesse bereitstellt, das volle Potential ausschöpft und so die Spielregeln seiner Branche verändert. Das erfordert eine standardisierte F&E-Datenbasis, geeignete Methoden und passende Tools.

 

Die F&E-Prozessleistung besteht aus

  • F&E-Nutzleistung
  • F&E-Stützleistung
  • F&E-Blindleistung
  • F&E-Fehlleistung

nutzleistung

Die F&E-Nutzleistung ist die verschwendungsfreie Leistung für den Kunden. Beispiele sind Konstruktion und Berechnung, ohne jegliche Rekursionen. Die F&E-Nutzleistung beträgt geschätzt durchschnittlich 5% bis 25% der gesamten F&E-Leistung.

Die F&E-Stützleistung ist erforderlich, jedoch keine Kundenleistung und somit Verschwendung. Beispiele sind Wissensgenerierung, Musterbau, Verifikation, Validierung, Transporte, Kommunikation und anteilige Strukturen.

Die F&E-Blindleistung ist nicht erforderlich, somit Verschwendung, schadet jedoch nicht unmittelbar. Beispiele sind Task Forces, Nacharbeit, Warten und Lagerung.

Die F&E-Fehlleistung ist nicht erforderlich, somit Verschwendung und schadet unmittelbar. Beispiele sind Doppelarbeit, Rekursionen, Gewährleistung und Garantie.

Ist die Verteilung der F&E-Prozessleistung global transparent, kann durch Hebelwirkung ein erhebliches F&E-Effizienzpotential ausgeschöpft werden. Wird beispielsweise der F&E-Verschwendungsanteil von 75% auf 60% verringert (-20%), dann springt der Anteil an F&E-Nutzleistung von 25% auf 40% (+60%). Dieser F&E-Leistungssprung verändert Branchenspielregeln, wenn er für mehr Wachstum und Deckungsbeitrag eingesetzt wird.

Die Daten der F&E-Nutzleistung werden in drei Schritten top-down bereitgestellt. Jeder Schritt hat sofort einen greifbaren Nutzen:

  • Valide Projektklassen werden aufgedeckt und standardisiert. Das ermöglicht die direkte Messung vergleichbaren F&E-Aufwands.
  • Für die Projektklassen wird der F&E-Standardaufwand empirisch definiert. Das macht die Entwicklungsproduktivität messbar und einfach planbar.
  • Die Grundursachenanalyse des Auftragsaufwands deckt die F&E-Nutzleistung der Arbeitspakete auf. Daraus wird das Potential abgeleitet. Verschwendungsfreie Arbeitspakete machen den Plan schlank und die Entwicklungsproduktivität steuerbar. So wird das Potential ausgeschöpft.

IT und F&E können so zusammen Daten für eine schlanke, globale F&E bereitstellen.

 

Data Science vs Data Engineering

Das Berufsbild des Data Scientsts ist gerade erst in Deutschland angekommen, da kommen schon wieder neue Jobbezeichnungen auf uns zu. “Ist das wirklich notwendig?”, wird sich so mancher fragen. Aber die Antwort lautet ganz klar: ja!

Welcher Data Scientist kennt das nicht: ein Recruiter ruft an, spricht von einer tollen neuen Herausforderung für einen Data Scientist wie man es sich ja offensichtlich auf seinem LinkedIn-Profil für sich beansprucht, doch bei der Besprechung der Vakanz stellt sich schnell heraus, dass man über fast keine der geforderten Skills verfügt. Dieser Mismatch liegt vor allem daran, dass unter den Job des Data Scientist alle möglichen Tätigkeitsprofile, Methoden- und Tool-Wissen zusammengefasst werden, die ein einzelner Mensch kaum in seinem Leben lernen kann.

Viele offene Jobs, die unter der Bezeichnung Data Science besetzt werden sollen, beschreiben eher das Berufsbild des Data Engineers.


english-flagRead this article in English:
“Data Scientist vs Data Engineer – What is the Difference?”


Was macht ein Data Engineer?

Im Data Engineering geht es vor allem darum, Daten zu sammeln bzw. zu generieren, zu speichern, historisieren, aufzubereiten, anzureichern und nachfolgenden Instanzen zur Verfügung zu stellen. Ein Data Engineer, je nach Rang oft auch als Big Data Engineer oder Big Data Architect bezeichnet, modelliert skalierbare Datenbank- und Datenfluss-Architekturen, entwickelt und verbessert die IT-Infrastruktur hardware- und softwareseitig, befasst sich dabei auch mit Themen wie IT-Security, Datensicherheit und Datenschutz. Ein Data Engineer ist je nach Bedarf teilweise Administrator der IT-Systeme und auch ein Software Entwickler, denn er erweitert die Software-Landschaft bei Bedarf um eigene Komponenten. Neben den Aufgaben im Bereich ETL / Data Warehousing, führt er auch Analysen durch, zum Beispiel solche, um die Datenqualität oder Nutzerzugriffe zu untersuchen.

Ein Data Engineer arbeitet vor allem mit Datenbanken und Data Warehousing Tools.

Ein Data Engineer ist tendenziell ein ausgebildeter Ingenieur/Informatiker und eher weit vom eigentlichen Kerngeschäft des Unternehmens entfernt. Die Karrierestufen des Data Engineers sind in der Regel:

  1. (Big) Data Architect
  2. BI Architect
  3. Senior Data Engineer
  4. Data Engineer

Was macht ein Data Scientist?

Auch wenn es viele Überschneidungspunkte mit dem Tätigkeitsfeld des Data Engineers geben mag, so lässt sich der Data Scientist dadurch abgrenzen, dass er seine Arbeitszeit möglichst dazu nutzt, die zur Verfügung stehenden Daten explorativ und gezielt zu analysieren, die Analyseergebnisse zu visualisieren und in einen roten Faden einzuspannen (Storytelling). Anders als der Data Engineer, bekommt ein Data Scientist ein Rechenzentrum nur selten zu Gesicht, denn er zapft Daten über Schnittstellen an, die ihm der Data Engineer bereitstellt.

Ein Data Scientist befasst sich mit mathematischen Modellen, arbeitet vornehmlich mit statistischen Verfahren und wendet sie auf die Daten an, um Wissen zu generieren. Gängige Methoden des Data Mining, Machine Learning und Predictive Modelling sollten einem Data Scientist bekannt sein, wobei natürlich jeder ganz individuell Schwerpunkte setzt. Data Scientists arbeiten grundsätzlich nahe am Fachbereich und benötigen entsprechendes Fachbereichswissen. Data Scientists arbeiten mit proprietären Tools (z. B. von IBM, SAS oder QlikTech) und programmieren Analysen auch selbst, beispielsweise in Scala, Java, Python, Julia oder R.

Data Scientists können vielfältige akademische Hintergründe haben, einige sind Informatiker oder Ingenieure für Elektrotechnik, andere sind Physiker oder Mathematiker, nicht wenige auch Wirtschaftswissenschaftler.

  1. Chief Data Scientist
  2. Senior Data Scientist
  3. Data Scientist
  4. Data Analyst oder Junior Data Scientist

Data Scientist vs Data Analyst

Oft werde ich gefragt, wo eigentlich der Unterschied zwischen einem Data Scientist und einem Data Analyst läge bzw. ob es dafür überhaupt ein Unterscheidungskriterium gäbe:

Meiner Erfahrung nach, steht die Bezeichnung Data Scientist für die neuen Herausforderungen für den klassischen Begriff des Data Analysten. Ein Data Analyst betreibt Datenanalysen wie ein Data Scientist, komplexere Themen, wie Predictive Analytics und Machine Learning bzw. künstliche Intelligenz, sind aber eher was für den Data Scientist. Ein Data Scientist ist sozusagen ein Data Analyst++.

Und ein Business Analyst?

Business Analysten können (müssen aber nicht) auch Data Analysten sein. In jedem Fall haben sie einen sehr starkem Bezug zum Fachbereich bzw. zum Kerngeschäft des Unternehmens. Im Business Analytics geht es um die Analyse von Geschäftsmodellen und Geschäftserfolgen. Gerade die Analyse von Geschäftserfolgen geschieht in der Regel IT-gestützt und da setzen viele Business Analysten an. Dashboards, KPIs und SQL sind das Handwerkszeug eines guten Business Analysten.

 

Interview – Big Data in der Industrie

Thomas Schott, CIO der Rehau GruppeThomas Schott ist seit den 01. Oktober 2011 als CIO für die REHAU Gruppe tätig. Kompetenz und Innovationsfreude haben REHAU zum führenden System- und Service-Anbieter polymerbasierter Lösungen in den Bereichen Bau, Automotive und Industrie gemacht. Höchste Professionalität von der Materialentwicklung bis zur Ausführung sowie die Leidenschaft für das faszinierende unbegrenzte Nutzenpotenzial polymerer Werkstoffe sind für REHAU Grundvoraussetzung, um als führende Premiummarke weltweit erfolgreich zu sein.
In 2008 wurde Herr Schott mit dem erstmals verliehenen „Green CIO Award“ ausgezeichnet. 2010 wurde er außerdem bei der Wahl zum „CIO des Jahres“ in der Kategorie „Global Exchange Award“ mit dem 3. Platz ausgezeichnet und landete in 2012 in der Kategorie Großunternehmen wieder unter den Top 6.

Data Science Blog: Herr Schott, welcher Weg hat Sie an die Spitze der IT bei REHAU geführt?

Ich hatte ursprünglich Elektrotechnik mit dem Schwerpunkt Datenverarbeitung an der TU München studiert und startete meine Karriere bei REHAU bereits im Jahr 1990. Schnell war ich in leitender Funktion für verschiedene IT-Bereiche zuständig und habe die Standardisierung, Konsolidierung und durchgängige Virtualisierung der IT-Systemlandschaft maßgeblich vorangetrieben. Die IT- und Collaboration-Systeme für weltweit mehr als 170 Niederlassungen der REHAU Gruppe laufen nun in einer konsolidierten Private Cloud, ein sehr wichtiges Ziel für das Unternehmen um schnell und flexibel agieren zu können.

Data Science Blog: Big Data und Industrie 4.0 gelten derzeit als zwei der größten Technologie-Trends, dabei scheint jede Branche diesen Begriff für sich selbst zu interpretieren. Was bedeutet Big Data für Sie? Wie sieht Big Data aus der Perspektive der verarbeiten Industrie aus?

An einer allumfassenden Definition mangelt es noch, unsere Bestrebungen zur Industrie 4.0 liegen unter anderem in den Themengebieten Predictive Maintenance, Qualitätsdatenmanagement, mobile Apps bis hin zur Lieferkette (Kunden und Lieferanten). Big Data ist dabei ein wichtiger Treiber für Industrie 4.0 und auch ein eigenes Thema, welches auch außerhalb der Produktion eine Rolle spielt.
Für die produzierende Industrie erlangt Big Data eine immer größere Bedeutung, denn es fallen immer mehr Produktionsdaten und Daten aus der Qualitätssicherung an. Wir sammeln unternehmensintern bereits Daten in solcher Vielfalt und Masse, Big Data ist bereits Realität, und das obwohl wir externe Daten noch gar nicht thematisiert haben.

Data Science Blog: Der Trend ist also seinem Ende noch nicht nahe?

Nein, denn abgesehen von Unternehmen, deren Kerngeschäft Industrie 4.0 Lösungen selbst sind, steht die traditionelle Industrie und unsere gesamte Branche in Sachen Produktionsdatenanalyse und Big Data Analytics eher noch am Anfang.

Data Science Blog: Sie haben die unternehmensweite Cloud bei REHAU bereits erfolgreich umgesetzt, führt an der Digitalisierung kein Weg um Cloud Computing herum?

Wir haben seit zehn Jahren den Ansatz einer Private Cloud konsequent verfolgt. Ein Unternehmen unserer Größe kommt um eine ausgeklügelte und konsolidierte Could-Sourcing Strategie nicht herum. Dazu gehören jedoch auch festgelegte Standards für die Nutzung.

Data Science Blog: Gerade beim Thema Cloud zucken jedoch viele Entscheider zusammen und verweisen auf Risiken für die Datensicherheit. Wie gehen Sie mit dem Thema um – Und bremsen diese Maßnahmen das Engagement, Daten zusammen zu führen und auszuwerten?

Datensicherheit wird ein immer wichtigeres Thema und wir sensibilisieren unsere internen Kunden und IT-Anwender dafür. Im Zuge der rasanten Entwicklung im Umfeld Industrie 4.0 und Industrialisierung benötigen wir zeitnah valide und zielführende Nutunzgsstandards für Cloud und Big Data Lösungen.

Data Science Blog: Wenn Sie von Analyse sprechen, denken Sie vor allem an die rückblickende Analyse oder eine solche in nahezu Echtzeit?

An beides gleichermaßen, denn je nach Problemstellung oder Optimierungsbestrebungen ist das richtige Analyseverfahren anzuwenden.

Data Science Blog: Kommen die Bestrebungen hin zur Digitalisierung und Nutzung von Big Data gerade eher von oben aus dem Vorstand oder aus der Unternehmensmitte, also aus den Fachbereichen, heraus?

In der traditionellen Industrie kommen die Bemühungen überwiegend vom Vorstand und mir als CIO. Es ist unsere Aufgabe, existierende und kommende Trends rechtzeitig zu erkennen. Big Data und Industrie 4.0 werden immer wichtiger. Es ist wettbewerbsentscheidend, hier am Ball zu bleiben. Und das nicht nur für die eigene Kosten- und Prozessoptimierung, sondern auch, um sich am Markt zu differenzieren. Wir müssen diese Technologien und Methoden in unseren Fachbereichen etablieren und die dafür notwendige Veränderungsbereitschaft anregen.

Data Science Blog: Finden die Analysen in den Fachbereichen oder in einer zentralen Stelle statt?

Das hängt sehr von den einzelnen Analysen und dem damit verbundenen Aufwand ab. Die Einrichtung eines zentralen Datenlabors mit der entsprechenden Kompetenz und ausgebildeten Daten Scientists ist allerdings ein guter Weg, um komplexe Analysen, für die die Fachbereiche keine Kapazitäten / Skills haben, experimentell umsetzen zu können.

Data Science Blog: Für die Data Scientists, die Sie für Ihre zukünftigen Umsetzungen von Big Data Analysen suchen, welche Kenntnisse setzen Sie voraus? Und suchen Sie eher den introvertierten Nerd oder den kommunikationsstarken Beratertyp?

Ein Data Scientist sollte meines Erachtens sehr gute Kenntnisse über moderne Datenbanken sowie Erfahrung in der Auswertung von unstrukturierte Daten haben, aber auch viel Kreativität für die Darstellung von Sachverhalten mitbringen und auch mal „querdenken können“.
Wir suchen eher Experten aus der Informatik und Mathematik, aber auch kommunikative, kreative Spezies und neugierige Menschen, die jedoch auch eine ausgeprägte analytische Denkweise aufweisen sollten.

KNN: Vorwärtspass

Wenn die Gewichte eines künstlichen neuronalen Netzwerkes trainiert sind, kann es verwendet werden, um Vorhersagen über eine am Eingang angelegte Beobachtung zu treffen. Hierzu werden Schicht für Schicht, in einem sogenannten Vorwärtspass (Forward-Pass), die Aktivierungen der einzelnen Neuronen ermittelt, bis ein Ergebnis an der Ausgabeschicht anliegt. Der ganze Prozess hat zwar einen eigenen Namen (Vorwärtspass), ist aber im Endeffekt nur ein iteratives durchführen von mehreren logistischen Regressionen und entspricht dem Vorgehen aus dem Artikel „KNN: künstliche Neuronen“.

Anwendungsbeispiel

Im folgenden Beispiel verwenden wir die Wahrheitstabelle von einem X-OR Logikgatter (siehe Abbildungen unten links) als Ground Truth Data. Ziel ist es, den Ausgangwert Y, für einen beliebig anliegenden Eingangsvektor [X1, X2] vorherzusagen. Die Aufgabe ist recht komplex, so dass eine einfache lineare oder logistische Regression keine zufriedenstellende Lösung finden wird. Die zum Einsatz kommende  Netzwerkstruktur ist ein 2-schichtiges Feedforward Netzwerk mit zwei Eingangsneuronen, einer verborgenen Schicht und einem Ausgangsneuron.

XOR Wahrheitstabelle

X1 X2 Y = X1 ⊻ X2
0 0 0
0 1 1
1 0 1
1 1 0

 

Da das Netzwerk wie anfänglich erwähnt, bereits trainiert ist, gebe ich die Gewichte (Theta) vor. Werden die Werte als Matrix dargestellt, können mit Hilfe der linearen Algebra die Aktivierungswahrscheinlichkeiten aller Neuronen einer Schicht auf einmal ausgerechnet werden.

Theta 1

θ11 =  2,7 θ12 =   3,1
θ13 =  5,6 θ14 = -6
θ15 = -5,4 θ16 =  6,2
Theta 2

θ21 =  9,6
θ22 = -6,6
θ23 = -6,5

Programmcode

Für die eigentlichen Berechnungen verwenden wir die Programmiersprache Octave oder MATLAB. Octave ist eine kostenlose alternative zu MATLAB. Wobei es nicht notwendig ist irgendetwas zu installieren, da es auch eine Online Variante von MATLAB/Octave gibt:
http://www.tutorialspoint.com/execute_matlab_online.php

 %--------------------- Daten -----------------------
 X = [0 0;       		% Eingangsdaten
      0 1;
      1 0;
      1 1] 
     
 Y = [0;1;1;0] 			% erwartete XOR Ausgangsdaten


 theta1 = [2.7, 3.1; 	% antrainierte Gewichte der ersten Schicht
           5.6,  -6;
          -5.4, 6.2]
         
 theta2 = [9.6;			% antrainierte Gewichte der zweiten Schicht
          -6.6;
          -6.5]

 m = length(X)			% Anzahl der Eingangsdaten


 %--------------------- Vorwärtspass -----------------------
 V = X					% anlegen der Eingangsdaten an die Eingangsschicht

 % 1. berechne die Aktivierungen der verborgenen Schicht
 V = [ones(m,1) V]		% hinzufügen der Bias Units  (sind immer 1)
 Zv = V * theta1			% Summe aus den Eingangswerten multipliziert mit deren Gewichten
 H = 1 ./ (1 .+ e.^-Zv)	% anwenden der Sigmoid Funktion auf die Aktivierungsstärke Zv

 % 2. berechne die Aktivierungen der Ausgangsschicht
 H = [ones(m,1) H]		% hinzufügen der Bias Units an die verborgene Schicht
 Zh = H * theta2			% Produkt aus den Aktivierungen der Neuronen in H und Theta2
 O = 1 ./ (1 .+ e.^-Zh)	% Vorhersage von dem Netzwerk

 % 3. berechne die Vorhersageungenauigkeit
 loss = (O .- Y) .^ 2 	% quadratischer Fehler von der Vorhersage und der Zielvorgabe Y
 mse = sum(loss) / m		% durchschnittlicher quadratischer Fehler aller Vorhersagen

Ein paar Sätze zu den verwendeten Befehlen. Der Punkt vor manchen Operationen gibt an, dass die Operation Elementweise durchzuführen ist (wichtig bei der Sigmoid Funktion). Die Methode ones(M,N) erzeugt eine MxN große Matrix gefüllt mit den Werten 1. Wir erzeugen damit einen Spaltenvektor der unseren Bias Units entspricht und den wir anschließend an eine vorhandene Matrix horizontal anfügen.

Wird das Programm ausgeführt schreibt es unter anderem die Werte von der Ausgabeschicht O (Output Layer) auf die Konsole. Da wir alle XOR Variationen auf einmal ausgerechnet haben, erhalten wir auch vier Vorhersagen. Verglichen mit der Zielvorgaben Y sind die Werte von O sehr vielversprechend (ähnlich).

X1 X2 Y O
0 0 0 0.057099
0 1 1 0.936134
1 0 1 0.934786
1 1 0 0.050952

 

Komplexe Netzwerke

Hätte das Netzwerk noch weitere verborgene Schichten, müssen Teile des Programmcodes wiederholt ausgeführt werden. Grundsätzlich sind drei Befehle pro Schicht notwendig:

H1 = [ones(m,1) H1]			% hinzufügen der Bias Units an die verborgene Schicht
Zh1 = H1 * theta2			% Produkt aus den Aktivierungen der Neuronen in H1 und Theta2
H2 = 1 ./ (1 .+ e.^-Zh1)		% Aktivierungswahrscheinlichkeiten für die nächste verborgene Schicht

Im nächsten Artikel schauen wir uns das Training solcher Netzwerke an.

Text Mining mit R

R ist nicht nur ein mächtiges Werkzeug zur Analyse strukturierter Daten, sondern eignet sich durchaus auch für erste Analysen von Daten, die lediglich in textueller und somit unstrukturierter Form vorliegen. Im Folgenden zeige ich, welche typischen Vorverarbeitungs- und Analyseschritte auf Textdaten leicht durchzuführen sind. Um uns das Leben etwas leichter zu machen, verwenden wir dafür die eine oder andere zusätzliche R-Library.

Die gezeigten Schritte zeigen natürlich nur einen kleinen Ausschnitt dessen, was man mit Textdaten machen kann. Der Link zum kompletten R-Code (.RMD) findet sich am Ende des Artikels.

Sentimentanalyse

Wir verwenden das Anwendungsgebiet der Sentimentanalyse für diese Demonstration. Mittels der Sentimentanalyse versucht man, Stimmungen zu analysieren. Im Prinzip geht es darum, zu erkennen, ob ein Autor mit einer Aussage eine positive oder negative Stimmung oder Meinung ausdrückt. Je nach Anwendung werden auch neutrale Aussagen betrachtet.

Daten einlesen

Datenquelle: ‘From Group to Individual Labels using Deep Features’, Kotzias et. al,. KDD 2015

Die Daten liegen als cvs vor: Die erste Spalte enhält jeweils einen englischen Satz, gefolgt von einem Tab, gefolgt von einer 0 für negatives Sentiment und einer 1 für positives Sentiment. Nicht alle Sätze in den vorgegebenen Daten sind vorklassifiziert.

Wir lesen 3 Dateien ein, fügen eine Spalte mit der Angabe der Quelle hinzu und teilen die Daten dann in zwei Datensätze auf. Der Datensatz labelled enthält alle vorklassifizierten Sätze während alle anderen Sätze in unlabelled gespeichert werden.

## 'readSentiment' liest csv ein, benennt die Spalten und konvertiert die Spalte 'sentiment' zu einem Faktor 
amazon <-readSentiment("amazon_cells_labelled.txt")
amazon$source <- "amazon"
imdb <-readSentiment("imdb_labelled.txt")
imdb$source <- "imdb"
yelp <-readSentiment("yelp_labelled.txt")
yelp$source <- "yelp"

allText <- rbindlist(list(amazon, imdb, yelp), use.names=TRUE)
allText$source <- as.factor(allText$source)

unlabelled <- allText[is.na(allText$sentiment), ]
labelled <- allText[!is.na(allText$sentiment), ]

Wir haben nun 3000 vorklassifizierte Sätze, die entweder ein positives oder ein negatives Sentiment ausdrücken:

text               sentiment 	source    
Length:3000        0:1500    	amazon:1000  
Class :character   1:1500    	imdb  :1000  
Mode  :character             	yelp  :1000

Textkorpus anlegen

Zuerst konvertieren wir den Datensatz in einen Korpus der R-Package tm:

library(tm)
corpus <- Corpus(DataframeSource(data.frame(labelled$text)))
# meta data an Korpus anfügen:
meta(corpus, tag = "sentiment", type="indexed") <- labelled$sentiment
meta(corpus, tag = "source", type="indexed") <- labelled$source

myTDM  <- TermDocumentMatrix(corpus, control = list(minWordLength = 1))

## verschieden Möglichkeiten, den Korpus bzw die TermDocumentMatrix zu inspizieren:
#inspect(corpus[5:10])
#meta(corpus[1:10])
#inspect(myTDM[25:30, 1])
# Indices aller Dokumente, die das Wort "good" enthalten:
idxWithGood <- unlist(lapply(corpus, function(t) {grepl("good", as.character(t))}))
# Indices aller Dokumente mit negativem Sentiment, die das Wort "good" enthalten:
negIdsWithGood <- idxWithGood &  meta(corpus, "sentiment") == '0'

Wir können uns nun einen Eindruck über die Texte verschaffen, bevor wir erste Vorverarbeitungs- und Säuberungsschritte durchführen:

  • Fünf Dokumente mit negativem Sentiment, die das Wort “good” enthalten: Not a good bargain., Not a good item.. It worked for a while then started having problems in my auto reverse tape player., Not good when wearing a hat or sunglasses., If you are looking for a good quality Motorola Headset keep looking, this isn’t it., However, BT headsets are currently not good for real time games like first-person shooters since the audio delay messes me up.
  • Liste der meist verwendeten Worte im Text: all, and, are, but, film, for, from, good, great, had, have, it’s, just, like, movie, not, one, phone, that, the, this, very, was, were, with, you
  • Anzahl der Worte, die nur einmal verwendet werden: 4820, wie z.B.: ‘film’, ‘ive, ’must’, ‘so, ’stagey’, ’titta
  • Histogramm mit Wortfrequenzen:

Plotten wir, wie oft die häufigsten Worte verwendet werden:

Vorverarbeitung

Es ist leicht zu erkennen, dass sogenannte Stoppworte wie z.B. “the”, “that” und “you” die Statistiken dominieren. Der Informationsgehalt solcher Stopp- oder Füllworte ist oft gering und daher werden sie oft vom Korpus entfernt. Allerdings sollte man dabei Vorsicht walten lassen: not ist zwar ein Stoppwort, könnte aber z.B. bei der Sentimentanalyse durchaus von Bedeutung sein.

Ein paar rudimentäre Vorverarbeitungen:

Wir konvertieren den gesamten Text zu Kleinbuchstaben und entfernen die Stoppworte unter Verwendung der mitgelieferten R-Stoppwortliste für Englisch (stopwords(“english”)). Eine weitere Standardoperation ist Stemming, das wir heute auslassen. Zusätzlich entfernen wir alle Sonderzeichen und Zahlen und behalten nur die Buchstaben a bis z:

replaceSpecialChars <- function(d) {
  ## normalerweise würde man nicht alle Sonderzeichen entfernen
  gsub("[^a-z]", " ", d)
}
# tolower ist eine built-in function
corpus <- tm_map(corpus, content_transformer(tolower)) 
# replaceSpecialChars ist eine selbst geschriebene Funktion:
corpus <- tm_map(corpus, content_transformer(replaceSpecialChars))
corpus <- tm_map(corpus, stripWhitespace)
englishStopWordsWithoutNot <- stopwords("en")[ - which(stopwords("en") %in% "not")]
corpus <- tm_map(corpus, removeWords, englishStopWordsWithoutNot)
## corpus <- tm_map(corpus, stemDocument, language="english")

myTDM.without.stop.words <- TermDocumentMatrix(corpus, 
                                      control = list(minWordLength = 1))

 

Schlagwortwolke bzw Tag Cloud

Schließlich erzeugen wir eine Tag-Cloud aller Worte, die mindestens 25 mal im Text verwendet werden. Tag-Clouds eignen sich hervorragend zur visuellen Inspektion von Texten, allerdings lassen sich daraus nur bedingt direkte Handlungsanweisungen ableiten:

wordfreq <- findFreqTerms(myTDM.without.stop.words, lowfreq=25)
termFrequency <- rowSums(as.matrix(myTDM.without.stop.words[wordfreq,])) 
# eine Alternative ist 'tagcloud'
library(wordcloud)
wordcloud(words=names(termFrequency),freq=termFrequency,min.freq=5,max.words=50,random.order=F,colors="red")

schlagwortwolke

Word-Assoziationen

Wir können uns für bestimmte Worte anzeigen lassen, wie oft sie gemeinsam mit anderen Worten im gleichen Text verwendet werden:

  • Worte, die häufig gemeinsam mit movie verwendet werden:
findAssocs(myTDM.without.stop.words, "movie", 0.13)
## $movie
##   beginning        duet fascinating        june       angel   astronaut 
##        0.17        0.15        0.15        0.15        0.14        0.14 
##         bec       coach     columbo   considers     curtain       dodge 
##        0.14        0.14        0.14        0.14        0.14        0.14 
##     edition   endearing    funniest    girolamo         hes         ive 
##        0.14        0.14        0.14        0.14        0.14        0.14 
##     latched         lid      makers     peaking     planned  restrained 
##        0.14        0.14        0.14        0.14        0.14        0.14 
##       scamp     shelves     stratus       titta        ussr      vision 
##        0.14        0.14        0.14        0.14        0.14        0.14 
##       yelps 
##        0.14
  • Worte, die häufig gemeinsam mit product verwendet werden:
findAssocs(myTDM.without.stop.words, "product", 0.12)
## $product
##        allot     avoiding        beats   cellphones       center 
##         0.13         0.13         0.13         0.13         0.13 
##      clearer   contacting       copier       dollar    equipment 
##         0.13         0.13         0.13         0.13         0.13 
##      fingers      greater      humming        ideal      learned 
##         0.13         0.13         0.13         0.13         0.13 
##       lesson        motor        murky   negatively          oem 
##         0.13         0.13         0.13         0.13         0.13 
##     official       online       owning         pens    petroleum 
##         0.13         0.13         0.13         0.13         0.13 
##     planning      related replacementr    sensitive     shipment 
##         0.13         0.13         0.13         0.13         0.13 
##        steer      voltage        waaay        whose    worthless 
##         0.13         0.13         0.13         0.13         0.13

 

Text-Mining

Wir erzeugen einen Entscheidungsbaum zur Vorhersage des Sentiments. Entscheidungsbäume sind nicht unbedingt das Werkzeug der Wahl für Text-Mining aber für einen ersten Eindruck lassen sie sich bei kleinen Datensätzen durchaus gewinnbringend einsetzen:

trainingData <- data.frame(as.matrix(myDTM))
trainingData$sentiment <- labelled$sentiment
trainingData$source <- labelled$source

formula <- sentiment ~ . 

if (rerun) {
  tree <- rpart(formula, data = trainingData)
  save(tree, file=sprintf("%s-tree.RData", prefix))
} else {
  load(file=sprintf("c:/tmp/%s-tree.RData", prefix))
}

myPredictTree(tree)

 

##          isPosSentiment
## sentiment FALSE TRUE
##         0  1393  107
##         1   780  720

Eine Fehlerrate von über 50% auf den Trainingsdaten für positive Sentiments ist natürlich nicht berauschend und daher testen wir zum Schluß noch Support Vector Machines:

library(e1071)
  if (rerun) {
    svmModel <- svm(formula, data = trainingData)
    save(svmModel, file=sprintf("%s-svm.RData", prefix))
  } else {
    load(file=sprintf("c:/tmp/%s-svm.RData", prefix))
  }

myPredictSVM <- function(model) {
  predictions <- predict(model, trainingData)

  trainPerf <- data.frame(trainingData$sentiment, predictions, trainingData$source)
  names(trainPerf) <- c("sentiment", "isPosSentiment", "source")
  
  with(trainPerf, {
    table(sentiment, isPosSentiment, deparse.level = 2)
  })
  
}
myPredictSVM(svmModel)
##          isPosSentiment
## sentiment    FALSE 	TRUE
##         0 	1456   	  44
##         1   	  23 	1477

Die Ergebnisse sehen deutlich besser aus, müssten aber natürlich noch auf unabhängigen Daten verifiziert werden, um z. B. ein Overfittung zu vermeiden.

Download-Link zum kompletten R-Code für dieses Text-Mining-Beispiel: https://www.data-science-blog.com/download/textMiningTeaser.rmd

Wahrscheinlichkeitesrechnung – Grundstein für Predictive Analytics

Die Wahrscheinlichkeitsrechnung behandelt die Gesetzmäßigkeiten  des (von außen betrachtet) zufälligen Vorkommens bestimmter Ereignisse aus einer vorgegebenen Ereignismenge. Die mathematische Statistik fasst diese Wahrscheinlichkeitsrechnung zur Stochastik zusammen, der Mathematik des Zufalls

Mit diesem Artikel – zu der ich eine Serie plane – möchte ich den Einstieg in Predictive Analytics wagen, zugegebenermaßen ein Themengebiet, in dem man sich sehr schnell verlieren und den Wald vor lauter Bäumen nicht mehr findet. Also belassen wir es erstmal bei einem sanften Einstieg…

Klassische Definition der Wahrscheinlichkeit

Das klassische Verständnis der Wahrscheinlichkeit geht von endlich vielen Ausgängen (Ereignisse) aus, bei denen alle Ausgänge gleich wahrscheinlich sind. Die dafür erdachten Zufallsexperimente wurden von dem französischen Mathematiker Pierre Simon Lapplace (1749 – 1827) zum ersten Mal nachvollziehbar beschrieben. Diese Zufallsexperimente werden daher auch Laplace-Experimente genannt.

Bei einem Laplace Experiment gilt:

Ereignismenge Omega = {omega_1,omega_2,omega_3,…omega_s}
Wahrscheinlichkeit p(w_j)=frac{1}{s}=frac{1}{|Omega|}
(j=1,2,3,…s)

Die Ergebnismenge, das ist die Menge aller möglichen Ereignisse, wird in der Regel mit einem Omega (Omega) gekennzeichnet, ein beliebiges Einzelereignis hingegen als omega (kleines Omega).

Eine typische Laplace-Wahrscheinlichkeitsfrage ist ein bevorstehender Würfelwurf. Wie groß ist die Wahrscheinlichkeit, mit einem echten (unverfälschten) Würfel eine gerade Zahl zu würfeln?

Mit Omega={1,2,3,4,5,6} und A={2,4,6} folgt P(A)=frac{|A|}{|Omega|}=frac{3}{6}=0,5.

Axiomatische Definition der Wahrscheinlichkeit

Jeder Wahrscheinlichkeitsbegriff muss auf denselben äußeren Bedingungen beruhenden Zufallsexperimenten beliebig oft wiederholbar sein. Die axiomatische Definition der Wahrscheinlichkeit P(A) eines Ereignisses A berücksichtigt Axiome. Axiome sind nicht beweisbare Grundpostulate, darunter fallen Gegebenheiten, die gewissermaßen unverstanden sind und deren Vorkommen und Bedeutung in der Regel empirisch belegt werden müssen.
Die Definition der axiomatischen Wahrscheinlichkeit stammt vom russischen Mathematiker Andrej Nikollajewitsch Kolmogorov (1903 – 1987).

In der Realität gibt es keine perfekte Zufälligkeit, denn jedes Ergebnis ist von ganz bestimmten Faktoren abhängig. Auf den Würfelwurf bezogen, hängt das gewürfelte Ergebnis von unüberschaubar vielen Faktoren ab. Wären diese alle bekannt, könnte das Ergebnis exakt berechnet und somit mit einer Sicherheit vorhergesagt werden. Da dafür jedoch in der Praxis unbestimmbar viele Faktoren eine Rolle spielen (beispielsweise die genaue Beschaffenheit des Würfels in Form, Gewicht, Materialwiderstand, der genaue Winkel, die Fallgeschwindigkeit, die Ausgangsposition der Hand und des Würfels) können wir das Ergebnis nur schätzen, indem die Beschreibung des Vorgangs vereinfacht wird. Nur diese Vereinfachung macht es uns möglich, Vorhersagen zu treffen, die dann jedoch nur eine Wahrscheinlichkeit darstellen und somit mit einer Unsicherheit verbunden sind.

In der abstrakten Welt des perfekten Zufalls gäbe es die gleiche Chance, eine “4” zu würfeln, wie jeweils alle anderen Ziffern.

Mit Omega={1,2,3,4,5,6} und A={4} folgt P(A)=frac{|A|}{|Omega|}=frac{1}{6}=0,167.

Das Ergebnis eines Wurfes des Würfels ist in der Realität auch von der Beschaffenheit des Würfels abhängig. Angenommen, der Würfel hat auf Seite der Ziffer “4” bei allen vier Kanten eine Abrundung, die ein Umkippen auf eine andere Seite begünstigen, so bedeutet dies:

  • Die Ziffer “4” hat vier abgerundete Kanten, die Wahrscheinlichkeit eine “4” zu würfeln sinkt stark
  • Die Ziffern “1”, “3”, “5”, “6” haben jeweils eine abgerundete Kante (Berühungskante zur “4”) sinkt
  • Die Ziffer “2” liegt der “4” gegenüber, hat somit keine Berührungskante und keine Abrundung, so steigt ihre Chance gewürfelt zu werden

Nun könnte sich nach einer empirischen Untersuchung mit einer ausreichenden Stichprobe folgende Wahrscheinlichkeit ergeben:

  • p(4) = 0,1
  • p(1) = p(3) = p(5) = p(6) = 0,15
  • p(2) = 0,3
  • P(Omega) = 1,0

Durch die Analyse der bisherigen Wurf-Historie und der Betrachtung der Beschaffenheit der Kanten des Würfels können wir uns somit weit realistischere Wahrscheinlichkeiten über die Wurfergebnisse ermitteln. Wie hoch wäre nun die Wahrscheinlichkeit, nach einem Wurf eine gerade Zahl zu würfeln?

Mit Omega={1,2,3,4,5,6} und A={2,4,6} folgt P(A)=p(2)+p(4)+p(6)=0,55.

Die Abschätzung von Pi mit Apache Spark

Auf den Berliner Data Science/Big Data/Data Analytics/…-Meetups auf denen ich in letzter Zeit des Öfteren zugegen war, tauchte immer wieder der Begriff Spark auf. Ich wollte wissen was es hiermit auf sich hat. Nachdem ich Spark 1.5.1 lokal auf meinem Mac installiert hatte, fing ich an Wörter in frei verfügbaren Texten zu zählen. Da es mir aber zu aufwändig schien, extrem lange Texte im Internet zu suchen und ich ein Gefühl für die Leistungsfähigkeit von Spark bekommen wollte, widmete ich mich einem skalierbaren Problem: der Abschätzung von Pi mit der Monte Carlo-Methode.

 1000 Zufallspunkte lokal auf Mac

spark-scala-interface-pi-example

Dies war wie zu erwarten keine Herausforderung für meine Hardware. Was passiert bei 10^6/ 10^7/ 10^8/ 10^9… Zufallspunkten?

dataset-spark-pi-example-1

An dieser Stelle stieß ich auf ein “Integer-Problem“. Weil 3*10^9 > 2^31 – 1, kann in diesem Fall nicht mehr der Datentyp Integer verwendet werden, sondern man müsste „long Integer“ (64 bit) nehmen. Was mich nun jedoch viel mehr interessierte als mit Zufallspunkten > 2^31 – 1  zu experimentieren, war eine Spark-Installation auf AWS und die entsprechenden Berechnungszeiten. Ich installierte Spark 1.5.0 (auf Hadoop 2.6.0 YARN) auf einem AWS-Cluster (2 Core/1 Master x m3.xlarge). Zu meiner Überraschung ergab sich Folgendes:

dataset-spark-pi-example-2

Warum war mein Mac schneller als ein AWS-Cluster? Eine m3.xlarge-Instanz hat 4 Kerne und 15 GB Arbeitsspeicher, mein Mac ziemlich genau die Hälfte… Gut, dann probieren wir das Ganze mal mit einem 4 Core/1 Master x m3.xlarge-Cluster.

dataset-spark-pi-example-3

Es ergibt sich kein signifikanter Unterschied. Erst die Verwendung von einem 3 Core/1 Master x r3.2xlarge-Cluster brachte eine Beschleunigung. Wo ist der Flaschenhals? Um Netzwerkeffekte zu prüfen, habe ich schließlich eine 0 Core/1 Master-AWS-Installation getestet.

dataset-spark-pi-example-4

Dieser letzte Test skalierte zu meinen vorherigen Tests auf dem AWS-System, und er wies darauf hin, dass der Flaschenhals kein Netzwerkeffekt war.

Bei heise Developer fand ich einen sehr interessanten Artikel, welcher sich dem Thema „optimale Konfiguration der virtualisierten Cloud-Hardware für den jeweiligen Anwendungsfall finden“ widmet: Benchmarking Spark: Wie sich unterschiedliche Hardware-Parameter auf Big-Data-Anwendungen auswirken

Für heute belasse ich es bei dem vorgestellten Experiment.

To be continued…,

Die Risiken der Datenverwaltung in der Cloud

Die externe Cloud lockt als Alternative zu eigenen Servern, weil sie standardisierte und sofort nutzbare Dienste ohne Investitionskosten bietet. Immer mehr Unternehmen adoptieren webbasierte Technologien in ihren täglichen Aktivitäten und es scheint, dass eben jene webbasierte Applikationen und Business-Tools unsere Zukunft vorgeben. Diesen Vorteilen stehen jedoch auch Risiken gegenüber, die ein Unternehmen bedenken sollte, bevor der Schritt in die Cloud gewagt wird.

Dieser Artikel gibt einen kurzen Überblick über die drei größten Probleme beim Cloud Computing, um die Risiken gegenüber den Chancen besser abwägen zu können.

Datensicherheit – Der Schutz vor Datenverlust

In erster Linie ist eine externe Cloud immer noch nicht so sicher, wie Ihre eigene professionell gewartete IT-Infrastruktur. Die Übertragung der Daten über die externen Netzwerke ist vergleichsweise langsam und grundsätzlich riskant, sofern nicht aufwändig verschlüsselt wird. Viele Skandale rund um das Thema Datensicherheit traten im Grunde durch diese Vulnerabilität der Datenübertragung über dritte Netze auf. Was für unkritische Maschinendaten vielleicht noch akzeptabel sein mag, ist für Personendaten höchst kritisch. Für Unternehmen, die mit extrem sensiblen Daten arbeiten, ist dieser Faktor insofern ein großer Nachteil, als dass dieser zumindest durch Verschlüsselung entschärft werden muss.

Ein weiteres Problem von Unternehmen, die webbasierte Software aus externen Clouds verwenden, ist, dass sie nicht wissen, wo ihre Daten aufbewahrt werden. Die Unternehmen wissen oft nicht, in welchen Ländern die Rechenzentren lokalisiert sind, auf welchen Servern und mit welcher Hard- und Software ihre Daten verarbeitet und gespeichert werden. Gerade der Aspekt der nationalen Gesetzgebung und der eingesetzten Hard- und Software bedeutet ein Risiko der Verletzung von Datenschutzvorschriften. So können hinsichtlich des Datenschutzes Probleme enstehen, wenn Daten – auch nur anteilig – außerhalb der EU gespeichert werden.

Nur wenige Cloud-Dienste sichern glaubhaft und nachvollziehbar zu, dass die Daten in Deutschland oder der Schweiz verbleiben. Das Fehlen dieser Zusicherung ist mit dem Verlust der Datenkontrolle gleichzusetzen und sollte daher für besonders sensible Informationen gegeben sein.

Angriffe auf externe Clouds

Sämtliche Daten oder Systeme, die sich in der Cloud befinden, sind ein potenzielles Ziel für Hacker und könnten durch einen Angriff enthüllt werden. Externe Cloud-Systeme sind deshalb ein solch beliebtes Ziel für Hacker, da diese nicht nur von Ihnen, sondern auch von anderen Unternehmen, Instituten oder Privatpersonen genutzt werden. Auch der Cloud-Anbieter selbst kann angegriffen werden, so dass Ihre Daten in Gefahr sind, obwohl Sie eigentlich gar nicht das direkte Ziel des Hackers waren.

Besonders beliebt bei Cyberkriminellen, die sich Cloud-Service-Provider als Ziel festgesetzt haben, sind Attacken auf Web-Anwendungen. Die Versuche des Hackers, Sicherheitslücken von Web-Anwendungen auszunutzen sind deswegen viel zu oft von Erfolg geprägt, da es vielzählige Möglichkeit der Angriffe gibt, beispielsweise über SQL-Injection oder Session-Hijacking.

Spätestens seit dem NSA- und BND-Skandal sollten Sie auch hinsichtlich staatlicher Institute als Organe der Wirtschaftsspionage sensibilisiert sein. Sie wissen nie, wer außer Ihnen die Cloud-Dienste Ihres Anbieters noch nutzt oder deren Hard- bzw. Software anzapft.

Verzögerungen

Während sich die Risiken der Datensicherheit durch den Einsatz von internen Cloud statt externen Clouds noch recht gut vermeiden lässt, gilt ein Problem als Cloud-universell: Die Geschwindigkeit im alltäglichen Betrieb.

In Business ist Zeit bekanntlich Geld wert. Webbasierte Lösungen und externe Cloud sollten theoretisch Zeit einsparen, und in vielerlei Hinsicht tun sie das auch, beispielsweise bei der Ersteinrichtung. Im operativen Geschäft sieht das dann jedoch anders aus, denn webbasierte Lösungen kämpfen mit Latenzzeiten, Ladezeiten und Verzögerungen durch die Darstellung im Webbrowser. Es kommt auch heute immer noch vor, das sich Seiten nicht aufbauen und Informationen nicht abrufen lassen. Und wenn so was passiert, ist es Ihren Mitarbeitern nicht möglich, Ihre Arbeit fortzusetzen, der Prozess stoppt.

Desweiteren sind gute Offline-Modi immer noch eine Herausforderung für jeden Service-Anbieter, so dass Ihre Mitarbeiter stets online sein müssen, was sie wiederum an anderer Stelle zu einem leichten Ziel für Hacker werden.

Fazit – Die Abwägung zwischen Cloud und Nicht-Cloud

Stand heute haben webbasierte Dienstleistungen das Niveau der traditionellen Software noch nicht erreicht. Während die Cloud jeden Tag immer mehr Zugkraft gewinnt, hat die traditionelle Software jedoch noch lange nicht ausgedient. Jedes Unternehmen muss die Vor- und Nachteile der Cloud verantwortlich für sich und seine Stakeholder abwägen, um diese existenzgefährdenden Risiken im Vorfeld zu vermeiden und die beste Entscheidung für das Unternehmen zu treffen.