Washing Machine-Learning
Weiterführender Blogeintrag zu LaundrySorcery, oder: seit wann fällt eigentlich Ethernet aus unserer Waschmaschine?
Schöne Daten haben Sie da. Wäre ja zu schade, wenn diese nicht benutzt würden…
In der Tat.
K-Means
Die Waschmaschine hat mehrere Programme. Diese dauern alle unterschiedlich lange. Zusätzlich erschwerend: Je nach Füllmenge der Waschmaschine dauern die Programme unterschiedlich lange!

Dauer verschiedener Waschgänge. Wer eine bessere Möglichkeit kennt, eindimensionale Dinge zu Plotten möge sich bei mir melden. Danke! Errata: Dauer in Stunden, nicht Sekunden.
Nun, dieses Problem schreit gerade zu nach K-Means clustering! Leider gibt das noch ein weiteres Problem: wir kennen die Anzahl der Cluster nicht. Daher fangen wir mit k=1 an, und inkrementieren die Clusterzahl so lange, bis die Cluster eine „hinreichend“ kleine Varianz haben.

Die Cluster der Waschgänge.
Dauern überhalb von 5h wurden als fehlerhaft verworfen.
Eine zusätzliche Information in den Clustern ist die A-Priori Wahrscheinlichkeit, dass das zugehörige Programm ausgewählt wurde.
Schätzung der Dauer
Wir können nun relativ einfach die wahrscheinlichste Dauer eines Waschgangs ermitteln:
P[C=i] ist hierbei die A-Priori Wahrscheinlichkeit, die wir dank der Grösse der Cluster bereits kennen, µ_i sind die Zentren (i.e. Mittelwerte) der Cluster. Dieser Wert ist auch genau der Erwartungswert der Zeitdauer.
Da geht doch noch was
Ja. Ein bisschen. Wir wissen, wie lange die Maschine schon gelaufen ist, ohne dass das Programm fertig wurde. Wir können die Schätzung dementsprechend anpassen:
Diesen Ausdruck können wir dann unter Anwendung des Satz von Bayes auswerten.
Implementierung
Das Clustering sind hundert Zeilen D-Code, die per Cron-Job täglich ausgeführt werden.
Die Schätzung der Waschdauer wird per Javascript auf dem Endgerät durchgeführt:

Screenshot der Schätzfunktion
Zusätzlich wurde hier noch ein Schätzer für den derzeit aktiven Cluster gebaut.
Natürlich ist die Schätzung ziemlich schlecht, da wir nicht wissen, welches Programm ausgewählt wurde. Spass hat es trotzdem gemacht, und basierend auf den Daten ist die Schätzung sogar optimal!
Nachtrag
Der Code ist unter http://xatko.vsos.ethz.ch/git/LaundrySorcery/ auffindbar.