NEWS
Machine Learning (KI) für IOBroker denkbar?
-
Ich wollte mal eine Diskusion anstossen, ob ihr es für möglich haltet (vernüftige Hardware vorusgesetzt), dass man ein KI Modul für IO Broker entwickelt.
Eigentlich ist doch eine Hausautomation mit ihren zig Sensorwerten und Aktionsmöglichketen für maschinelles Lernen predestiniert.
Ich habe z.b. eine Steuerung für den Rolladen im Sommer die von zig Parametern abhängig ist (Temp. aussen/innen, Helligkeit, Sonnenstand, Jahreszeit,.....)
Statt jetzt einen aufwendigen Alogrithmus zu schreiben wann denn welcher Rolladen wie tief heruntergeht, wäre es doch toll, wenn der IOBroker "lernen" könnte wann man welchen Rolladen wie tief herunter haben möchte.Ich denke mir das so, dass man in einem Einlern-Prozess jedesmal wenn er den Rolladen runterfährt (oder eben nicht) ihn korrigiert, bis er selbständig keine Fehler mehr macht.
Ist sowas denkbar? Ich kann mir vorstellen, dass der Lernvorgang auf einer dicken Maschine vorgenommen werden müsste, aber ev. kann man das Lernergebnis dann auf einer kleineren Hardware laufen lassen.
Was haltet ihr davon? Gesponnen? Realistisch?
Gruss Ralf
-
Theoretisch möglich, dürfte dann allerdings nur in Single-Haushalten funktionieren.
Das Begreifen von widersprüchlichen Wünschen mehrerer Familienmitglieder dürfte jede
noch so potente Hardware in den Wahnsinn treibenGruß
Christian -
Oder nur der "Hausherr" darf anlernen
-
Man müsste nur genug Informationen im System haben, dann ist theoretisch alles möglich.
Wenn die KI weiß wer gerade zu Hause ist oder besser noch welche Person gerade Schalter XY drückt, dann kann die KI das auch unterscheiden und bspw. eine Mischlösung finden. Wenn z.B. Person A den Thermostat auf 20°C und Person B immer auf 22°C stellt, kann er das für jede Person einstellen. Wenn sich beide zusammen in einem Raum aufhalten, dann macht er halt 21°C. Aber wie gut sowas in der Praxis im Endeffekt funktioniert wird sicher die Zukunft zeigen.
-
Im Grunde kann man Daten aus der SQL mit Knime auslesen, hier kann man dann die Machine lernen lassen und bekommt ein Modell was Entscheidungen trifft. Die Frage ist dann nur, wie bekomme ich das Modell mit den entscheidungsvorgaben integriert. Denke da auch schon lange drauf rum, komme aber nicht weiter ;(
-
Ich habe auch ab und an überlegt und bin zu dem Entschluss gekommen, dass es aktuell relativ sinnlos ist. Das Einzige, was ich mir vorstellen könnte, wäre eine Art Korrelationsanalyse, die dir z. B. sagt "Badlicht und Badezimmer Radio an korreliert stark, möchtest du da nicht eine Regel/Skript anlegen?".
Das Problem, das ich sehe fängt schon bei dem Rollo-Beispiel an. Erstmal musst du dem Modell mitteilen, was du vorhergesagt haben möchtest, sprich du definierst ja erst mal per Hand, dass du eine Vorhersage für den Rollo brauchst, dann ist der Rollo Level zwar theoretisch noch diskret, kann ja meist nur ganze % Höhen-Angaben haben, also hast du jetzt entweder ein Multi-Klassen Problem mit 100 Klassen oder ein Regressionsproblem (in dem Fall wohl besser auch wenn der Wert theoretisch diskret ist).
Dann ist noch die Sache, dass ein ML-Modell in den seltensten Fällen eine Accuracy von approximativ 100 % erreicht. Sprich es kommt vielleicht ab und an mal vor, dass dein Rollo dann doch falsch steht, was mit der Hard-Code Variante nicht passieren würde.
Und dann möchtest du ja nicht nur den Rollo vorhersagen, sondern noch 100 andere Geräte. Für jedes Gerät ein Modell. Die Hardware sehe ich nicht mal als Problem, weil du für den Spaß kein Deep Learning machen wirst, ansonsten gibt es allerdings auch was von Nvidia.
Und jetzt kommt noch dazu, dass wir eigentlich Streaming Daten haben, sprich du müsstest jedes mal wenn eine deiner abhängigen Variablen geändert wird, schauen wie das Modell nun deine abhängige Variable schätzt. Dann könnte es sein, dass dir das nicht passt, du eine manuelle Änderung an der Rollohöhe vornimmst und das Modell diese Änderung ja wiederum lernen soll. Oder deine Gewohnheiten ändern sich komplett und somit auch die Verteilung deiner Daten und du hast eine Form von Concept Drift, mit der dein Modell am besten auch umgehen können sollte. Und genau aus dem Streaming-Daten Grund, kannst du auch kein Deep Learning machen, da du ein Modell benötigst, das online lernen kann (da gibt es allerdings auch gute Algorithmen).
All-in-all denke ich, dass wie oben erwähnt maximal eine Korrelationsanalyse hilfreich wäre, die dir mittels einer Korrelationsmatrix Zusammenhänge aufzeigt, die du (evtl.) noch nicht kanntest und somit diese nun in ein Skript einbinden kannst, wenn du sie für wichtig erachtest.
-
Ich hab von der letzten Antwort zwar nicht viel verstanden; es ist aber erstaunlich, dass solche vermeintlich einfache Vorgänge die jeder Honk hinbringt eine Maschine / einen Algorithmus irgendwie völlig überfordert, oder die Komplexität so hoch ist, dass es sich nicht lohnt diese zu implementieren. Ich dachte wir sind da inzwischen weiter und es gibt irgendwie schon KI-Bibliotheken die man in das Scripting einbinden kann ohne vorher Informatik studiert haben zu müssen.
Im Prinzip dachte ich mir das so, dass man im Grunde eine mehrdimsionale, stetige Formel benötigt, deren Variable die Sensorwerte sind und die pro Sensor Parameter besitzt, die so (von der KI) gewählt werden müssen, dass die gewünschte Behanghöhe (Lernvorang) erzeugt wird. Wenn man diese Formel dann (mit den von der KI errechneten Parametern) mit beliebigen Sensorwerten berechnet kommt die richtige Beanghöher heraus.
Also sowas wie f(s1,s2,s,s4,...,sn) = h, wobei s1 bis sn die Sensorwerte sind und h die Behanghöhe ist.
Die Formel selbst hätte Parameter p1 bis pn die die KI bestimmen müsste. Keine Ahnung wie die Formel aussehen müsste; aber sie müsste so beschaffen sein, dass ein Wert h nur eindeutig durch s1-sn und p1-pn entsteht (also die Funktion stetig ist).Also so die ungefähre Idee. Keine Ahnung wie die Funkion ausehen müsstem geschweige denn wie die Paramater zu bestimmen sind... aber so hab ich mir das ungfähr vorgestellt.
Wahrscheinlich liege ich total daneben...
Gruss Ralf