FairFRESH: A Neuro-Symbolic Framework for Fair and Explainable Household Food Recommendation
Organizations: Department of Artificial Intelligence and Machine Learning, BNM Institute of Technology
Abstract
Recommender systems typically serve one user at a time. However, in households, members share a finite pantry and follow different dietary rules, making independent recommendations prone to resource conflicts and dietary violations. We formulate household food recommendation as constrained fair division and present FairFRESH, a neuro-symbolic framework that learns per-member utilities, allocates foods under explicit welfare objectives, enforces dietary rules through a deterministic filter, and explains recommendations using Shapley and Banzhaf attributions. Theoretically, we show that no finite penalty guarantees compliance near a dietary-rule threshold, establish approximation guarantees for greedy allocation under utilitarian and smoothed Nash objectives in the stock-free model before filtering, and characterize the scale invariance of Nash welfare. We also use the minimax theorem to analyze rotating shared meals. On NHANES-derived data, the learned utility model achieves Recall@20 of 0.293, outperforming five learned recommenders (at most 0.244) but not a previous-day repetition heuristic (0.321). On held-out four-person households, Nash allocation reduces Gini disparity by 42% relative to conflict resolution while improving Recall@20 from 0.180 to 0.197. It comes within 2% of an upper bound on the smoothed Nash optimum, and rescaling one member's utilities changes at most 1.5% of assignments. All recommendations satisfy the encoded dietary rules, while attribution scores correlate with utility loss upon component removal (r = 0.76). In simulation, shared meals reduce pantry use by about one-third, and weekly rotation increases the worst-off member's utility by 38% over the best fixed meal.
Figures & tables
| Method | Recall@20 | NDCG@20 |
|---|---|---|
| Popularity | 0.235 [0.221, 0.248] | 0.253 [0.241, 0.265] |
| Repeat-D1 | 0.321 [0.304, 0.339] | 0.376 [0.358, 0.393] |
| BPRMF | 0.220 [0.206, 0.234] | 0.234 [0.220, 0.249] |
| NeuMF | 0.111 [0.105, 0.117] | 0.141 [0.133, 0.149] |
| LightGCN | 0.244 [0.231, 0.258] | 0.262 [0.250, 0.274] |
| GRU4Rec | 0.207 [0.195, 0.220] | 0.234 [0.220, 0.247] |
| Strategy | Recall@20 | Min Util. | Gini | NSW |
|---|---|---|---|---|
| A) Independent | 0.266 [0.250, 0.282] | 9.79 [9.36, 10.21] | 0.109 [0.100, 0.118] | 12.76 [12.42, 13.09] |
| B) Conflict resolution | 0.180 [0.165, 0.194] | 5.35 [5.00, 5.70] | 0.192 [0.180, 0.205] | 8.54 [8.25, 8.81] |
| C) Utilitarian | 0.194 [0.180, 0.209] | 7.64 [7.31, 7.96] | 0.146 [0.136, 0.155] | 10.72 [10.45, 10.99] |
| D) Max-Min | 0.188 [0.173, 0.202] | 8.75 [8.41, 9.08] | 0.088 [0.079, 0.096] | 10.56 [10.27, 10.87] |
| E) Nash | 0.197 [0.182, 0.211] | 8.56 [8.23, 8.89] | 0.112 [0.103, 0.121] | 10.98 [10.70, 11.27] |
| Model | Recall@20 | CSR | Gini | NSW |
|---|---|---|---|---|
| Full FairFRESH | 0.197 | 1.000 | 0.112 | 10.98 |
| w/o Pantry (availability) Encoder | 0.064 | 1.000 | 0.160 | 5.58 |
| w/o Medical Constraint | 0.194 | 0.856 | 0.124 | 9.23 |
| w/o Fairness Optimizer (utilitarian) | 0.194 | 1.000 | 0.146 | 10.72 |
| w/o RAG Constraint Encoder | 0.200 | 1.000 | 0.087 | 10.06 |
| Strategy | Mean Util. | Min Util. | Gini | Full Meal | Pantry Used |
|---|---|---|---|---|---|
| Indian recipes, simulated utilities | |||||
| Unstructured | 5.34 | 4.92 | 0.029 | 28.6% | 4.59% |
| Structured individual | 5.26 | 4.86 | 0.030 | 100% | 5.12% |
| Structured shared | 5.06 | 4.74 | 0.024 | 100% | 3.47% |
| NHANES foods, learned utilities | |||||
| Unstructured | 5.58 | 5.10 | 0.029 | 0.6% | 10.74% |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Utilitarian: greedy/opt. | Max-min: greedy/opt. | Nash: /upper bound | |
|---|---|---|---|
| 2 | 0.986 [0.982, 0.990] | 0.978 [0.973, 0.983] | 0.996 [0.995, 0.997] |
| 3 | 0.975 [0.971, 0.980] | 0.957 [0.950, 0.964] | 0.990 [0.988, 0.992] |
| 4 | 0.976 [0.972, 0.980] | 0.946 [0.937, 0.955] | 0.987 [0.985, 0.989] |
| Strategy | Recall@20 | NDCG@20 | PUR | Min Util. | Gini | NSW | Items | |
|---|---|---|---|---|---|---|---|---|
| 2 | A) Independent | 0.292 | 0.292 | 0.187 | 11.37 | 0.072 | 12.96 | 20.0 |
| 2 | B) Conflict resolution | 0.252 | 0.263 | 0.142 | 8.92 | 0.105 | 10.82 | 15.1 |
| 2 | C) Utilitarian | 0.264 | 0.270 | 0.184 | 10.34 | 0.086 | 12.16 | 20.0 |
| 2 | D) Max-Min | 0.260 | 0.268 | 0.185 | 10.84 | 0.061 | 12.13 | 20.0 |
| 2 | E) Nash | 0.267 | 0.273 | 0.185 | 10.75 | 0.072 | 12.30 | 20.0 |
| 3 | A) Independent | 0.283 | 0.291 | 0.279 | 10.36 | 0.096 | 12.87 | 20.0 |
| Member | Single-serving foods | Total | Shared dishes (utility) + individual foods | Total |
| 1 (none) | Baby oatmeal cereal, sweetened tea, fruit yogurt, coffee cake, barbecue chicken, corn puffs | 5.84 | Bread 0.20, beans 0.14; oatmeal cereal, tea, fruit yogurt, coffee cake | 4.28 |
| 2 (none) | Froot Loops, yeast doughnut, mozzarella, hamburger, cola, chocolate sandwich cookie | 5.57 | Bread 0.23, beans 0.16; Froot Loops, doughnut, mozzarella, hamburger | 4.19 |
| 3 (none) | Low-fat fruit yogurt, whole milk, salted pretzels, cheese pizza, French fries, banana | 4.74 | Bread 0.22, beans 0.16; yogurt, whole milk, pretzels, cheese pizza | 4.09 |
| 4 (hypertension) | Bacon, fried eggs, French dressing, tap water, toasted wheat bread, heavy cream | 5.85 | Bread 0.23, beans 0.17; bacon, fried eggs, French dressing, tap water | 4.33 |
| Complete meals: 0 of 4 (single-serving) vs. 4 of 4 (shared). Pantry used: 14.35% vs. 10.71%. | ||||
Fair Resource Allocation
Fair resource allocation studies how to distribute scarce goods, services, and computing capacity equitably while accounting for efficiency and constraints.
See all 57 papers