I'm using the Huff model for some analysis I'm doing. For those not aware, the Huff model is a probabilistic model for retail trade area analysis.
H_ij
is the probability that a person at location i
will visit a place at location j
A_j
is the attractiveness of location j
D_ij
is the distance the person at location i
is from location j
\alpha
is the attractiveness enhancement parameter
\beta
is the distance decay parameter
I have a dataset comprised of over two million elements. For each element, I know the person's ZIP code as well as the ZIP code they visited. So, "locations" in this context of the Huff model are ZIP codes. I'm using the number of people that visited a ZIP code as the attractiveness of the location (i.e., A_j
).
What I need is a method for estimating the two parameters, \alpha
and \beta
, from data. How can I determine what these parameters should be?
[edit]
After thinking about this, I realized that this is really an optimization problem. I think the approach I'm going to take is using a metaheuristic global optimization algorithm:
- Search will select the
\alpha
and\beta
parameters randomly, according to its rules. - For each entry in the dataset, I select a random number,
r
. I compute the Huff probability,H
, that the person in the entry visited the ZIP code where I know they visited. Ifr < H
, then we got it right. - So, the "fitness" for a particular set of parameters,
\alpha
and\beta
, is the number of cases we get right. This is therefore a maximization problem. - We run this lots of times (because each search is stochastic) with reasonable ranges for
\alpha
and\beta
(something like0 < \alpha, \beta <= 20
), and the winning\alpha
and\beta
are the ones that produce the maximal fitness.
Does this seem like a reasonable solution?