Amidst the rush to prepare for a new iOS release and getting KILO ready to launch, I have been working on user identification. That’s the part where KILO gets to know you.
KILO stores any weight and fat percentage recording we you step on it. When a phone next connects to it, it downloads the readings from KILO and analyses them to work out which recordings belong to which user. These readings are then assigned to the appropriate user and displayed to him/her.
The following is a simple weight plot showing readings over time from several beta test users:
As you can see from this graph, following the users as the day goes on does not provide too much of a challenge, each user can be clearly identified.
However, this isn’t the entire story for the sample data we have at our disposal. There is a rogue user who is very similar from a statistical point of view to another user. Here is a plot of just those two users to show how similar they are:
From above, it is obvious that distinguishing between these users is going to be difficult, they cross in several places and have no real trend. Basically, they have the same weight, so it is impossible to distinguish them.
Fat to the rescue!
Luckily, we do not only measure weight, we also have the body fat measurement which comes in the form of an electrical resistance (note: this is a very very very low level current). If we go back to our first data set without the conflicting users, plotting resistance, weight and day seems to create a nice 3d graph with obvious trends throughout:
Following the lines of points on this graph is fairly straightforward and the third measurement of resistance introduces even more clarity to the situation. Let’s see what our second conflicting data set looks like when plotted in the same way:
From this graph, it looks like we have exactly the same problem as we had with just weight, luckily by having a 3D graph, we can rotate and find an angle where there seems to be some distinction between the black and yellow points of data. This can be seen here:
This shows us that although there is still crossover between the data sets, it should be possible to distinguish between them given a bigger data set and discounting anomalous readings. The example I am showing you here is extreme, as the two users are almost identical, however our algorithm should handle this fairly well. More on this subject soon!