Die-Frickler.org

Wir haben Zweigstellen in jeder Nervenheilanstalt!



Washing Machine-Learning

Keine Antwort

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.

Geschrieben von doeme @die-frickler.org

am 1. Juli 2018 um 02:40 Uhr

Antwort schreiben