Condition Effect Learning
This page reflects my idea about the Condition Effect Learning system. If you have comments, please dont delete text but add comments so I can reflect. See this as a first draft, which can be used as a basis for the Cheetah condition effect learning system.
As said in Advisory System, Cheetah needs a system that learns about the effect of certain conditions. As you can read in Advisory System, I think there are three kinds of conditions:
- Certain conditions;
- Predicted uncertain conditions;
- Yet unpredicted conditions.
There are some comlications regarding learning about food effects. Since each human and each body is different, conditions dont always have a fixed certain effect. Food for instance has GI (Glucose Index) that tells about the effect of the food on BG (Blood Glucose) levels. Responses vary between individuals and between days as much as 20%. So, the food effect can be expressed as an effect range. E.g. a minimum and maximum BG effect. This also counts for responses to insuline and the effect of activities (like sports). Therefore, to account for individual and temporal differences, I think it is a good thing to generally express condition effect by a range instead of just a single number.
The effect of conditions types 2 and 3 should be induced by the learning system of Cheetah. Lets assume that at each blood glucose (BG) measurement, Cheetah starts the Condition Effect Learning (CEL) system. Then, the ΔG(min and max) is calculated: the difference between predicted(min and max) and measured BG levels. Also, the set C of all type 2 and 3 conditions is assembled:
The model tells system Gpredicted, min and Gpredicted, max
ΔGmin = Gmeasured - Gpredicted, max
ΔGmax = Gmeasured - Gpredicted, min
set C contains all type 2 and 3 conditions
If C contains only one condition c, it is quite easy for the system to directly assign ΔGmin and ΔGmax to c. The story gets less trivial when C contains multiple conditions.
Verdere notities (moeten nog verder verwerkt worden):
Problemen bij bereken effect van conditie: - Het precieze effect is onzeker. Onderzoek onderschrijft dit. Door middel van een 'range' kan wel worden gezegt tussen welke waardes het effect waarschijnlijk ligt. - Het leren van effecten is dus het opstellen van een 'range' waartussen een effect ligt. Hoe beter het systeem een effect kent, hoe betrouwbaarder de gegeven range is. Uit de verschillendde gemeten 'ranges' voor een conditie wordt een range berekent die wordt gebruikt bij voorspellingen. Elke conditie heeft ook een harde ingebakken minimaal en maximaal effect. Je lichaam kan bijvoorbeeld niet meer koolhydraten uit voedsel benutten dan er in zit. Het systeem kan zo'n maximum dan berekenen uit een door de gebruiker ingevoerd aantal koolhydraten. conditietypes: 1) certain conditions. Range is fixed 2) predicted uncertain conditions Range wordt berekend uit de ranges die uit het verleden geleerd worden. 3) yet unpredicted (new) conditions Een lege range lijst. gevalsonderscheid dagtypes: 1) - metingen zijn verklaarbaar dG(predicted)=MIN-MAX MIN<=dG(meting)<=MAX - condities: type 1 (certain) 2) - metingen zijn verklaarbaar dG(predicted)=MIN-MAX MIN<=dG(meting)<=MAX - condities: type 1's en één type 3 (yet unpredicted, new) condition NEWCONDITION => RANGES(CONDITION) = (dG(meting)-MAX) - (dG(meting)-MIN) => Is de nieuwe range onmogelijk (buiten minimale min maximale max)? => Het model is onbetrouwbaar, of er mist een conditie. Meld gebruiker om te controleren of hij alles ingevoerd heeft. - als dG(meting)>MAX dan missende voedselconditie. - als dG(meting)<MIN dan missende insulineconditie. 3) - metingen zijn verklaarbaar dG(predicted)=MIN-MAX MIN<=dG(meting)<=MAX - condities: type 1's en er is één type 2 (predicted uncertain) condition CONDITION(A-B) => voeg de nieuwe berekende range toe aan database van de conditie: RANGES(CONDITION) += (dG(meting)-MAX) - (dG(meting)-MIN) Bereken nieuwe gemiddelde range uit deze dataset => Check op mogelijheid nieuwe range 4) - metingen zijn onverklaarbaar dG(predicted)=MIN-MAX dG(meting)>MAX of dG(meting)<MIN - condities: type 1's => Het model is onbetrouwbaar, of er mist een conditie. Meld gebruiker om te controleren of hij alles ingevoerd heeft. - als dG(meting)>MAX dan missende voedselconditie. - als dG(meting)<MIN dan missende insulineconditie. 5) (lijkt erg op dagtype 2) - metingen zijn onverklaarbaar dG(meting)=MIN-MAX dG(meting)>MAX of dG(meting)<MIN - condities: type 1's en één type 3 (yet unpredicted, new) condition NEWCONDITION => RANGES(CONDITION) = (dG(meting)-MAX) - (dG(meting)-MIN) => Check op mogelijheid nieuwe range 6) - metingen zijn onverklaarbaar dG(predicted)=MIN-MAX dG(meting)>MAX of dG(meting)<MIN - condities: type 1's en er is één type 2 (predicted uncertain) condition CONDITION(A-B) => voeg de nieuwe berekende range toe aan database van de conditie: RANGES(CONDITION) += (dG(meting)-MAX) - (dG(meting)-MIN) Bereken nieuwe gemiddelde range uit deze dataset => Check op mogelijheid nieuwe range 7) - INITIAL KNOWLEDGE BASE: condities hebben een effect range (bv. een GI range), met de grootse kans binnen deze range APPEL(dG=3-4) BROOD(dG=3-7) DAG1: Conditie: EET APPEL(dG=3-4) Conditie: EET BROOD(dG=5-7) Meting : dG(meting)=10 LEERSYSTEEM: 1) dG(predicted)=8-11, dus dG(meting)=10 zit nog in range SYSTEEM VINDT NIKS ONVERKLAARBAARS DAG2: Conditie: EET APPEL(dG=3-4) Meting : dG(meting)=3 LEERSYSTEEM: 1) dG(predicted)=3-4, dus dG(meting)=3 zit nog in range LEERSYSTEEM VINDT NIKS NIEUWS DAG3: Conditie: EET APPEL(dG=3-4) Conditie: EET VLA(dG=?-?) (NIEUWE CONDITIE, WEET EFFECT NOG NIET) Meting : dG(meting)=5 LEERSYSTEEM: 1) ZIET: 1 NIEUWE CONDITIE VLA(dG=?-?) en dG(predicted)=3+?-4+? en dG(meting)=5 dus dG(onverklaarbaar)=1-2 2) KOPPELT ONVERKLAARBARE GLUCOSESTEIGING AAN DE NIEUWE CONDITIE: VLA(dG=1-2) DAG4: dG(predicted)=5-10 dG(meting)=12 dus variabele condities moeten samen voor 2-7 aan variatie hebben gezorgt stel: conditie A met hardMIN=5 en hardMAX=10 conditie B met hardMIN=2 en hardMAX=5 dan zou conditie in zijn eentje dus als effect (min-max) dus (5-7) toevoegen -3->+2 of -5->0 en nu komt variabele B in het spel om het uiteindelijke effect 2-7 te behouden, deze zou dan voor een effect (-3->+2 of -5->0) -3 tot +2 gehad kunnen hebben, dus 2-2 nu omgekeerd toekennen van waardes conditie B in zijn eentje een mogelijk effect van 2-5 conditie A dan een effect van 5-5 (als B=2 dan 0-5 en als B=5 dan -3 tot 2) andere aanpak: VOORBEELD 1: stel: conditie A met hardMIN=5 en hardMAX=10 conditie B met hardMIN=2 en hardMAX=5 uit meting blijkt dat variabele condities zorgen voor tussen 2-10 aan effect STAP 1 minimaal theoretisch groepseffect is optelsom van hardMIN's (stel dit is 7) maximaal theoretisch groepseffect is optelsom van hardMAX's (stel dit is 15) minimaal werkelijk effect is 2 maximaal werkelijk effect is 10 minimaal mogelijk groepseffect is hoogste van de minima, dus 7 maximale mogelijk groepseffect is laagste van de maxima, dus 10 dus mogelijk groepseffect is (7-10) STAP 2 A+B=(7-10) hypothese 1: conditie A heeft het minimale effect, dus 5 dan heeft conditie B een effect van 2-5 dus 2-5 hypothese 2: conditie A heeft het maximale effect, dus 10 dan heeft conditie B een effect van -3-0 dus KAN NIET (hypothese 3): conditie A heeft een effect van 8 dan heeft conditie B een effect van -1-2 dus 2-2 OTEWEL: effA + effB = 7-10 (=nieuwe kennis, evt ook voor databank) effA(min) = effGroep(min) - effRest(max) minimaliseer effA(min) met maximaal haalbare effRest(max) effA(min) = effGroep(min) - effRest(max) dus effA(min) + effRest(max) = effGroep(min) effA(max) = effGroep(max) - effB(min) effA(min) = effGroep(min) - effRest(max) als effA(min) < effA(hardmin) -> effA(min) = effA(hardmin) effRest(max) | [effA=effA(min)] = effGroep(min) - effA(hardmin) effA(max) = effGroep(max) - effGroep(min) als effA(max) > effA(hardmax) -> effA(max) = effA(hardmax) effRest(min) | [effA=effA(max)] = effGroep(max) - effA(hardmax) effRest(min) = effGroep(min) - effA(max) als effRest(min) < effRest(min) -> effRest(min) = effRest(hardmin) effRest(max) = effGroep(max) - effA(min) als effRest(max) > effRest(hardmax) -> effRest(max) = effRest(hardmax) VOORBEELD 2: stel: conditie A met hardMIN=10 en hardMAX=15 conditie B met hardMIN=2 en hardMAX=5 conditie C met hardMIN=12 en hardMAX=17 uitmeting blijkt dat variabele condities zorgen voor tussen 30-40 aan effect STAP1: hardminGROEP = 24 hardmaxGROEP = 37 minWERKELIJK = 30 minWERKELIJK = 40 dus mogelijk groepseffect is (30-37) STAP2: => A+B+C=(30-37) effB+C(max) = effGroep(min) - effA(min) = 30 - 10 = 20 => B+C=(..-20) effB+C(min) = effGroep(max) - effA(max) = 37 - 15 = 22 => B+C=( effA(min) = effGroep(min) - effB(max) - effB( Conditie: EET BROOD(G>>5) Conditie: EET VLA(G>>5) Meting: dG(meting) LEERSYSTEEM REGELS: 1 NIEUWE CONDITIE A(G>>?) ONVERKLAARBARE GLUCOSESTEIGING 'dG(onverklaarbaar)' => A(dG=dG(onverklaarbaar)) 2 NIEUWE CONDITIES A(G>>?) EN B(G>>?) ONVERKLAARBARE GLUCOSESTEIGING 'S' => B(G>> Stel, je hebt een verzameling variabelen V elke v