U.S. patent application number 13/784845 was filed with the patent office on 2014-09-11 for interactive engine to provide personal recommendations for nutrition, to help the general public to live a balanced healthier lifestyle.
This patent application is currently assigned to ComoComo Ltd. The applicant listed for this patent is COMOCOMO LTD. Invention is credited to Ido Cohn, Yaron Hadad, Jonathan Lipnik.
Application Number | 20140255882 13/784845 |
Document ID | / |
Family ID | 51488243 |
Filed Date | 2014-09-11 |
United States Patent
Application |
20140255882 |
Kind Code |
A1 |
Hadad; Yaron ; et
al. |
September 11, 2014 |
INTERACTIVE ENGINE TO PROVIDE PERSONAL RECOMMENDATIONS FOR
NUTRITION, TO HELP THE GENERAL PUBLIC TO LIVE A BALANCED HEALTHIER
LIFESTYLE
Abstract
An algorithm and method to provide personal recommendations for
nutrition based on preferences, habits, medical and activity
profiles for users, and constraints. The algorithm can also be fed
and takes into account real-time feedback from the user. The method
allows creating a personal nutritional schedule based on a set of
constraints, which are solved using an optimization algorithm to
find the diet best fitting each user. The method also includes
analyzing a single user by applying various statistical techniques,
enabling the algorithm to infer the user's preferences and updating
of the constraints, analyzing and clustering of the general user
population based on statistical principles, giving the algorithm
insightful information and allowing improved performance by means
of "machine-learning," and creating a list of recommended food
items/recipes to help users live a balanced, healthier
lifestyle.
Inventors: |
Hadad; Yaron; (Herzliya,
IL) ; Lipnik; Jonathan; (Ra'anana, IL) ; Cohn;
Ido; (Herzelia, IL) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
COMOCOMO LTD |
Bnei Brak |
|
IL |
|
|
Assignee: |
ComoComo Ltd
Bnei Brak
IL
|
Family ID: |
51488243 |
Appl. No.: |
13/784845 |
Filed: |
March 5, 2013 |
Current U.S.
Class: |
434/127 |
Current CPC
Class: |
G16H 20/60 20180101;
G09B 19/0092 20130101 |
Class at
Publication: |
434/127 |
International
Class: |
G09B 19/00 20060101
G09B019/00 |
Claims
1. A method of determining a diet, the method comprising:
installing an application on computing devices belonging to a
plurality of users; creating a personal nutritional schedule based
on a set of constraints which are solved using an optimization
algorithm; analyzing a single user's eating habits by applying
statistical techniques, enabling the algorithm to infer the user's
preferences and update of the constraints; statistically analyzing
and clustering a plurality of users, giving the algorithm
insightful information and allowing improved performance by means
of "machine-learning;" and creating a list of recommended food
items/recipes based on the statistical analysis and clustering.
2. The method of claim 1, further comprising asking individuals of
the plurality of users several questions to determine their
culinary preferences and medical and activity profiles.
3. The method of claim 1, further comprising querying the user
about dietary preferences using a game approach.
4. The method of claim 3, wherein the game approach further
comprises inferring the user's tastes and habits according to a
game where the user iteratively chooses one of two options on the
screen.
5. The method of claim 3, wherein the game approach further
comprises requiring the user to choose between two choices of at
least one of two food items and two typical meals.
6. The method of claim 3, wherein a list of questions is assembled
in a manner that will dissect a set of preferences in an optimal
way, and wherein each answer helps the algorithm benefit most from
the previous question.
7. The method of claim 1, further comprising breaking the
recommended list into meals by a meal separator. The meal separator
segments each daily diet into well-portioned meals and their
recommended eating time.
8. The method of claim 1, further comprising creating a diet
profile by applying the updated constraints, wherein the diet
profiler generates a list of diet constraints from user's
information and provides user clustering based on dietary
habits/eating habits.
9. The method of claim 8, further comprising learning the users'
habits in order to correct a diet instantly, and provide
crowdsourcing for dietary/eating habits.
10. The method of claim 8, further comprising finding nutritional
correlation by a research system between the user's habits, food
intake, workouts and reported well-being.
Description
FIELD OF THE INVENTION
[0001] The present invention relates to nutrition. More
particularly, it is an algorithm that provides personalized meal
plans for individuals in real-time, in order to help the general
public to live a balanced & healthier lifestyle.
BACKGROUND OF THE INVENTION
[0002] There is currently no system known to the present inventors
that produces nutritional recommendations based on personal needs
either in academia or in the industry.
Diet Planning:
[0003] Today, diet planning is done in various ways. It may
typically be classified in one of two categories: diets that are
done and/or recommended by professional nutritionists, physicians
or health experts and other "Crash Diet." The latter are diets that
are performed by individuals who are seeking immediate results and
often involve consumption of special foods, typically in the form
of shakes; medicine, in the form of pills, or even extreme rapid
changes in food consumption that deviate from the general
guidelines given to the public by the authorities and can lead to
malnutrition.
[0004] Statistically, most diets fail due to the enormous change in
lifestyle they require from the dieter in a short time-scale.
Indeed, most people don't have the willpower to completely change
the habits they acquired over many years of eating in a certain
way.
Nutritionists have their drawbacks: 1. Human experts cannot
continuously follow the person they are serving: their actual food
consumption (if they divert from the proposed diet), physical
activity and habits. Additionally, unless a nutritionist is meeting
with his/her client on a daily basis, it is extremely difficult for
a nutritionist to continuously change the proposed diet based on
the user's reaction to it. 2. A human nutritionist works with a
very basic set of rules, and does not take into account all the
different factors. Indeed, the human body is a very complex system.
This forces them to make simplifying assumptions to provide food
recommendations, e.g. assuming that absorption of nutrients is
linear, namely that a consumption of one nutrient does not affect
the consumption of another. Nevertheless, this is known to be false
in certain limits. For example, exaggerated consumption of animal
protein requires affects the absorption of calcium in the body. 3.
Most importantly, the output from a typical nutritionist session is
a basic daily/weekly calendar with the food items the client should
consume each day. This will definitely hinder the client's ability
to follow the nutritional plan they receive from the nutritionist
as the dieter won't always know what kind of changes he/she may
make on-the-go. 4. A nutritionist is by definition a human
participant, which is both expensive and error prone. 5. Many
nutritionists have different training, which may lead to
contradictory advice. For instance, one nutritionist may believe in
a "low carbs" (Atkins) diet, while another may stick to a more
conservative one. 6. Many people switch nutritionists over time,
thus loosing the consistency of their diet and making further
failure in dieting even more probable.
[0005] Thus, it would be advantageous to provide more automated and
timely nutritional assistance. Such assistance should complaint
with health consideration and fully personal, while allowing
changes in real-time based on the user's feedback.
SUMMARY OF THE INVENTION
[0006] It is a principal objective of the present invention to
provide an automatic nutritionist. This virtual nutritionist works
in real-time, and learns the user's habits and preferences to
provide him with a personalized meal plan based on most restrictive
and up-to-date health recommendations.
[0007] A method is disclosed to provide an application for personal
recommendations for nutrition based on preferences, medical and
activity profiles of a plurality of users, and constraints by
applying an algorithm provided by "personal" modules, which
interact with a single user and "global" modules, which analyze the
data of all the users simultaneously. The method includes
installing the application on computing devices belonging to a
plurality of users and creating a personal nutritional schedule
based on a set of constraints which are solved using an
optimization algorithm. The method also includes analyzing a single
user by applying various statistical techniques, enabling the
algorithm to infer the user's preferences and updating of the
constraints, analyzing and clustering of the general user
population based on statistical principles, giving the algorithm
insights and allowing improved performance by means of
"machine-learning," and creating a list of recommended food items
(either from recipes, raw foods, and even restaurants) to help each
of the plurality of users live a balanced, healthier lifestyle.
[0008] The system's end product is a weekly meal-to-meal resolution
nutritional schedule. The solution is tailored for each user
individually and takes into account all aspects of the user's
profile--medical, physical activity, cultural constraints, eating
habits and culinary preferences.
[0009] The algorithm learns and adapts to the various user inputs.
It can also improve its performance by crowd sourcing the data from
the general user population.
[0010] It is important to state that the present invention
emphasizes giving the highest value to the user, at least the same
value he/she may receive from a nutritionist, while minimizing the
deviation from his current way of life. This makes the automated
nutritionist easier to use and follow to obtain better results,
especially in the long term.
[0011] Another important aspect of this platform is that it
provides a simple solution to people who don't follow the average
diet and are not nutrition-savvy. For example, vegans (people who
don't eat animal products) that do not understand the important of
proper consumption of legumes and green vegetables may suffer
deficiencies in iron. This is automatically solved within the
framework suggested here.
[0012] The five components of the inventive algorithm are: [0013]
1. The User Profiler, which employs the users' feedback to learn
their habits and preferences. The User Profiler continuously
improves the personalization of the algorithm's recommended diets.
[0014] 2. The Diet Profiler, which creates a diet profile based on
the user's profile. It generates a list of constraints that each
diet for the user must satisfy. There are several different types
of constraints, including nutrients constraints, health
constraints, cultural constraints and other (see below). [0015] 3.
The Diet Generator, which creates a list of recommended dishes for
each day. The diet is calculated automatically using a selected
optimization technique, such as integer, linear, quadratic,
stochastic programming, dynamic programming or others, to find the
diet with the highest ranking for each specific user, namely, this
is the diet with the best value for the user based on his/her
preference, goals, physique, working out habits and medical
conditions. Thus, the optimization algorithm finds the optimal diet
that satisfies the constraints given by the Diet Profiler. [0016]
Additionally, the diet generator allows the user to swap any dish
in the diet by proposing alternative to it that also satisfy the
same constraints and fit the specific meal, day and user's
preferences. [0017] 4. The User Analyzer, which learns the users'
habits to correct a diet in real-time and provides crowdsourcing
for dietary/eating habits. [0018] 5. The Nutrition BI (Business
Intelligence) System, which is a tool that allows research in
nutrition. It employs usage data to derive insights about the
general population's nutrition and health by searching for
correlations between the different factors in the system, both the
inputs and the outputs.
User Profiling
[0019] The interactive engine queries and analyzes the user's
inputs efficiently, generating value for both the algorithm and the
user.
[0020] Analyzing the user's input and behavior is one of the key
ingredients for the platform's success. The platform gains insights
from the user's input by the use of various statistical models to
extrapolate the users preferences given their behavior. For
example, one may calculate the probability of the user's affection
for a certain food item based on the changes he/she made to the
diet prescribed to him/her by the algorithm. The data acquired is
used to improve the suggestions to the user, and thus increasing
the quality of the results produced by the automated
nutritionist.
[0021] Different clustering methods, such as K-NN, are used to find
the different "preference type casts" and associate each user to
the one they are closest to. As the number of possible preferences
is infinite, clustering the different preference type casts can
lead to interesting results and insights. Each user's meals can be
offered to another user with similar taste enjoyed, improve the
initial user input process, and provide a unique nutritional crowd
sourcing platform. The methods used to solve the above modules
are:
[0022] 1. Collaborative filtering;
[0023] 2. Baysian Network;
[0024] 3. K-nearest Neighbor; and
[0025] 4. Matrix Factorization.
[0026] There has thus been outlined, rather broadly, the more
important features of the invention in order that the detailed
description thereof that follows hereinafter may be better
understood. Additional details and advantages of the invention will
be set forth in the detailed description, and in part will be
appreciated from the description, or may be learned by practice of
the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0027] In order to understand the invention and to see how it may
be carried out in practice, a preferred embodiment will now be
described, by way of a non-limiting example only, with reference to
the accompanying drawings, in the drawings:
[0028] FIG. 1 is a table of the day-by-day recommended workout
schedule for one week, constructed according to an exemplary
embodiment of the present invention;
[0029] FIG. 2 is a table of the hourly, day-by-day recommended menu
schedule for one week, constructed according to an exemplary
embodiment of the present invention;
[0030] FIGS. 3a and 3b show three screenshot illustrations of the
system's initial response to the user's initial input, constructed
according to an exemplary embodiment of the present invention;
[0031] FIG. 4 illustrates the inputs and outputs of the interactive
engine, constructed according to an exemplary embodiment of the
present invention;
[0032] FIG. 5 illustrates the workflow provided by the meal
recommendation portion of the algorithm of the interactive engine,
constructed according to an exemplary embodiment of the present
invention;
[0033] FIG. 6 is a graphic illustration of the diet generator phase
of the algorithm of the interactive engine, constructed according
to an exemplary embodiment of the present invention; and
[0034] FIG. 7 is a graphic illustration of the diet generator phase
with a third dimension for the objective function, constructed
according to an exemplary embodiment of the present invention.
[0035] All the above and other characteristics and advantages of
the invention will be further understood through the following
illustrative and non-limitative description of preferred
embodiments thereof.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0036] The principles and operation of a method and an apparatus
according to the present invention may be better understood with
reference to the drawings and the accompanying description, in
which like numerals designate corresponding elements throughout, it
being understood that these drawings are given for illustrative
purposes only and are not meant to be limiting.
[0037] FIG. 1 is a table of the day-by-day 120 workout schedule for
one week, constructed according to an exemplary embodiment of the
present invention. A rest day means there is no physical workout.
If the rest day is also a treat day, the user may be allowed an ice
cream sundae, for example. A power workout day may mean there is
some heavy lifting involved. An aerobic workout day may mean there
is something like a "jazzercise" workout.
[0038] FIG. 2 is a table of the hour-by-hour 210, day-by-day 220
recommended menu for one week, constructed according to an
exemplary embodiment of the present invention. The recommendation
menu is created for personalized nutrition schedules. This platform
is interfaced through multiple mobile and web clients.
[0039] This algorithm can be developed using many different
programming languages on various servers. The choice of which
should be mostly based on the preference and skill of the
developers. In an exemplary embodiment of the algorithm, Java is
used running with mySQL server and Amazon Web Services, while for
the optimization algorithm the linear optimization method Simplex
is used as a simple demonstration of the proposed technology.
[0040] The algorithm is an assembly of several modules--"personal"
modules that interact with a single user and "global" modules that
analyze the data of all users simultaneously.
[0041] At the heart of the algorithm lie several technologies:
[0042] 1. The creation of the nutritional schedule is based on a
set of constraints and an objective function that needs to be
maximizes. It is solved using an optimization algorithm (e.g.
linear optimization algorithm such as Simplex).
[0043] 2. The analysis of a single user is done using various
statistical techniques (such as collaborative filtering; Bayesian
network and matrix factorization). This allows analysis and
inference of the user's preferences and updating of the parameters.
The statistical techniques used to solve the above modules may
include:
[0044] 3. The analysis and clustering of the general user
population is also based on statistical principles and "large data"
capabilities, giving the algorithm insights and allowing it to
improve its performance. Different clustering methods, K-NN for
example, are used to find the different "preference type casts" and
associate each user to the one they are closest to. As the number
of possible preferences is infinite, clustering the different
preference type casts can lead to interesting results and
insights.
Flow
[0045] 1. On installation of the application onto a PC, iPhone or
tablet, the user is asked several questions to determine his eating
habits, physical and medical profile. 2. Next, the application
queries the user about culinary preferences (note that this is not
the same as eating habits). For this, the application takes on a
game approach. The application tries to infer the user's tastes and
habits according to a game where the user iteratively chooses one
of two options on the screen. The user may be asked to choose
between two choices--two food items, two typical meals, etc. In
order for this approach to work the list of questions is assembled
in a manner that will dissect the "preference space" in the optimal
way, where each answer helps the algorithm benefit most from the
previous question. For example, a possible first question may
compare the user's preference of meat over nonmeat products, a
preference that provides much insight into the user's diet), as
opposed to the question that compares the user's preference of
cauliflower over broccoli (gives little insight.
[0046] FIGS. 3a and 3b illustrate the use of simple 2 or 3 choice
questions, constructed according to an exemplary embodiment of the
present invention. The left side of FIG. 3a tests for various
medical conditions 310. On the right side of FIG. 3a, the algorithm
tests whether they are infatuated with meat 321, or if they usually
eat a smaller healthier lunch 322.
[0047] The left screen shot 331 in FIG. 3b not only tests the
user's love of French fries, but also the user's willingness to
commit to a healthier diet. If the user chooses the right hand side
image 332, the algorithm will try to create healthier meals, while
if the image on the left hand side is chosen, the user will receive
meals more to their liking, regardless of their healthiness. On the
right side of FIG. 3b, the algorithm tests whether the user usually
has a big lunch 341 vs. a small one 342, if they are infatuated
with meat, or if they usually eat a smaller healthier lunch.
[0048] The algorithm searches for regularity in the answers. So for
example, if the user doesn't pick meat in one of the questions,
that won't necessarily mean he does not like meat. Only if several
answers reveal the same pattern will the algorithm consider this a
definite user eating habit.
[0049] An assortment of such questions can give the algorithm data
that will help build a robust picture of the user's diet. This
interface improves on the prior art for several reasons:
a. Humans are known to think in a relational way, and so comparing
two or three options is easier than rating one. b. A game interface
engages users and allows them to input more data than was possible
in the previous interfaces. As this is a less tedious task, users
will be more willing to participate and answer more and more
questions. Also, the user may stop inputting their preferences and
return to the process later. 3. The nutrition scheduler gathers all
the required information about the user needed to create a
nutrition schedule--the user's activity profile (training
activities schedule), medical profile (the user's medical
condition), different data from a nutrition database, i.e.,
nutritional content of each food item and their relationships, and
previously inputted user culinary preferences. Using this data, the
first module creates a nutritional schedule--specifying which food
items are to be consumed at each meal and at what quantity for the
next week, with several options for substitution for each meal are
provided. 4. Once the nutrition schedule is computed, it is
provided to the user for the following week. During this period,
the user may change food items, add/remove food items, and input
what they have chosen to eat. The algorithm uses this input to
adapt and improve its performance in its next suggestions to the
user by considering which recommendations are being accepted and
which are being ignored, and to what extent they are being
ignored.
Technical Specifications
1. Nutritional Scheduler
[0050] The Nutritional Scheduler will be demonstrated by the use of
linear optimization, although this is only a preferred embodiment
of the patent and in no way should limit the current invention. It
is a 2-stage process: a) Weekly diet calculator--Calculates the
optimal weekly dish menu, consisting only of the amounts of each
dish to be consumed in the weekly period
Input:
[0051] The diet calculator relies on a multitude of inputs: [0052]
User eating habits [0053] User culinary preferences [0054] User
physical goals (gain/reduce weight, waist size, etc. . . . ) [0055]
User medical profile [0056] User activity profile [0057] Amount and
type of user's activities [0058] Nutrition Database [0059]
Nutritional values of each food item [0060] Hierarchical
association of each food item to a set of food groups [0061]
Association of each food item to a set of meals and meal types
[0062] Metric system between food items and food groups--distances
between food items
[0063] The algorithm combines all constraints listed below with
reference to FIG. 5 and creates a constraints matrix A, and a
constraints vector b. A contains the nutritional amounts of each
food item and each food group, and b contains the constraints
amounts for each food group. These two data structures contain all
the information on the user's nutritional, culinary and cultural
constraints.
[0064] The solution vector x will contain the actual amounts of
each food item the user is required to consume. Additionally, the
problem of what to eat and how much is solved using an optimization
function. Here the food items chosen are preferably closest to the
user's known preferences. The algorithm reduces the problem of
finding the proper diet to a linear problem of the form:
min x=c*x,
such that A*x<=b, and c is a multiplier constant.
[0065] This linear optimization problem may be solved using the
Simplex algorithm, however non-linear techniques may also be
applied.
b) Weekly meal calculator--Spread the weekly dish menu calculated
in the previous step into the different meals. This calculation may
also solved using a Simplex algorithm: Using the food item amounts
calculated in the previous phase, the different constraints are
inserted, but this time one for each possible meal, as opposed to
one to each food item received in the previous phase. In the b
vector, the amounts expected the user should consume in each meal
are inserted, and also constraints to ensure the consumed amount of
each food item will total the value calculated in the previous
phase are inserted. The computation of the objective function is
done stochastically to ensure diversity in the meals so that each
food item will not be in every single meal). The stochastic
algorithm is elaborated on hereinbelow. The Weekly Meal Calculator
has two special features: i. Changing the diet on the fly: When the
user receives a meal recommendation, he may decide to change it. In
such an occasion, the system finds a set of replacements that fits
the users' preferences and habits while satisfying the constraints
mentioned earlier. Moreover, the on-the-go feature also supports
eating out. The user may also ask for food recommendations when
eating out in two different ways: either an unlimited one, in which
the algorithm locates local restaurants and dishes that fit the
user's diet; or limited ones, in which the user is already in a
certain restaurant, and may ask for the best dish fitting his diet
from the ones available. ii. Creating a weekly shopping list: Once
the user approved his weekly meal plan, the application may
generate a shopping list of the required ingredients. This allows
the user to purchase all the ingredients online to make it even
easier and simpler to follow the nutrition schedule in order to
increase compliance.
2. Single User Analyzer:
[0066] Embodiments of the present invention create a module that
will be able to query and analyze the user's inputs efficiently,
generating value to both the algorithm and the user. Analyzing the
user's input and behavior is one of the key steps for the platform.
In gaining insights from the user's input, different techniques are
considered for optimizing the algorithm using this data. Stochastic
models extrapolate the user's preferences given the patterns in
their behavior using the different food item's relationships, then
the probability of the user's affection for a certain food item is
calculated from the changes he made to the diet prescribed for him
by the algorithm. The data acquired is used to improve the
suggestions to the user, and increase its value.
3. User Clustering and Data Analysis:
[0067] The final phase of the algorithm includes analyzing and
clustering the platform's users. Different clustering methods, K-NN
for example, are used to find the different "preference type casts"
and associate each user to the one is closest to him. As the number
of possible preferences is infinite, clustering the different
preference type casts can lead to interesting results and insights.
A user can be offered meals which another user with similar tastes
enjoyed, thereby improving the initial user input process, and
providing a unique nutritional crowd sourcing platform.
[0068] Exemplary embodiments include the full user input analysis
and the ability to create recommendations based on this feedback.
Additionally, it includes the full list of medical conditions that
the algorithm can handle, giving more value to a wider user base.
Also included is an analysis of the general population--trends and
insights. Users are clustered, enabling users to get similar
recommendations to those of other users in their cluster. This
creates "nutrition crowdsourcing." This also involves finding
interesting BI data--user segments, correlations between cause
(diet) and effect (user feedback).
[0069] FIG. 4 illustrates the inputs and outputs of the interactive
engine, constructed according to an exemplary embodiment of the
present invention. Inputs 410 include physical info 411, medical
info 412, eating habits 413, work out habits 414 and personal goals
415. The output is generally a recommended weekly diet 420.
[0070] Meanwhile, in the background the program is constantly
collecting information by submitting simple questionnaires to the
users. This information may be used to conduct studies on the
effects of nutrition on well-being. Its results are then used to
fine-tune the program for improved results and better dietary
models. This will be used only once the results are verified by
other studies by professional researchers in the field.
Approaching Nutrition Through Optimization
[0071] The following describes the goal and idea of approaching
nutrition through optimization:
The Goal:
[0072] To provide users with a diet recommendation that is healthy
and will allow them to reach their goals, but at the same time
making the diet as compatible as possible with their habits and
preferences.
The Idea:
[0073] 1. Turn health restrictions into constraints: [0074] These
constraints are typically constraints on nutrients [0075] (for
example, a 30-year old male should consume between 10 mg and 30 mg
iron per day to be healthy. This is the linear constraint: [0076]
10 mg<total iron per day<30 mg). [0077] This guarantees that
the program will only provide a diet that contains nutrients within
a `healthy` range that also fits the user's goals.
[0078] 2. Turn the user's eating habits and preferences into the
objective function: [0079] So maximizing the objective function is
equivalent to finding the diet that is most compatible with the
user's preferences.
[0080] Other nonlinear constraints may be included as well. For
example, it is known that high consumption of animal protein
increases calcium loss in the urine, and therefore the constraint
on calcium and animal protein should depend on each
nonlinearly.
[0081] The two segments of the meal recommendation algorithm
are:
The Diet Generator: Provide a list of food items and/or recipes
that should be consumed by the user for each day of the week. This
already takes into account the user's habits, goals and physical
information. The Meal Separator: Separate each daily diet into
well-portioned meals and their recommended eating time. However, in
practice there are two more parts that work in the background by
considering inputs from the user showing what he is eating and what
his workout activities are: The Diet Profiler: Learns the user's
eating and working out habits, together with the user's physical
information to decide on the nutrients' constraints, plan the ideal
meal size and eating time. The Habits Learner: Correct the diet
recommendation in real-time based on how the user follows the
original diet recommendation. For example, if one ate pizza for
dinner instead of a salad this might modify the diet recommendation
for the coming days slightly.
[0082] FIG. 5 illustrates the workflow of by the meal
recommendation portion of the algorithm of the interactive engine,
constructed according to an exemplary embodiment of the present
invention. The workflow shows that physical and medical information
511, work out habits 512, personal goals 513 and eating habits 514
are all input to the diet profiler 520. Eating habits 514 are
provided in the form of the objective function as inputs to both
the diet generator 530 and the meal separator 550 and diet profiler
520 provides inputs in the form of constraints to both diet
generator 530 and meal separator 550. The food database 530 also
provides input to diet generator 530, and from there to meal
separator 550, recommended diet 560, the user 570, the habits
learner 580, each in sequence and then full-cycle back to eating
habits 514.
[0083] The algorithm uses a linear optimization format for each of
a set of days.
[0084] This requires constraints and an objective function.
[0085] There are three types of constraints: [0086] Health
constraints: they guarantee that the diet is healthy enough in
terms of the different food groups and their diversity. [0087]
Examples: [0088] >=2 fruits per day [0089] >=1 serving of
whole grains. [0090] Nutrient constraints: these make sure the diet
satisfies the governmental recommendations on nutrients. [0091]
Example: [0092] >=10 mg iron, for a 30-year male per day [0093]
Cultural constraints: The previous constraints make sure the diet
is healthy. The cultural constraints make sure the diet will make
sense culturally, to avoid getting results that don't make any
sense, like eating 1 kg of sprouts a day which no one will follow .
. . [0094] Examples: [0095] Total amount of bananas per day<=3,
[0096] Total amount of sprouts<=50 grams.
[0097] Thus, the constraints make sure the diet will be healthy and
will make sense culturally/traditionally. The objective function
makes the diet compatible with the eating habits and preferences of
the user. The objective function is computed for each one of the
days and takes into account the previous days.
For example: If there are N food items, the optimization algorithm
turns the problem into a geometry problem involving a shape sitting
in an N+1 dimensional space. More than 3 dimensions is typically
impossible to visualize. However, in FIG. 6 there is an example of
only 2 food items that are possible to visualize. The food items
are brown rice X.sub.1 and lentils X.sub.2. This is not supposed to
be a realistic case, but a case in which to demonstrate the
geometry in 3 dimensional space to develop some intuition for the
overall process. Consider only three constraints, one of each type:
[0098] A health constraint: consumption of at least one serving of
whole grain per day. [0099] A nutrient constraint: total calories
consumption should be between 500 and 1,000 calories a day. [0100]
A cultural constraint: the recommended diet should not contain more
than 4 cups of rice.
[0101] FIG. 6 is a graphic illustration of the diet generator phase
of the algorithm of the interactive engine, constructed according
to an exemplary embodiment of the present invention. x.sub.1=amount
of recommended rice. x.sub.2=amount of recommended lentils. Both
are measured in cups. A food recommendation corresponds to a choice
of x.sub.1 and x.sub.2. Geometrically, a food recommendation
corresponds to picking a point in this two dimensional space.
[0102] The health constraint: the recommended diet must contain at
least one serving of whole grain per day 610. This means that the
chosen point has to be right of the line 610.
[0103] The nutrient constraint: Total calories consumption should
be between 500 and 1,000 calories a day. One has to eat at least
2.31 cups of rice to consume 500 calories. This provides one point
in the plane 621. Similarly, one needs to eat at least 2.17 cups of
lentils to consume 500 calories. This provides a second point in
the plane 622. These 2 points define the line for at least 500
calories 620. One has to eat at least 4.62 cups of rice to consume
1000 calories. This provides one point in the plane, and one needs
to eat at least 4.34 cups of lentils to consume 1000 calories.
Again, this provides a second point in the plane, and these 2 new
points define the line for at least 1000 calories 630.
[0104] The cultural constraint: One would not like to have more
than 4 cups of rice daily 640.
[0105] The result is a Simplex region 650, in which to look for a
recommended diet. Such a diet is designed to be healthy enough, as
it satisfies all the constraints merely by being in the allowed
region. In order to determine the most suitable diet for the user
for that specific day, another dimension is needed. The simplex
algorithm is a popular algorithm for linear programming
solutions.
[0106] The height of the point in 3D space is the objective
function, which represents how much the user likes this specific
diet. Again, each point represents a specific diet, or combination
of foods. If the dishes are all the same for the user he has no
preferences and the graph is flat. The objective of a linear
programming problem will be to maximize or to minimize some
numerical value.
[0107] FIG. 7 is a graphic illustration of the diet generator phase
with a third dimension for the objective function, constructed
according to an exemplary embodiment of the present invention. The
Simplex region of FIG. 6 650 is now seen elevated and curved, with
darker elements representing greater elevation from the original
722 segment of 2D X.sub.1,X.sub.2 plane 730. If the user likes rice
very much, but doesn't like lentils so much, the graph will be
higher as the number of rice cups is higher. If the user likes
lentils very much, the graph will be higher as the number of
lentils cups is higher. In practice, the user likes several dishes,
and the result is an elevation map representing the user's taste in
food.
[0108] The solution is the highest (darkest) point on the graph.
The recommended diet for that day is about 3 cups of rice with
about 1 cup of lentils.
[0109] The algorithm is developed with the following conditions.
Note that there are other important features that the algorithm
takes into account: [0110] One does not recommend 0.87233 cups of
rice, but an integer number of servings. So only solutions that are
multiples of whole servings are considered. [0111] The recommended
diet is based on a database of recipes, so one always gets complete
meal recommendations, and not just single food items. [0112] The
height of each point is chosen stochastically, based on a
probabilistic model. [0113] This means that every time a diet
recommendation is requested, a different diet is offered. Thus, the
algorithm is in fact capable of supplying infinitely many different
diets, each of which is healthy enough and fits the taste of the
specific user. [0114] As for diversity of food, some people like to
eat the same thing every day, while others do not. This is easily
taken into account. When the height of each point is chosen, food
items that were already eaten by the user or recommended for
previous days get a penalty that might lower them back down. This
is based on how much the user likes to diversify that specific food
item. The user can choose a `diverse factor` for each food
item/group using a bar in the actual app. So for example, if rice
was recommended for Monday and the user doesn't like to eat rice
everyday, the objective function will be low on rice for the
following days (Tuesday, etc. . . . ) and the user will get other
dishes than rice on those days.
[0115] The meal separator is a rather simple application of the
first phase, the diet generator. On the meal separator the
algorithm is run on each one of the meals separately, i.e.
breakfast, lunch, etc., over the food items obtained in the first
phase. Each meal has its own set of cultural constraints. For
example, for breakfast there will be a constraint on the food items
that are typically consumed. Cereals are common for breakfast, but
a steak would be forbidden. And in addition, each meal has nutrient
constraints as well, for example that each meal will contain
sufficient calories, roughly 25% of the calories in each main meal,
and 5-10% in each of the snacks. Then an objective function is
computed in a very similar way to the first phase.
[0116] Having described the present invention with regard to
certain specific embodiments thereof, it is to be understood that
the description is not meant as a limitation, since further
modifications will now suggest themselves to those skilled in the
art, and it is intended to cover such modifications as fall within
the scope of the appended claims.
* * * * *