can I "index" a function? I have a function with two variables $f(x, y) = \frac{(x-y)^2}{y*(1-y)},$ where $x, y\in \Bbb R$, $0<x<1$, $0<y<1$.
And I have a bunch of data points $D =((x_1, y_1),(x_2, y_2),...(x_n, y_n), )$. 
My goal is to find  $(x^*, y^*) = \arg\max_{(x_i,y_i)\in D}f(x_i,y_i)$ 
Since my dataset is really big, I'm wondering whether there is any smart way to find the maximum without evaluating every data point.
What can I do except for run a convex hull on my data $D$, and only select from the boundary points?
 A: Your function on $(0,1)^2$ looks something like this: 

Just by looking at your function we can see for $x = 0$ and $y \rightarrow 1^-$  we have $f(x,y)\rightarrow \infty$ and further that for $x=1$ and $y\rightarrow 0^+$ we have $f(x,y) \rightarrow \infty$. These observations are also confirmed by the above plot.
This indicates that for some given data $D\subset (0,1)^2$ the larger values of $f(x_i,y_i)$ would be the $(x_i,y_i)$ that are closer to the coordinates $(0,1)$ and $(1,0)$. Thus a simple improvement would be to only evaluate $f(x,y)$ on a subset of $D$ that are close to these coordinates. An easily implementable example would be is to evaluate $f$ on the subsets $D \cap [0,a]\times [1-a,1]$ and $D \cap [1-b,1]\times [0,b]$ for some suitably small $a,b$ such that these intersections are non-empty. If you have loads of data and if it is uniformly distributed over $(0,1)^2$ then $a$ and $b$ could be taken very small.
There are cleverer things you could do to reduce the subset you compute $f$ over, however there is the balance between the computational investment in finding better subsets of $D$ and just evaluating $f$ over a good enough subset.
