Oracle R Enterprise Detlef E. Schröder Oracle DWH Community STCC DB Mitte @DetEgbSchroeder, http://www.oracledwh.de
Themen Warum R Die R-Entwicklungsumgebung Oracle R- Enterprise Der transparente Tabellen-Zugriff Statistische Analysen mit R in der Datenbank Visualisierung von Ergebnissen (Plotting) Visualisierung von Ergebnissen (OBIEE) Einbinden in umfangreiche Analyse-Szenarien
Warum sollte man sich für R interessieren Gehört zu den neuen aufkommenden Trends Next big thing in Avanced Analytics Moderne statistische Programmiersprache Ausbildungsinstitute und Universitäten nutzen R für die Ausbildung (Sie ersetzen traditionelle Tools) Advanced Analytics ist zunehmend kritisches Unterscheidungsmerkmal im DWH Technologie Stack R wird durch Oracle R Enterprise skalierbar Kostengünstige Alternative zu SAS
Graphische Bediener-Oberflächen Auswahl bei den GUIs Bereiche: R Console Plot-Bereich Ergebnis-Bereich Messages Standard GUI / Rstudio / Rcommander/.../...
Daten-Visualisierung mit R http:// gallery.r-enthusiasts.com/
Oracle R Enterprise Oracle Advanced Analytics - Oracle R Enterprise and Oracle Data Mining R code und/oder SQL Modelle laufen In-Database Große Datenmengen Built-in security
Oracle R-Angebote Oracle R Distribution Free download, pre-installed on Oracle Big Data Appliance, bundled with Oracle Linux Enterprise support for customers of Oracle R Enterprise, Big Data Appliance, and Oracle Linux Contribute bug fixes and enhancements to open source R ROracle Open source Oracle database interface driver for R based on OCI Maintainer is Oracle rebuilt from the ground up Many bug fixes and optimizations Oracle R Enterprise Transparent access to database-resident data from R Embedded R script execution through database managed R engines Statistics engine Oracle R Connector for Hadoop R interface to Oracle Hadoop Cluster on BDA Access and manipulate data in HDFS, database, and file system Write MapReduce functions using R and execute through natural R interface
Mögliche Szenarien mit Oracle R-Enterprise File System R Engine Direkten Zugriff auf alle Tabellen in der Datenbank File System R Engine Auslagern der Analysen in die Datenbank Zurückholen der Ergebnisse Anlegen neuer Objekte in der Datenbank Parallelisierung durch die Datenbank R Engine R R Engine Engine R Engine R Engine R-Analysen über SQL-Funktionen (Batch) File System SQL Parallelisierung durch die Datenbank R Engine R R Engine Engine R Engine
Oracle R Enterprise Data Sources Andere Datenbanken Direkter Zugriff RODBC, DBI, etc Oracle Datenbank R Engine Oracle R Enterprise packages Push Pull Results SQL Transparent Layer Andere R Packages R user on desktop Parallel Aufrufe Select...Fro..Table(...) User tables begin Create Function Database Links end Bulk import External Tables Andere Datenbanken File systems Direkter Zugriff Import / Load Data R R Engine R Engine Engine File systems Oracle R Enterprise Andere R packages Oracle R Enterprise Other R packages Oracle R Enterprise Packages packages Other R packages packages
Transparency Layer Support ORE bietet eine in-database execution Funktionalität als transparente Schicht an What s transparent about it? R Benutzte benötigen nur R Syntax Benutzer sehen Datenbank-Objecke as spezielle R Objekte Unterstützt weden fast alle R-Funktionen des Basis-Pakets Unterstützt R's Statistik und Graphik-Pakete Funktional vergleichbar mit SAS DATA STEP, läuft allerdings in-datenbank!
Statistische & Analytische Fkt. (kostenfrei) Statistics Ranking functions rank, dense_rank, cume_dist, percent_rank, ntile Window Aggregate functions (moving and cumulative) Avg, sum, min, max, count, variance, stddev, first_value, last_value LAG/LEAD functions Direct inter-row reference using offsets Reporting Aggregate functions Sum, avg, min, max, variance, stddev, count, ratio_to_report Statistical Aggregates Correlation, linear regression family, covariance Linear regression Fitting of an ordinary-least-squares regression line to a set of number pairs. Frequently combined with the COVAR_POP, COVAR_SAMP, and CORR functions Pattern Matching Descriptive Statistics DBMS_STAT_FUNCS: summarizes numerical columns of a table and returns count, min, max, range, mean, median, stats_mode, variance, standard deviation, quantile values, +/- n sigma values, top/bottom 5 values Correlations Pearson s correlation coefficients, Spearman's and Kendall's (both nonparametric). Cross Tabs Enhanced with % statistics: chi squared, phi coefficient, Cramer's V, contingency coefficient, Cohen's kappa Hypothesis Testing Student t-test, F-test, Binomial test, Wilcoxon Signed Ranks test, Chi-square, Mann Whitney test, Kolmogorov-Smirnov test, One-way ANOVA Distribution Fitting Kolmogorov-Smirnov Test, Anderson-Darling Test, Chi-Squared Test, Normal, Uniform, Weibull, Exponential
Oracle Data Mining Algorithmen Probleme Algorithmen Anwendung Classification Regression Anomaly Detection Attribute Importance Association Rules Clustering Feature Extraction A1 A2 A3 A4 A5 A6 A7 F1 F2 F3 F4 Logistic Regression (GLM) Decision Trees Naïve Bayes Support Vector Machine Multiple Regression (GLM) Support Vector Machine (SVM) One Class SVM Minimum Description Length (MDL) Principal Components Analysis (PCA) Apriori Hierarchical K-Means Hierarchical O-Cluster Expectation-Maximization Clustering Nonnegative Matrix Factorization Singular Value Decomposition (SVD) Classical statistical technique Popular / Rules / transparency Embedded app Wide / narrow data / text Classical statistical technique Wide / narrow data / text Lack examples of target field Attribute reduction Identify useful data Reduce data noise Market basket analysis Link analysis Product grouping Text mining Gene and protein analysis Text analysis Feature reduction
Arbeiten mit Tabellen in der Datenbank
OREeda Package Functions exploratory data analysis ore.corr ore.crosstab ore.freq ore.lm ore.rank ore.sort ore.summary ore.univariate Lokale R-Engine auf PC Oracle Datenbank DB Memory R Memory auf auf R-Engine auf DB-Server Die Abarbeitung im Memory der Datenbank ist schneller als im Memory der R Engine auf dem Server DB-Server-Maschine
Gezieltes Ansteuern einer Verarbeitungsvariante (Beispiel Regressions Modell) mod <- ore.doeval( function(param) { library(ore) ore.connect(user="rquser", password="rquser, sid="orcl", host="192.168.1.16",port=1521) ore.sync() ore.attach() mod <- lm(arrdelay ~ DISTANCE + DEPDELAY, dat) return (mod) }); mod_local <- ore.pull(mod) class(mod_local) summary(mod_local) Daten bleiben im Memory Der Oracle Datenbank Laufzeit: 3 Sekunden mod <- ore.doeval( function(param) { dat <- ore.pull(ontime_s) mod <- lm(arrdelay ~ DISTANCE + DEPDELAY, dat) return( mod ) }); mod_local <- ore.pull(mod) class(mod_local) summary(mod_local) Daten im Memory der R-Engine auf dem DB-Server Laufzeit: 110 Sekunden
Funktionen und Prozeduren in der Datenbank
Aufrufen von R-Scripten über SQL-Statements komplett in der Datenbank (sys.rqscriptcreate) select * from table(rqeval(null, 'select 1 id, 1 res from dual', 'Example1')); Oracle Datenbank Select * from Table() DB Memory R Memory auf auf R-Engine auf DB-Server DB-Server-Maschine begin sys.rqscriptcreate('example1, 'function() { ID <- 1:10 res <- data.frame(id = ID, RES = ID / 100) end; / res}');
Visualisieren von Ergebnissen (Plotting)
Einbinden von R in umfangreichere Analyse-Szenarien
Integrierte R Umgebung Oracle R Advanced Analytics for Hadoop Native Spark Native R MapReduce Native R HDFS Zugriff Client Host R Engine ORAAH ORE Oracle Big Data Appliance R Engine ORAAH Oracle Exadata Mehr Produktivität Hadoop Cluster Software MapReduce Nodes HDFS R Engine ORE
Geoanalyse in 5 Minuten Teil I Kundenwohnorte visualisieren
library(ore) ore.connect(user = "rquser", password="welcome1",host="localhost", port=1521, service_name="orcl") ore.sync() ore.ls() lore.attach()l ibrary(maps) europa<-map("world",lwd=0.5,mar=c(0.1,0.1,0.1,0.1)) plot (europa, type="l",lwd=3, xlim=c(-5,19),ylim=c(45,61),asp=1) D_KUNDE_2$GEHALTD_KUNDE_2_2 <- D_KUNDE_2[D_KUNDE_2$GEHALT>20000,] D_KUNDE_2_1 <- D_KUNDE_2[D_KUNDE_2$GEHALT<20000,] points(d_kunde_2_2$laenge, D_KUNDE_2_2$BREITE,col="green",lwd=1) points(d_kunde_2_1$laenge,d_kunde_2_1$breite,col="red",lwd=1) points(10,52,col="red",lwd=3) ore.disconnect() 24
Geoanalyse in 5 Minuten Teil II Zensus Auswertung auf Kreisebene
# Download der Pakete und deren Aufruf in R library(maptools) Zusammen=merge(Kreise@data,zensus2, by= "RS",all.x=TRUE) Zusammen=Zusammen[order(Zusammen$OBJECTID), ] library(rgdal) library(maps) library(rcolorbrewer) library(shapefiles) # Auswahl der Kombination Anteil der Erwerbslosen an den Erwerbstätigen plotvar <- (Zusammen$Zensus_M)/(Zusammen$Zensus_EWZ) nclr <- 6 # sechs Kategorien vergeben plotclr <- brewer.pal(nclr,"greens") # Blues, Reds... # Einlesen der Daten: alle Geodaten der.zip Datei müssen im gleichen Ordner vorhanden sein colornum <- cut(plotvar2, nclr, labels=false) Kreise <- readshapespatial("c:/users/deschroe/downloads/vg250_kreise") unique(kreise$ags) # Einlesen der Zensusdaten und filtern auf Kreisebene (Satzart=40, formatieren des AGS) ########### Erstellen der Grafik plot(kreise,axes=false,border="black",col=colorcode) zensus=read.csv2("c:/users/deschroe/downloads/zensus.csv") zensus2=data.frame(zensus[zensus$satzart==40,]) zensus2$ags=formatc(zensus2$ags, width = 5, focrmat = "d", flag = "0") names(zensus2)[2]="rs 26
2011 Oracle All Rights Copyright Reserved 2014 Oracle and/or its affiliates. All rights reserved.