EN DE

Messdatenauswertung in OnlyOffice — fire and forget

Mein NLP-Solver-Plugin für OnlyOffice hat einen zweiten Modus bekommen: PolyFit. Während der klassische Solver eine bekannte Zielfunktion voraussetzt und nur deren Parameter anpasst, sucht PolyFit die Formel selbst. Anwendungsfall: Messdatenauswertung, wenn kein theoretisches Modell vorliegt.

Der typische Fall: Daten ohne Modell

In der Praxis sieht es oft so aus: Es gibt einen Prüfstand, ein Versuchsaufbau, eine Sensor-Reihe — und am Ende eine Tabelle mit Eingangsgrößen x1, x2, x3, … und einer Zielgröße y. Was fehlt, ist die Formel dazwischen. Das theoretische Modell ist entweder nicht bekannt, zu komplex für die geforderte Genauigkeit, oder schlicht unpraktisch im Alltag.

Klassischerweise greift man dann zur Regression. In Excel oder OnlyOffice geht das mit einer Variablen halbwegs ordentlich, mit mehreren Variablen wird es schon umständlich, und sobald man sich für eine konkrete Funktionsform entscheiden muss (y = a·x + b? y = a·x² + b·x + c? y = a/x + b·x²?), beginnt das Raten. Man probiert ein paar Ansätze, sieht sich das Bestimmtheitsmaß an, entscheidet aus dem Bauch heraus.

PolyFit dreht den Spieß um: Statt der Anwender legt der Algorithmus die Funktionsform fest. Er probiert systematisch alle Polynomkombinationen im definierten Gradbereich durch und liefert die Formel mit der besten Anpassung — Struktur und Koeffizienten in einem Durchgang.

💡 Was PolyFit anders macht

Der klassische Solver-Modus geht davon aus, dass die Funktion f(x1, x2, x3, …) bekannt ist und nur deren Parameter angepasst werden müssen. PolyFit behandelt die Funktion selbst als unbekannt. Gefittet werden also sowohl die Struktur des Polynoms als auch dessen Koeffizienten.

Fire and forget

Das Prinzip ist bewusst niedrigschwellig: Eingangsspalten markieren, Zielspalte markieren, Gradbereich angeben, Start drücken. Der Rest läuft. Wer die Daten kennt, weiß ungefähr, welcher Gradbereich sinnvoll ist — alles andere ist Suchaufwand, der sich automatisieren lässt.

Das ist auch der Grund, warum der Algorithmus bewusst so direkt gehalten ist. Statt symbolische Regression mit Operatoren-Bäumen und genetischen Algorithmen zu bauen, beschränkt sich PolyFit auf den Polynomraum. Der ist begrenzt genug, um ihn systematisch durchsuchen zu können, und ausdrucksstark genug, um die meisten glatten Zusammenhänge in technischen Daten gut zu beschreiben. Negative Exponenten sind erlaubt — damit lassen sich auch Sättigungs- und Hyperbel-artige Verläufe abbilden, ohne die Komplexität in den Algorithmus zu ziehen.

Die Beschränkung auf Polynome hat noch einen weiteren, oft übersehenen Vorteil: Sie erhält potentiell die Dimensionsechtheit. Sehr viele physikalische Formeln sind einheitenecht aufgebaut — jede Seite der Gleichung trägt dieselbe physikalische Dimension. Bei einer Polynomstruktur lässt sich das durch passende Wahl der Exponenten sauber durchziehen: Wenn x1 in Metern und x2 in Sekunden gemessen wird, ergibt x1²·x2⁻¹ eine Geschwindigkeit ins Quadrat, mit klar definierter Einheit. Funktionsformen wie sin(x), log(x) oder hingegen sind nur für dimensionslose Argumente sauber definiert — sobald sie als beliebige Bausteine in einer Regression auftauchen, ist die Einheitenechtheit zwangsläufig zerstört.

✅ Bewusste Beschränkung

Polynome decken den Großteil der technisch interessanten Zusammenhänge ab. Wer eine Exponentialfunktion oder einen Logarithmus erwartet, ist mit PolyFit am falschen Ort — wer eine robuste, dimensionsechte und schnell auswertbare Näherung braucht, ist genau richtig.

Das Ergebnis ist eine ganz normale Zellformel

Hier kommt der Punkt, der PolyFit von einem reinen Analyse-Tool unterscheidet. Das Ergebnis ist keine Black Box, kein Modellobjekt, keine externe Funktion — es ist eine fertige Polynomformel als Text, die sich direkt in eine Zelle einfügen lässt. Zum Beispiel:

-0.1300·x2⁻¹·x3² + 1.5252·x1²·x3 + 0.8147·x1 + …

Das Fitten selbst kann je nach Datenmenge und Suchraum spürbar dauern — das ist der Preis dafür, dass im Hintergrund tatsächlich ein großer Suchraum systematisch ausgewertet wird. Aber das passiert einmal. Das Ergebnis ist danach eine algebraische Formel ohne Zustand, ohne Lookups, ohne Iteration: Werte einsetzen, ausrechnen, fertig.

Damit eignet sich PolyFit gut als Vorstufe für Auslegungs- und Echtzeitsoftware. Die langsame, einmalige Modellbildung passiert offline. Was in der späteren Anwendung übrig bleibt, ist eine Polynomauswertung — also einer der schnellsten Rechenoperationen überhaupt. Egal ob die Formel anschließend in einer Zellrechnung, in einer Konfigurations-App oder in einem eingebetteten System läuft: die Laufzeit ist konstant und vernachlässigbar.

Performance: WASM oder nativer Service

Das Plugin selbst läuft als WebAssembly im OnlyOffice-Editor — geschrieben in Go, kompiliert nach WASM. Das funktioniert für die meisten Datensätze gut. Wenn Suchraum oder Datenmenge größer werden, wird WASM aber spürbar zum Engpass: Single-Thread, sandboxed, mit dem entsprechenden Overhead beim Übergang zwischen JavaScript und WASM.

Deshalb gibt es zusätzlich einen nativen Service: dasselbe Go-Programm, kompiliert als gewöhnliche Binary für Linux, Windows und macOS, jeweils amd64 und arm64. Gestartet wird er per Doppelklick oder Terminal, er hört auf einem lokalen Port (Default 8081) und stellt eine kleine HTTP/JSON-API bereit. Im Plugin lässt sich „Use Native“ aktivieren — und die Berechnung läuft nicht mehr im Editor, sondern im nativen Prozess. Mit allem, was das mit sich bringt: voller CPU-Zugriff, keine WASM-Bridge, keine Sandbox.

Der Service ist optional. Wer ihn nicht will, ignoriert ihn — das Plugin funktioniert auch ohne. Wer ernsthaft mit größeren Datenmengen arbeitet, wird die ZIP einmal entpacken und die Binary laufen lassen.

Anleitung und Download

Eine Schritt-für-Schritt-Anleitung, Beispieldateien und die aktuellen Downloads habe ich auf der Projektseite zusammengestellt. Der Code ist unter AGPL-3.0 verfügbar, mit zusätzlichen kommerziellen Einschränkungen.

Wer einen konkreten Datensatz oder ein konkretes Auswertungsproblem hat und sehen will, ob PolyFit darauf passt: gerne melden. Genau solche Fälle sind die besten Testkandidaten, und ich entwickle den Solver entlang realer Probleme weiter.