Am 21. und 22. Mai hatte ich die Ehre, an der rOpenSci Unkonferenz in Seattle teilnehmen zu dürfen. Es war ein großartiges Event, bei dem ich viele tolle Menschen kennenlernen konnte. Hier berichte ich über das Event und das Projekt, an dem ich dort gearbeitet habe: TensorFlow Probability in R & das „greta“-Paket.
rOpenSci
rOpenSci ist eine gemeinnützige Organisation, die eine Reihe von R-Paketen verwaltet und sehr aktiv den Gemeinschaftsgeist rund um die R-Welt fördert. Ihre zentralen Werte sind offene und reproduzierbare Forschung, Daten offen zugänglich zu machen, einfach zu bedienende Tools für Datenanalysen zu schaffen und all dies einer großen Anzahl an Menschen zugänglich zu machen.
rOpenSci Unkonferenz
Die jährliche Unkonferenz trägt dazu bei, eine welt- und diversitätsoffene Infrastruktur für die Community zu schaffen. Bei der Konferenz treffen etwa 60 eingeladene Gäste aus der ganzen Welt zusammen, um an kleinen Projekten zu arbeiten, die derzeit für die R-Community relevant sind. Ideen für Projekte werden in den Wochen vor der Unkonferenz auf GitHub gesammelt und diskutiert, aber die endgültige Entscheidung, an welchen Projekten gearbeitet wird, wird von den Teilnehmern am ersten Morgen der Unkonferenz getroffen.
Die diesjährige rOpenSci Unkonferenz fand im Microsoft-Reactor in Seattle statt.
Das gesamte Organisationsteam – allen voran Stefanie Butland – hat diese Veranstaltung hervorragend organisiert. Die gesamte Gruppe trug dazu bei, dass der Spirit der Unkonferenz für alle von Anfang an sehr offen und inklusiv war, von den Alteingesessenen bis hin zu Neulingen.
Wir waren eine ziemlich heterogene Gruppe von Sozialwissenschaftlern, Bioinformatikern, Ökologen, Historikern, Data Scientisten, Entwicklern, Mitarbeitern von Google, Microsoft und RStudio sowie R-Enthusiasten aus vielen anderen Bereichen. Einige Leute kannten sich bereits, viele kannten sich von Twitter, den R-Ladies oder anderen Online-Communities, aber die meisten von uns (einschließlich mir) hatten sich noch nie persönlich getroffen. Deshalb wurde der offizielle Teil der Unkonferenz am Montagmorgen mit einigen „Eisbrechern“ begonnen: Stefanie stellte eine Frage oder machte eine Aussage und wir positionierten uns entsprechend unserer Antwort im Raum und diskutierten mit den umstehenden Menschen. Beginnend mit „Seid ihr ein Hunde- oder Katzenmensch?“ und abschließend mit „Ich kenne meinen Platz in der R-Community“, hatten wir alle schnell viel zu diskutieren – eine großartige Möglichkeit, viele der Leute kennenzulernen, mit denen wir die nächsten zwei Tage verbringen würden!
Es war toll, mit so vielen talentierten und motivierten Menschen zusammenzuarbeiten, die meine Leidenschaft für die Sprache R teilen – besonders weil sich die Mehrheit der aktiven R-Community im pazifischen Nordwesten und in Kalifornien befindet. Es war eine ganz neue Erfahrung, mit anderen Leuten an einem R-Projekt zusammenzuarbeiten und ich war mehr als begeistert!
Unser TensorFlow Probability / greta-Projekt
Während der 2-tägigen Unkonferenz wurde an vielen interessanten, nützlichen und coolen Projekten gearbeitet: hier ist die komplette Liste mit Links zu den einzelnen Projekten auf GitHub. )
Die Gruppe, der ich beigetreten bin, wollte ursprünglich TensorFlow Probability in R integrieren.
TensorFlow Probability is a library for probabilistic reasoning and statistical analysis in TensorFlow. As part of the TensorFlow ecosystem, TensorFlow Probability provides integration of probabilistic methods with deep networks, gradient-based inference via automatic differentiation, and scalability to large datasets and models via hardware acceleration (e.g., GPUs) and distributed computation.
https://github.com/tensorflow/probability
Letztendlich haben wir – das waren Michael Quinn, David Smith, Tiphaine Martin, Matt Mulvahill und ich – mit dem R-Paket greta gearbeitet, das ähnliche Funktionalitäten wie TensorFlow Probability bietet. Wir haben einige der Beispiele aus den Tutorials der TensorFlow Probability Bibliothek in greta erstellt und einige zusätzliche Beispiele entwickelt , die zeigen, wie man greta verwenden kann.
Was ist greta?
greta ist ein R-Paket, das von Nick Golding für die Implementierung von Markov-Chain-Monte-Carlo-(MCMC-)Modellen, z. B. Hamiltonian Monte Carlo (HMC), entwickelt wurde. Es bietet eine Reihe von Funktionen, die das Definieren dieser Modelle erleichtern, insbesondere für Bayesian-Statistiken (ähnlich wie Stan).
greta lets us build statistical models interactively in R, and then sample from them by MCMC.
https://greta-dev.github.io/greta/get_started.html#how_greta_works
Googles TensorFlow wird als Backend zur Berechnung der definierten Modelle verwendet. Da TensorFlow für große Modelle optimiert wurde und auch Multi-Core- und GPU-Berechnungen unterstützt, ist greta besonders effizient und nützlich für die Arbeit mit komplexen Modellen. Da TensorFlow ursprünglich kein R-Paket ist, verwendet greta die reticulate und tensorflow Pakete von RStudio, um eine Verbindung mit dem TensorFlow-Backend herzustellen. Auf diese Weise können wir mit allen TensorFlow-Funktionen direkt von R aus arbeiten.
Wie funktioniert greta?
Dies ist das minimale Arbeitsbeispiel des linear gemischten Modells, das wir mit greta entwickelt haben und auf einem Beispiel eines TensorFlow Probability Jupyter Notebooks basiert. Das vollständige Beispiel mit Erklärungen ist hier zu finden.
library(greta)
# data
N <- letters[1:8]
treatment_effects <- c(28.39, 7.94, -2.75 , 6.82, -0.64, 0.63, 18.01, 12.16)
treatment_stddevs <- c(14.9, 10.2, 16.3, 11.0, 9.4, 11.4, 10.4, 17.6)
# variables and priors
avg_effect <- normal(mean = 0, sd = 10)
avg_stddev <- normal(5, 1)
school_effects_standard <- normal(0, 1, dim = length(N))
school_effects <- avg_effect + exp(avg_stddev) * school_effects_standard
# likelihood
distribution(treatment_effects) <- normal(school_effects, treatment_stddevs)
# defining the hierarchical model
m <- model(avg_effect, avg_stddev, school_effects_standard)
## greta model
plot(m)
Der Haupttyp von Objekten, mit denen in greta gearbeitet wird, ist der greta Array. Man kann greta Arrays neu erstellen oder andere R-Objekte, wie Data Frames, in greta Arrays konvertieren. greta Arrays sind im Grunde eine Liste mit einem Element: ein R6-Klassen-Objekt mit einem Knoten + Daten, Operationen oder Variablen. Auf diese Weise nutzt greta die graphenbasierte Organisation der Modellierung. Jeder Knoten in unserem Modellgraphen stammt von einem greta Array und verbindet somit Knoten, Variablen, Daten und Operationen, um einen gerichteten azyklischen Graphen (DAG) zu erzeugen, der das Modell definiert, wenn die model() Funktion aufgerufen wird.
TensorFlow Probability
TensorFlow Probability ist kein Teil des TensorFlow-Kernpakets, weshalb wir das tensorflow-R-Paket nicht nutzen konnten. Stattdessen haben wir jedoch das reticulate-Paket genutzt, um Python-Module (alias Bibliotheken) in R zu importieren und dort zu benutzen. Auf diese Weise konnten wir die ursprünglichen Funktionen aus der tensorflow_probability Python-Bibliothek in R verwenden.
Zum Beispiel konnten wir so mit den Edward2-Funktionalitäten von TensorFlow Probability arbeiten.
Edward is a Python library for probabilistic modeling, inference, and criticism. It is a testbed for fast experimentation and research with probabilistic models, ranging from classical hierarchical models on small data sets to complex deep probabilistic models on large data sets. Edward fuses three fields: Bayesian statistics and machine learning, deep learning, and probabilistic programming. […] Edward is built on TensorFlow. It enables features such as computational graphs, distributed training, CPU/GPU integration, automatic differentiation, and visualization with TensorBoard. http://edwardlib.org/
Dankesworte am Schluss
Ein großes Dankeschön geht an mein tolles greta-Team und an rOpenSci – insbesondere an Stefanie Butland – für die Organisation eines so wunderbaren Events!
Ebenfalls geht ein großes Danke an alle Sponsoren, die es mir ermöglicht haben, in den pazifischen Nordwesten zu fliegen und an der Unkonferenz teilzunehmen!
A sincere thank you to all participants in #runconf18
This thread?includes links to all project repos: https://t.co/2PhAz4zSuK #rstats pic.twitter.com/8SICcWkQ0v
— rOpenSci (@rOpenSci) May 25, 2018
—
Dieser Artikel ist im Original auf meinem privaten Blog erschienen.
Weitere Beiträge
von Shirin Elsinghorst
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Shirin Elsinghorst
Team Lead & Consultant Data/AI
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.