R: dplyr/sparklyr vs data.table Performance

In ihrem Buch „R for Data Science“ (2017) empfehlen Grolemund und Wickham, data.table anstelle von dplyr zu verwenden, wenn man regelmäßig mit größeren Datensätzen (10 bis 100 GB) arbeitet. Da ich mit Wickhams sparklyr begonnen hatte – R’s Schnittstelle zu Spark im dplyr-Dialekt – wollte ich wissen, wie viel schneller data.table tatsächlich ist. Dies ist kein besonders professioneller Benchmark, da ich nur die Systemzeit vor und nach dem Skript vergleiche, aber er gibt einen Hinweis auf die Vor- und Nachteile beider Ansätze.

sparklyr

Zunächst habe ich einen Spark-Cluster lokal aufgesetzt und die Daten damit verarbeitet:

conf <- spark_config()
conf$spark.executor.memory <- "16G"
conf$spark.yarn.executor.memoryOverhead <- "4g"
conf$spark.memory.fraction <- 0.9
conf$spark.driver.maxResultSize <- "8G"
sc <- spark_connect(master = "local", version = "2.2.1", config = conf)

start_time <- Sys.time()
userDataSet <- spark_read_csv(sc, "country", "/home/tom/huge-file.csv", memory = FALSE)
end_time <- Sys.time()
end_time - start_time
# Time difference of 2.432772 mins

start_time <- Sys.time()
userDataSet <- userDataSet %>% filter(!is.na(Timestamp))
end_time <- Sys.time()
end_time - start_time
# Time difference of 3.437583 mins

data.table

Dann der Vergleich mit data.table:

library(data.table)

start_time <- Sys.time()
userDataSet <- fread("/home/tom/huge-file.csv")
end_time <- Sys.time()
end_time - start_time
# Time difference of 1.954231 mins

start_time <- Sys.time()
userDataSet <- userDataSet[!is.na(Timestamp)]
end_time <- Sys.time()
end_time - start_time
# Time difference of 0.06743789 secs

Fazit

Die Ergebnisse sprechen für sich: data.table ist beim Einlesen der Datei vergleichbar schnell wie sparklyr, bei der Filteroperation jedoch dramatisch überlegen – Sekunden statt Minuten. Für lokale Datensätze im Bereich von 10–100 GB ist data.table klar die bessere Wahl. sparklyr lohnt sich vor allem dann, wenn man auf ein echtes verteiltes Spark-Cluster zugreifen kann oder die dplyr-Syntax zwingend benötigt.

Website Analyzer

Claude Code erlaubt es mir, sehr schnell Applikationen zu basteln, auch solche, die ich immer mal bauen wollte, aber angesichts der zu investierenden Zeit jahrelang auf meiner To Do-Liste hatte. In diesem Fall geht es aber noch ein bisschen weiter, weil ich erst Google Gemini gebeten hatte, eine SWOT-Analyse zu ScreamingFrog zu erstellen und dann einen Prompt zu schreiben, der es mir mit Claude Code ermöglicht, eine bessere App zu bauen. Noch sind nicht alle Features drin. Aber so ist eine native macOS-App zum Crawlen, Analysieren und Überwachen von Websites entstanden, der Website Analyzer. Download gibt es auf Anfrage 🙂

Und das macht die App:

Weiterlesen

Large Language Modelle lokal mit R nutzen

Wenn es um Large Language Models (LLMs) geht, gibt es Momente, in denen ich mich frage: Muss ich meine Daten wirklich einmal um den halben Globus zu OpenAI schicken, nur um eine Zusammenfassung zu bekommen? Mit Ollama gibt es mittlerweile einen Standard, um Modelle wie Llama 3 oder Mistral lokal laufen zu lassen. Diese Modelle können direkt aus R gesteuert werden. Das spart nicht nur Geld, sondern löst auch das Datenschutz-Problem ziemlich elegant. In diesem Artikel geht es darum, wie man das in R am besten umsetzt. Spoiler: Es gibt nicht den einen Weg, sondern (mindestens) zwei sehr gute Pakete mit völlig unterschiedlichen Philosophien.

Weiterlesen

Stacked Area Chart: Visualisierung von Investments und Kreditausfällen

Dies ist eher eine kleine Programmierübung gewesen, auch weil ich wissen wollte, wie sich das eigentlich so entwickelt hat mit der steigenden Anzahl von Projekten, die in Einholung gegangen sind.

Die Daten dafür kann man relativ einfach auf der Website runterladen, sie müssen allerdings transformiert werden. Das Problem hier ist, dass die Daten pro Projekt vorhanden sind und wir für das Stacked Area Chart die Daten so transformieren müssen, dass sie pro Monat vorliegen.

Weiterlesen

Der BMI ist kein Gesundheitsmaß – sondern ein statistisches Relikt

Vor kurzem las ich Jordan Ellenbergs How Not to Be Wrong. The Power of Mathematical Thinking. Darin beschreibt er die Fallstricke der linearen Regression, unter anderem am Beispiel des Artikels Will all Americans become overweight or obese?. Laut diesem Paper werden bis 2048 alle Amerikaner übergewichtig oder adipös sein. Das klingt dramatisch – ist aber statistisch unsinnig. Die zugrundeliegende Regression ignoriert, dass mit zunehmender Zahl an Übergewichtigen immer weniger Schlanke übrig bleiben, die „konvertieren“ könnten. Wenige Jahre nach der Veröffentlichung des Artikels zeigte sich, dass die Zunahme des Übergewichts natürlich nicht linear, sondern logistisch verläuft – sie flacht ab, weil Bevölkerungen keine unendlichen Prozesse kennen.

Weiterlesen

Kann man Säulendiagramme und kumulative Linien kombinieren?

Bisher wäre ich nicht auf eine solche Idee gekommen, aber das Handelsblatt hat das vor kurzem einmal versucht, so dass ich seitdem darüber grüble, ob das eine gute oder eher eine ganz schlechte Idee ist. ChatGPT war so nett, die Grafik einmal zu übersetzen; es ist nicht alles korrekt wiedergegeben, aber uns geht es hier nicht um die Genauigkeit der Daten, sondern um den Visualisierungsansatz. Ganz grob zusammengefasst geht es um Partnerschaften zwischen der Öffentlichen Hand und Privatkapital.

Zur Erinnerung: Eine Datenvisualisierung soll dem Leser das Verständnis eines Sachverhalts erleichtern. Idealerweise bringt eine Visualisierung auch eine Intention mit, sie soll etwas beinhalten, das unsere Meinung ändert oder schärft oder uns sogar zu einer Handlung ermutigt. Was davon erfüllt diese Visualisierung?

Weiterlesen

Ray Ban Meta-Brille mit Künstlicher Intelligenz: Lohnt sie sich?

Ich wie ich versuche ein möglichst cooles Foto von mir mit der Brille zu erstellen

Ich war einer der ersten Nutzer von Google Glasses in Deutschland, da ich damals zufällig bei Google arbeitete und die Dinger von meinem damaligen Chef bekam. Der Coolness-Faktor war größer als die Nützlichkeit, denn der Akku hielt nicht besonders lange, wenn man die Brille nutzte. Und war es wirklich wichtig, Mails auf dem kleinen Screen zu lesen? Nicht wirklich. Warum also überhaupt so eine Brille?

Die Ray Ban Meta-Brille vereint eine Kamera mit Kopfhörern und Meta AI. Das Killer-Feature ist für Menschen mit Seheinschränkungen wahrscheinlich die Möglichkeit, dass die Meta KI beschreibt, was die Kamera aufnimmt (siehe das Video ganz unten). Das habe ich bisher nur ausprobiert bei Pflanzen im Botanischen Garten, und die Ergebnisse sind tatsächlich gut, wenn auch nicht immer richtig.

Weiterlesen

Wie man aus Webanalysedaten automatisch Aktionen generiert

Dieser Talk ist schon ein paar Monate alt, aber ich hatte vergessen, ihn hier zu veröffentlichen. Er behandelt mein Peer-reviewtes akzeptiertes Paper „Bridging the Analytics Gap: Optimizing Content Performance using Actionable Knowledge Discovery“ für die HT ’24. Das Paper kann unter Proceedings of the 35th ACM Conference on Hypertext and Social Media eingesehen werden.

Welche Visualisierung für welche Daten?

Daten, Informationen und die daraus zu ziehenden Erkenntnisse zu kommunizieren ist eine wichtige Kompetenz. Datenvisualisierungen sollen es dem Empfänger ermöglichen, Sachverhalte schneller zu verstehen, und so ist es notwendig, dass die Visualisierungsform ausgewählt wird, die das am besten ermöglicht. Auch wenn Microsoft Excel ein Tortendiagramm vorschlägt, so ist es häufig nicht die beste Option, wie man links sieht 🙂

An der Uni wie auch im Job habe ich ständig mit Datenvisualisierungen zu tun. Um die Nerven aller zu schonen, habe ich eine Übersicht gebastelt, inspiriert von der Arbeit von A. Abela:

Die Übersicht wird ständig von mir aktualisiert. Wenn Du Interesse hast, dann melde Dich bei meinem Newsletter an und erhalte sofort die Übersicht (und einmal im Monat ein Update dazu).