+ All Categories
Home > Documents > Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und...

Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und...

Date post: 18-Aug-2019
Category:
Upload: phamhanh
View: 217 times
Download: 0 times
Share this document with a friend
70
Transcript
Page 1: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytik in der DatenbankModellanwendung näher an den Daten

Balázs Bárány

Berater für Analytik und Data Warehousing

Linuxtage Graz 2014

Page 2: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Inhalt

Überblick und GrundlagenVorgehensmodell

Analytische Modellierung

Modellanwendung in der DatenbankEinfache ModellartenKomplexe Modelle

PL/R in PostgreSQL

Page 3: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Analytik bzw. analytics

I Deskriptiv

I Prädiktiv

I Explorativ

I Statistik, Data Mining, KDD, Machine Learning, DataScience, ...?

I Anwendungsfelder

I Klassi�zierung, Regression, Assoziation, Clustering

Page 4: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Analytik bzw. analytics

I Deskriptiv

I Prädiktiv

I Explorativ

I Statistik, Data Mining, KDD, Machine Learning, DataScience, ...?

I Anwendungsfelder

I Klassi�zierung, Regression, Assoziation, Clustering

Page 5: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Analytik bzw. analytics

I Deskriptiv

I Prädiktiv

I Explorativ

I Statistik, Data Mining, KDD, Machine Learning, DataScience, ...?

I Anwendungsfelder

I Klassi�zierung, Regression, Assoziation, Clustering

Page 6: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Methoden und Werkzeuge

I Verfahren und Algorithmen

I InformiertI Uninformiert

I Software

I Open Source: R, RapidMiner, Weka, KNIME, ...I Proprietär: SPSS, SAS, ...

Page 7: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Methoden und Werkzeuge

I Verfahren und Algorithmen

I InformiertI Uninformiert

I Software

I Open Source: R, RapidMiner, Weka, KNIME, ...I Proprietär: SPSS, SAS, ...

Page 8: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Freie Werkzeuge

I RapidMiner

I �Commercial source model�I Community-Version von Sourceforge.net und GithubI Aktuelle Version 6: interaktives Tutorial,Usability-Verbesserungen

I R �environment for statistical computing and graphics�

I Befehlszeile, SkriptingI GUIs

Page 9: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Freie Werkzeuge

I RapidMiner

I �Commercial source model�I Community-Version von Sourceforge.net und GithubI Aktuelle Version 6: interaktives Tutorial,Usability-Verbesserungen

I R �environment for statistical computing and graphics�

I Befehlszeile, SkriptingI GUIs

Page 10: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Data-Mining-Prozess

Cross Industry Standard Process for Data Mining, Kenneth Jensen/Wikimedia Commons

Page 11: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Themen dieses Vortrags

Cross Industry Standard Process for Data Mining, Kenneth Jensen/Wikimedia Commons

Page 12: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Projekt in der Praxis

I Daten liegen in einer relationalen Datenbank

I Analyse, Modellerstellung, Evaluierung in der Analysesoftware

I Ziel: Anwendung des Modells auf neue Daten

I Neue Daten lesen, ID-Feld zwischenspeichernI Modell anwendenI Ergebnis zurückschreiben

I Probleme:

I Ine�ziente RoundtripsI Interaktion zwischen mehreren SystemenI Batch-Verarbeitung, Latenz

Page 13: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Projekt in der Praxis

I Daten liegen in einer relationalen Datenbank

I Analyse, Modellerstellung, Evaluierung in der Analysesoftware

I Ziel: Anwendung des Modells auf neue Daten

I Neue Daten lesen, ID-Feld zwischenspeichernI Modell anwendenI Ergebnis zurückschreiben

I Probleme:

I Ine�ziente RoundtripsI Interaktion zwischen mehreren SystemenI Batch-Verarbeitung, Latenz

Page 14: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Projekt in der Praxis

I Daten liegen in einer relationalen Datenbank

I Analyse, Modellerstellung, Evaluierung in der Analysesoftware

I Ziel: Anwendung des Modells auf neue Daten

I Neue Daten lesen, ID-Feld zwischenspeichernI Modell anwendenI Ergebnis zurückschreiben

I Probleme:

I Ine�ziente RoundtripsI Interaktion zwischen mehreren SystemenI Batch-Verarbeitung, Latenz

Page 15: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Projekt in der Praxis

I Daten liegen in einer relationalen Datenbank

I Analyse, Modellerstellung, Evaluierung in der Analysesoftware

I Ziel: Anwendung des Modells auf neue Daten

I Neue Daten lesen, ID-Feld zwischenspeichernI Modell anwendenI Ergebnis zurückschreiben

I Probleme:

I Ine�ziente RoundtripsI Interaktion zwischen mehreren SystemenI Batch-Verarbeitung, Latenz

Page 16: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Integration in die Datenerfassung

I Etwas besser:

I Integrierte Software

I Ablösung des Legacy-Systems?

I Integration über o�ene Schnittstellen

I Webservices, remote procedure calls, ...

I Predictive Model Markup Language (PMML)

I Integration in den Datenbankserver

Page 17: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Integration in die Datenerfassung

I Etwas besser:

I Integrierte Software

I Ablösung des Legacy-Systems?

I Integration über o�ene Schnittstellen

I Webservices, remote procedure calls, ...

I Predictive Model Markup Language (PMML)

I Integration in den Datenbankserver

Page 18: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Integration in die Datenerfassung

I Etwas besser:

I Integrierte Software

I Ablösung des Legacy-Systems?

I Integration über o�ene Schnittstellen

I Webservices, remote procedure calls, ...

I Predictive Model Markup Language (PMML)

I Integration in den Datenbankserver

Page 19: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Integration in die Datenerfassung

I Etwas besser:

I Integrierte Software

I Ablösung des Legacy-Systems?

I Integration über o�ene Schnittstellen

I Webservices, remote procedure calls, ...

I Predictive Model Markup Language (PMML)

I Integration in den Datenbankserver

Page 20: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Überblick und Grundlagen

Vorgehensmodell

Integration in die Datenerfassung

I Etwas besser:

I Integrierte Software

I Ablösung des Legacy-Systems?

I Integration über o�ene Schnittstellen

I Webservices, remote procedure calls, ...

I Predictive Model Markup Language (PMML)

I Integration in den Datenbankserver

Page 21: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 22: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 23: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 24: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 25: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 26: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Modellierungsverfahren

I Lineare Regression

I Gleichung in der Form y = ax+b

I Erweiterungen: nicht normalverteilte Daten, nichtlinear,multivariat

I Naive-Bayes-Methode

I Entscheidungsbäume

I Support Vector Machines

I ... und viele mehr

Page 27: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Beispiel: lineare Regression

I Fragestellung: Höchstgeschwindigkeit von �Kurvigkeit� desStraÿenabschnitts abhängig?

I Methode: Länge des Straÿenabschnitts / Länge der Geradenzwischen Start- und Endpunkt

Beispiel

> mod <- lm(geschw ~ kurvigkeit, data=strkurv)

> coef(mod)

(Intercept) kurvigkeit

86.14846 -63.79144

Page 28: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Beispiel: lineare Regression

I Fragestellung: Höchstgeschwindigkeit von �Kurvigkeit� desStraÿenabschnitts abhängig?

I Methode: Länge des Straÿenabschnitts / Länge der Geradenzwischen Start- und Endpunkt

Beispiel

> mod <- lm(geschw ~ kurvigkeit, data=strkurv)

> coef(mod)

(Intercept) kurvigkeit

86.14846 -63.79144

Page 29: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Beispiel: Entscheidungsbaum

I Fragestellung: Darf die Straÿe mit Fahrrädern befahrenwerden?

I Methode: Entscheidungsbaum in RapidMiner

Page 30: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Beispiel: Entscheidungsbaum

I Fragestellung: Darf die Straÿe mit Fahrrädern befahrenwerden?

I Methode: Entscheidungsbaum in RapidMiner

Page 31: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Analytische Modellierung

Komplexer Entscheidungsbaum

genauer, aber viel komplexer!

Page 32: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Einfache Modellarten

Modelle in SQL-Datenbanken

I Lineare Regression und Varianten: trivial

I Parameter eintragen, View oder Stored Procedure erstellen undaktualisieren

Beispiel

CREATE VIEW maxspeed_prediction ASSELECT osm_id,GREATEST(86.14846 + -63.79144 * (ST_Length(geo) / ST_Distance(ST_StartPoint(geo), ST_EndPoint(geo)) - 1),20.0

) AS maxspeed_predFROM österreich_strasseWHERE maxspeed is nullAND ST_Distance(ST_StartPoint(geo), ST_EndPoint(geo)) > 0

Page 33: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Einfache Modellarten

Variante für einfachere Wartung

I View-Lösung nicht leicht automatisch zu aktualisieren

I Besser: Parameter-Tabelle und Funktion

Beispiel

CREATE TABLE maxspeed_pred_param (intercept double precision, kurvigkeit double precision

);

CREATE FUNCTION kurvigkeit ... ;

SELECT osm_id, GREATEST(20.0,mpp.intercept + mpp.kurvigkeit * kurvigkeit(way)

) AS maxspeed_predFROM osm_austria_roadsCROSS JOIN maxspeed_pred_param mpp ;

Page 34: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Einfache Modellarten

Regelbasierte Modelle

I Entscheidungsbäume und Rule-Modelle in SQLI Baum: Pfade verfolgen, Entscheidungen in CASE WHEN ...THEN überführen

I �Tree to Rules�-Operator in RapidMiner

Beispiel

1 if oneway = no then yes (608 / 439)2 if oneway = yes and highway = motorway then no (0 / 32)3 if oneway = yes and highway = motorway_link then no (0 / 5)4 if oneway = yes and highway = primary then no (44 / 256)5 if oneway = yes and highway = primary_link then no (2 / 82)6 if oneway = yes and highway = residential then yes (5 / 0)7 if oneway = yes and highway = secondary then no (11 / 47)8 if oneway = yes and highway = secondary_link then no (2 / 3)9 if oneway = yes and highway = trunk then no (0 / 28)10 if oneway = yes and highway = trunk_link then no (0 / 11)11 if oneway = yes and highway = unclassi�ed then yes (2 / 0)

Page 35: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Einfache Modellarten

Regelbasierte Modelle

I Entscheidungsbäume und Rule-Modelle in SQLI Baum: Pfade verfolgen, Entscheidungen in CASE WHEN ...THEN überführen

I �Tree to Rules�-Operator in RapidMiner

Beispiel

1 if oneway = no then yes (608 / 439)2 if oneway = yes and highway = motorway then no (0 / 32)3 if oneway = yes and highway = motorway_link then no (0 / 5)4 if oneway = yes and highway = primary then no (44 / 256)5 if oneway = yes and highway = primary_link then no (2 / 82)6 if oneway = yes and highway = residential then yes (5 / 0)7 if oneway = yes and highway = secondary then no (11 / 47)8 if oneway = yes and highway = secondary_link then no (2 / 3)9 if oneway = yes and highway = trunk then no (0 / 28)10 if oneway = yes and highway = trunk_link then no (0 / 11)11 if oneway = yes and highway = unclassi�ed then yes (2 / 0)

Page 36: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Einfache Modellarten

Regeln in SQL überführt

I Syntaxänderungen für SQL

Beispiel

SELECT osm_id,

CASE WHEN oneway = 'no' THEN true

WHEN oneway = 'yes' AND highway = 'motorway' THEN false

WHEN oneway = 'yes' AND highway = 'residential' THEN true

WHEN ...

ELSE null

END as fahrrad_erlaubt

FROM osm_austria_roads;

Wartung aufwändig und fehleranfällig!

Page 37: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Komplexe Modelle

Komplexe Modelle

I komplexe Datenstrukturen und Berechnungen

I schwer in SQL abzubilden, Wartungsaufwand bei Änderungen

I Muÿ es SQL sein?

I PostgreSQL ist multilingualI PL/Perl, PL/Python, PL/JavaScript, PL/Java ...

I PL/R

Page 38: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Komplexe Modelle

Komplexe Modelle

I komplexe Datenstrukturen und Berechnungen

I schwer in SQL abzubilden, Wartungsaufwand bei Änderungen

I Muÿ es SQL sein?

I PostgreSQL ist multilingualI PL/Perl, PL/Python, PL/JavaScript, PL/Java ...

I PL/R

Page 39: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Modellanwendung in der Datenbank

Komplexe Modelle

Komplexe Modelle

I komplexe Datenstrukturen und Berechnungen

I schwer in SQL abzubilden, Wartungsaufwand bei Änderungen

I Muÿ es SQL sein?

I PostgreSQL ist multilingualI PL/Perl, PL/Python, PL/JavaScript, PL/Java ...

I PL/R

Page 40: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Überblick: PL/R

I Erstes Release 2003

I Oracle: 2010 (mind. 23.000 $)

I Aktuelle Version 8.3.0.15 für PostgreSQL 9.3

I Lizenz: GPL

Page 41: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Überblick: PL/R

I Erstes Release 2003

I Oracle: 2010 (mind. 23.000 $)

I Aktuelle Version 8.3.0.15 für PostgreSQL 9.3

I Lizenz: GPL

Page 42: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Überblick: PL/R

I Erstes Release 2003

I Oracle: 2010 (mind. 23.000 $)

I Aktuelle Version 8.3.0.15 für PostgreSQL 9.3

I Lizenz: GPL

Page 43: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Überblick: PL/R

I Erstes Release 2003

I Oracle: 2010 (mind. 23.000 $)

I Aktuelle Version 8.3.0.15 für PostgreSQL 9.3

I Lizenz: GPL

Page 44: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Sicherheitsüberlegungen

I Installation als �untrusted language�

I Funktionen erstellen nur als Datenbankadministrator

I Freigabe der Ausführung für unprivilegierte Benutzer

Beispiel

# Mit Admin-Rechten

CREATE FUNCTION r_add(zahl1 double precision, zahl2 double

precision)

RETURNS double precision AS $func$

return(zahl1 + zahl2)

$func$

LANGUAGE 'plr';

GRANT EXECUTE ON FUNCTION r_add(double precision, double

precision)

TO normaluser;

Page 45: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Sicherheitsüberlegungen

I Installation als �untrusted language�

I Funktionen erstellen nur als Datenbankadministrator

I Freigabe der Ausführung für unprivilegierte Benutzer

Beispiel

# Mit Admin-Rechten

CREATE FUNCTION r_add(zahl1 double precision, zahl2 double

precision)

RETURNS double precision AS $func$

return(zahl1 + zahl2)

$func$

LANGUAGE 'plr';

GRANT EXECUTE ON FUNCTION r_add(double precision, double

precision)

TO normaluser;

Page 46: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Sicherheitsüberlegungen

I Installation als �untrusted language�

I Funktionen erstellen nur als Datenbankadministrator

I Freigabe der Ausführung für unprivilegierte Benutzer

Beispiel

# Mit Admin-Rechten

CREATE FUNCTION r_add(zahl1 double precision, zahl2 double

precision)

RETURNS double precision AS $func$

return(zahl1 + zahl2)

$func$

LANGUAGE 'plr';

GRANT EXECUTE ON FUNCTION r_add(double precision, double

precision)

TO normaluser;

Page 47: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Sicherheitsüberlegungen

I Installation als �untrusted language�

I Funktionen erstellen nur als Datenbankadministrator

I Freigabe der Ausführung für unprivilegierte Benutzer

Beispiel

# Mit Admin-Rechten

CREATE FUNCTION r_add(zahl1 double precision, zahl2 double

precision)

RETURNS double precision AS $func$

return(zahl1 + zahl2)

$func$

LANGUAGE 'plr';

GRANT EXECUTE ON FUNCTION r_add(double precision, double

precision)

TO normaluser;

Page 48: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Funktionalität

I Aggregations- und Window-Funktionen

I Trigger-Funktionen in R

I Datenbankabfragen, PostgreSQL-Umgebung

I Gleichnamige R-Funktion ohne Funktions-Body einbinden

Beispiel

# Liefert n normalverteilte Zufallszahlen

CREATE FUNCTION rnorm(n integer, mean double precision, sd

double precision)

RETURNS double precision[]

AS �

LANGUAGE 'plr';

Page 49: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Funktionalität

I Aggregations- und Window-Funktionen

I Trigger-Funktionen in R

I Datenbankabfragen, PostgreSQL-Umgebung

I Gleichnamige R-Funktion ohne Funktions-Body einbinden

Beispiel

# Liefert n normalverteilte Zufallszahlen

CREATE FUNCTION rnorm(n integer, mean double precision, sd

double precision)

RETURNS double precision[]

AS �

LANGUAGE 'plr';

Page 50: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Funktionalität

I Aggregations- und Window-Funktionen

I Trigger-Funktionen in R

I Datenbankabfragen, PostgreSQL-Umgebung

I Gleichnamige R-Funktion ohne Funktions-Body einbinden

Beispiel

# Liefert n normalverteilte Zufallszahlen

CREATE FUNCTION rnorm(n integer, mean double precision, sd

double precision)

RETURNS double precision[]

AS �

LANGUAGE 'plr';

Page 51: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Funktionalität

I Aggregations- und Window-Funktionen

I Trigger-Funktionen in R

I Datenbankabfragen, PostgreSQL-Umgebung

I Gleichnamige R-Funktion ohne Funktions-Body einbinden

Beispiel

# Liefert n normalverteilte Zufallszahlen

CREATE FUNCTION rnorm(n integer, mean double precision, sd

double precision)

RETURNS double precision[]

AS �

LANGUAGE 'plr';

Page 52: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Implementierung einer Vorhersagefunktion

Vorbereitungen

I Benötigte Funktionen im R-Interpreter anlegen

einmalig:

Beispiel

select install_rcmd('meinefunktion <-function(x)

{print(x)}

');

permanent: Tabelle plr_modules

I Funktionskontext vs. globaler Kontext

Page 53: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Implementierung einer Vorhersagefunktion

Vorbereitungen

I Benötigte Funktionen im R-Interpreter anlegen

einmalig:

Beispiel

select install_rcmd('meinefunktion <-function(x)

{print(x)}

');

permanent: Tabelle plr_modules

I Funktionskontext vs. globaler Kontext

Page 54: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Implementierung einer Vorhersagefunktion

Vorbereitungen

I Benötigte Funktionen im R-Interpreter anlegen

einmalig:

Beispiel

select install_rcmd('meinefunktion <-function(x)

{print(x)}

');

permanent: Tabelle plr_modules

I Funktionskontext vs. globaler Kontext

Page 55: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Implementierung einer Vorhersagefunktion

Vorbereitungen

I Benötigte Funktionen im R-Interpreter anlegen

einmalig:

Beispiel

select install_rcmd('meinefunktion <-function(x)

{print(x)}

');

permanent: Tabelle plr_modules

I Funktionskontext vs. globaler Kontext

Page 56: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Daten und Modelle in PL/R bringen

I Entwicklung des Modells am DesktopI Speichern: save(objekt, file="/pfad/zu/objekt.Rdata")

I (Übertragung auf den Server oder gemeinsames Dateisystem)

I Laden in den Datenbankserver

I load("/pfad/zu/objekt.Rdata", .GlobalEnv)

I Beim Start aus der plr_modules-Tabelle

Beispiel

for (datafile in Sys.glob("/pfad/*.Rdata")) {

load(datafile, .GlobalEnv)

}

Page 57: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Daten und Modelle in PL/R bringen

I Entwicklung des Modells am DesktopI Speichern: save(objekt, file="/pfad/zu/objekt.Rdata")

I (Übertragung auf den Server oder gemeinsames Dateisystem)

I Laden in den Datenbankserver

I load("/pfad/zu/objekt.Rdata", .GlobalEnv)

I Beim Start aus der plr_modules-Tabelle

Beispiel

for (datafile in Sys.glob("/pfad/*.Rdata")) {

load(datafile, .GlobalEnv)

}

Page 58: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Daten und Modelle in PL/R bringen

I Entwicklung des Modells am DesktopI Speichern: save(objekt, file="/pfad/zu/objekt.Rdata")

I (Übertragung auf den Server oder gemeinsames Dateisystem)

I Laden in den Datenbankserver

I load("/pfad/zu/objekt.Rdata", .GlobalEnv)

I Beim Start aus der plr_modules-Tabelle

Beispiel

for (datafile in Sys.glob("/pfad/*.Rdata")) {

load(datafile, .GlobalEnv)

}

Page 59: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Daten und Modelle in PL/R bringen

I Entwicklung des Modells am DesktopI Speichern: save(objekt, file="/pfad/zu/objekt.Rdata")

I (Übertragung auf den Server oder gemeinsames Dateisystem)

I Laden in den Datenbankserver

I load("/pfad/zu/objekt.Rdata", .GlobalEnv)

I Beim Start aus der plr_modules-Tabelle

Beispiel

for (datafile in Sys.glob("/pfad/*.Rdata")) {

load(datafile, .GlobalEnv)

}

Page 60: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Anwendung des Modells in der Datenbank

Beispiel

CREATE OR REPLACE FUNCTION bicycle_vorhersage(

highway TEXT, maxspeed TEXT, oneway TEXT

) RETURNS TEXT AS $func$

daten <- data.frame(bicycle=NA,

highway=highway, maxspeed=maxspeed, oneway=oneway)

bicycle <- predict(bicycle_mod_modell, newdata=daten)

return(as.character(bicycle))

$func$ LANGUAGE 'plr';

I Anwendung:

Beispiel

select bicycle_vorhersage('residential', '70', 'yes');

no

select bicycle_vorhersage('residential', '30', 'no');

yes

Page 61: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Anwendung des Modells in der Datenbank

Beispiel

CREATE OR REPLACE FUNCTION bicycle_vorhersage(

highway TEXT, maxspeed TEXT, oneway TEXT

) RETURNS TEXT AS $func$

daten <- data.frame(bicycle=NA,

highway=highway, maxspeed=maxspeed, oneway=oneway)

bicycle <- predict(bicycle_mod_modell, newdata=daten)

return(as.character(bicycle))

$func$ LANGUAGE 'plr';

I Anwendung:

Beispiel

select bicycle_vorhersage('residential', '70', 'yes');

no

select bicycle_vorhersage('residential', '30', 'no');

yes

Page 62: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Vorhersage in der Tabelle nachtragen

Beispiel

UPDATE osm_austria_roads

SET bicycle = bicycle_vorhersage(coalesce(highway, 'NA'),

coalesce(maxspeed, 'NA'), coalesce(oneway, 'NA'))

WHERE highway = 'residential'

AND oneway = 'yes'

AND bicycle IS NULL;

Page 63: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Probleme

I character <> factor

I NULL <> NA

I Datenbankzugri� aus PL/R

I allgemein: viel Ausprobieren und Übung

Page 64: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Probleme

I character <> factor

I NULL <> NA

I Datenbankzugri� aus PL/R

I allgemein: viel Ausprobieren und Übung

Page 65: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Probleme

I character <> factor

I NULL <> NA

I Datenbankzugri� aus PL/R

I allgemein: viel Ausprobieren und Übung

Page 66: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

PL/R in PostgreSQL

Probleme

I character <> factor

I NULL <> NA

I Datenbankzugri� aus PL/R

I allgemein: viel Ausprobieren und Übung

Page 67: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Ausblick

Ausblick

I RapidMiner mit PL/Java

I Python-basierte Modelle mit PL/Python

I Direkte Erweiterungen in der Datenbank

I PMML-Unterstützung

Page 68: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Ausblick

Ausblick

I RapidMiner mit PL/Java

I Python-basierte Modelle mit PL/Python

I Direkte Erweiterungen in der Datenbank

I PMML-Unterstützung

Page 69: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Ausblick

Ausblick

I RapidMiner mit PL/Java

I Python-basierte Modelle mit PL/Python

I Direkte Erweiterungen in der Datenbank

I PMML-Unterstützung

Page 70: Analytik in der Datenbank - glt14-programm.linuxtage.at · Analytik in der DB Überblick und Grundlagen Analytik bzw. analytics I Deskriptiv I Prädiktiv I Explorativ I Statistik,

Analytik in der DB

Ausblick

Fragen?

I Balázs Bárány, <[email protected]>


Recommended