Creating a recommender system for shoe sizing

(Sorry if I have mis-categorized or titled this question.)

Suppose you have shoe size data for a bunch of people across a variety of shoe brands. So, one person might have Nike = 11, Reebok = 10.5, Adidas = 11, Converse = 11.5, and so on. You might define a matrix $M_{ij}$ where $i$ represents the $i$-th individual and $j$ their size in the $j$-th brand.

Then suppose you have a person who knows their Nike size is, say, 9, and wants to know their most likely Adidas size (or maybe they know their size in multiple brands, but not Adidas). What is the best way to predict their Adidas size?

A simple method might be to look at the size difference of each person between Nike and Adidas ($M_{i,j=Nike} - M_{i,j=Adidas}$ for each $i$), and then to take the most common difference and add it to the person's Nike size to get their Adidas size. For example, if most people size up one half size when going from Nike to Adidas, the most likely Adidas size for this person would be 9.5.

But is there a more sophisticated method? For example, maybe there are people who are outliers and have really weird feet, and the relationship of their sizes among all brands does not fit well with most other people. Is there some natural way to weight the data of these people less than that of others, and would you want to do this?

I have a feeling that this is a common problem, for example anything online these days that makes a recommendation based on consumer data.

• It might be a multi-pronged approach depending on the sparsity of the data. If you have "enough" specific matches of people who wear Nike size 9 and Adidas size x, then you might use the average of the specific matches. Then, if there aren't enough, you use a general sizing rule like +0.5. – Jonathan Nov 13 '12 at 20:05

$$\mathbb{E}[ \mbox{Size} | \mbox{Brand}, \mbox{Individual}] = \beta_{0, i} + \beta_{1, b} * \mbox{Brand}$$