Need pointers for problem formulation
Yuval Filmus already pointed you towards recommender systems, which in your case is the right way to go.

However, since you asked for a graph formulation and tagged it with graph-theory, we will go out of our way to put this into such a setting.

Definitions

A graph is called bipartite if its vertices can be partitioned into two sets, say $U$ and $V$ in such a way that all edges are between $U$ and $V$.  (Coincidentally a graph is bipartite if and only if it is two-colorable.)



A bipartite graph is called complete if every edge between $U$ and $V$ are present, i.e., it is isomorphic to $K_{n,m}$ for some $n,m \in \mathbb{N}$.

A bipartite graph is called a bicluster if its connected components induce complete bipartite graphs.

The problem

An editing problem is a graph problem where we want to add or delete (as few as possible) edges to make a graph have a certain property.  So let us define Bicluster Editing as the following problem:

Given a bipartite graph $G = (V, U, E)$ and a natural number $k \in \mathbb N$, does there exists a set of edges $E'$ such that $G' = (U, V, E')$ is a bicluster and $|E \triangle E'| \leq k$ (where $\triangle$ is the symmetric difference)?

Now, what does this mean?  If such a set exists for a small $k$, you have partitioned your users and foods into equivalence classes such that in every equivalence class, all the users like the same foods and all the foods are liked by the same users, changing the graph very little.

Is it practical? No.  But at least it's NP-complete.