Difference between revisions of "Condition Effect Learning"
DurkKingma (talk | contribs) |
DurkKingma (talk | contribs) |
||
Line 84: | Line 84: | ||
This is somewhat more complicated and needs to be mathematically worked out. One fact is that conditions can be seen as independent random variables that each have a distribution (e.g. normal). (Of course some conditions are dependent, but that could be solved later by adding neural network. This would only be only be used to guess individual condition influence). | This is somewhat more complicated and needs to be mathematically worked out. One fact is that conditions can be seen as independent random variables that each have a distribution (e.g. normal). (Of course some conditions are dependent, but that could be solved later by adding neural network. This would only be only be used to guess individual condition influence). | ||
An image describing the problem: | |||
[[Image:Statisticallearningproblem.png]] | |||
I'm no statistical wonder, and I thought it would be smart to ask an expert. I wrote an email to Peter de Waal, statistical teacher at the UU. In Dutch: | I'm no statistical wonder, and I thought it would be smart to ask an expert. I wrote an email to Peter de Waal, statistical teacher at the UU. In Dutch: |
Revision as of 10:14, 8 May 2006
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: the effect is known and fixed. The effect is fixed, so the learning system will see the effect as certain.
- Uncertain conditions: the effect is not certain or not known yet. So, the effect is a prediction done by the system. The learning system tries to approve the prediction by looking at the past.
There are some comlications regarding learning about condition (e.g. food) effects. Since each human and each body is different, conditions dont always have a fixed certain effect. Food for instance has a GL (Glycamic Load) that tells about the effect of the food on BG (Blood Glucose) levels. Food effect (response) varies between individuals and between days as much as 20%. Likewise, effect of insulin and activities varies between people and temporally. Therefore, to account for intra-individual and temporal differences, I think it is a good thing to generally express condition effect by a range instead of a simple number. Such a range could be a probability distribution, or expressed as (minimum,maximum) tuple. For Cheetah, 'Learning' about conditions means assigning a range or distribution to it. There are several levels of expressing such variation in terms of a range or distribution. I solved the first one, but not yet the second.
- Learning a condition's effect by assigning it a minimal and maximal effect value. For example, a minimum and maximum BG effect.
- Learning a condition's effect by seeing it as a normally distributed random variable.
1. Learning a condition's effect by assigning it a minimal and maximal effect value
With this system, all conditions X have a Xhardmin and Xhardmax variables which tells the system the hard minimum and maximum of effect. For example, research has pointed out that a can of Coca-Cola has a Glycemic Load (GL) of minimally 14 and maximally 16. If we see the GL as the foods effect, we can assign CocaColahardmin=14 and CocaColahardmax=16. So, CocaCola could be a type 1 condition because it has a certain effect. When a user adds a new food type X to the database, it can add information like carbonhydrate(%), GI and such, to help the system determine Xhardmin and Xhardmax.
So, all conditions have a minimum and a maximum effect.
Suppose c is a condition, then:
<math>c_{min}, c_{max} \in \mathbb{R}</math>
<math>c_{min} \le c_{max}</math>
Also, conditions can be contained in a group (set) of conditions S:
S = {c1, c2, ...}
Like conditions, such group of conditions S also has minimum and maxmimum cumulative effect. Such effect is the sum of all of the effects of its contained conditions:
Smin = c1min + c2min + ...
Smax = c1max + c2max + ...
Using intuition, I came up with the following theorem. I have to give it a name so lets call it Kingma's Theorem :). It's not formally proved yet, but the following seems to be true for all cases. Its actually quite logical.
If condition c is part of set S (and (S-c) is set S minus condition c')
and Smin and Smax are known
and chardmin and chardmax are known
then can be said:
(S-c)min = Smin - chardmax
(S-c)max = Smax - chardmin
Lets assume that at each blood glucose (BG) measurement, Cheetah starts its learning system. Cheetah looks at all conditions that could have an effect, and puts all type 1 conditions into group CE (certain effect) and all type 2 into group UE (uncertain effect).
Then, cheetah calculates the difference (min and max) between the BGmeasurement and predicted CE group effect. This difference should equal the UE group effect. So:
BGmeasurement = UEreal + CEreal
So:
UEmin = BGmeasurement - CEmax
UEmax = BGmeasurement - CEmin
UE is the range of the sum of the to be learned conditions. These conditions all have their own effect range, chardmin and chardmax. But because the sum of effects (UE) is restricted , each individual effect for each condition must be somewhat more restricted. The possible effect range for each effect can be deduced from the total effect and the hardmin and hardmax value of the other effects. Using Kingma's Theorem, one can deduce the effect range of each individual condition.
Example 1.1
Lets look at a simple example of how a system would learn. Say, the user adds a glucose mearurement entry and the system starts its learning system. The user has taken a glass of applejuice A and a bread B. The user fills in a blood glucose measurement of 15.
The system knows a priori (from its database):
Ahardmin = 2
Ahardmax = 5
Bhardmin = 7
Bhardmax = 9
The system calculates the effect range these two items must have had:
UEmin = BGmeasurement - CEmax = 20 - 13 = 7
UEmax = BGmeasurement - CEmin = 20 - 9 = 11
Using Kingma's Theorem, The system then calculates the current Amin, Amax, Bmin, Bmax values:
(UE-A)min = UEmin - Ahardmax = 7 - 5 = 2 (this is under B's hardmin, so) => 7
(UE-A)max = UEmax - Ahardmin = 11 - 2 = 9 (not above B's hardmax, so keep it)
(UE-B)min = UEmin - Bhardmax = 7 - 9 = -2 (this is under A's hardmin, so) => 2
(UE-B)max = UEmax - Bhardmin = 11 - 7 = 4 (not above A's hardmax, so keep it)
In this case, (UE-A) is B, and (UE-B) is A, is the system already calculated everything it needed:
Amin = (UE-B)min = 2
Amax = (UE-B)max = 4
Bmin = (UE-A)min = 7
Bmax = (UE-A)max = 9
Above values indicate the possible current effect range of A and B. The system can use this to tweak its knowledge about the overall effect range of this values. This could be done by giving a condition a list of these calculated effect ranges. An algorithm then a mean (or something) of this list to use in effect prediction.
In other cases, when there are more then 2 conditions, the system iterates down a few levels to calculate the individual possible condition effect ranges. I will add such an example when I have time.
2. Learning a condition's effect by seeing it as a (normally) distributed random variable
This is somewhat more complicated and needs to be mathematically worked out. One fact is that conditions can be seen as independent random variables that each have a distribution (e.g. normal). (Of course some conditions are dependent, but that could be solved later by adding neural network. This would only be only be used to guess individual condition influence).
An image describing the problem:
I'm no statistical wonder, and I thought it would be smart to ask an expert. I wrote an email to Peter de Waal, statistical teacher at the UU. In Dutch:
Geachte Peter de Waal,
Ik ben student op faculteit Informatica en momenteel bezig met het softwareproject, om preciezer te zijn het project "Cheetah - Artificial Pancreas". Ik heb een statistiekprobleem waar ik zelf niet precies uitkom. Misschien dat U me erbij kunt helpen? Wellicht dat ik beter kan langskomen, maar toch zal ik het kort proberen uit te leggen.
Het gaat om het volgende.
Ten eerste zijn zijn meerdere onderling onafhankelijke variablen, ieder met een bepaalde kansverdeling. Bijvoorbeeld variabele X met een normaalverdeling met verwachting E(X)=8 en variantie=2. Deze echte kansverdeling van elke variabele is a priori onbekend, maar er kan wel een schatting van de kansverdeling worden gegeven.
Nu gebeurt er het volgende. Er wordt een willekeurige subset gepakt van deze variabelen. Ik weet welke variabelen er worden gepakt maar heb er geen invloed op. Vervolgens wordt er een 'sample' genomen van elke variabelen, waarvan ik het getal van de sample niet weet. Het enige wat ik kan observeren, is de som van deze samples.
Wat ik mij afvraag is het volgende. Als ik de som van deze samples weet, hoe kan ik dan mijn schatting van de kansverdeling van elke individuele variabele bijstellen? Dus in andere woorden, hoe kan ik 'leren' over individuele kansverdelingen als ik slechts een som van samples kan meten?
Intuitief kan ik zeggen dat ik de schatting van de individuele kansverdelingen zou moeten kunnen bijstellen, maar ik tast nog even in het duister.
Zou U mij zou op het oog hier advies over kunnen geven? Of kan ik beter even langskomen en de vraag stellen?
Ik hoop dat U mij wilt helpen.
MVG, Durk Kingma